prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Startpage engine doesn't support russian queries
  
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `searx/engines/startpage.py`
  Content:
  ```
  1 #  Startpage (Web)
  2 #
  3 # @website     https://startpage.com
  4 # @provide-api no (nothing found)
  5 #
  6 # @using-api   no
  7 # @results     HTML
  8 # @stable      no (HTML can change)
  9 # @parse       url, title, content
  10 #
  11 # @todo        paging
  12 
  13 from urllib import urlencode
  14 from lxml import html
  15 from cgi import escape
  16 import re
  17 
  18 # engine dependent config
  19 categories = ['general']
  20 # there is a mechanism to block "bot" search
  21 # (probably the parameter qid), require
  22 # storing of qid's between mulitble search-calls
  23 
  24 # paging = False
  25 language_support = True
  26 
  27 # search-url
  28 base_url = 'https://startpage.com/'
  29 search_url = base_url + 'do/search'
  30 
  31 # specific xpath variables
  32 # ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
  33 # not ads: div[@class="result"] are the direct childs of div[@id="results"]
  34 results_xpath = '//div[@class="result"]'
  35 link_xpath = './/h3/a'
  36 
  37 
  38 # do search-request
  39 def request(query, params):
  40     offset = (params['pageno'] - 1) * 10
  41     query = urlencode({'q': query})[2:]
  42 
  43     params['url'] = search_url
  44     params['method'] = 'POST'
  45     params['data'] = {'query': query,
  46                       'startat': offset}
  47 
  48     # set language if specified
  49     if params['language'] != 'all':
  50         params['data']['with_language'] = ('lang_' +
  51                                            params['language'].split('_')[0])
  52 
  53     return params
  54 
  55 
  56 # get response from search-request
  57 def response(resp):
  58     results = []
  59 
  60     dom = html.fromstring(resp.content)
  61 
  62     # parse results
  63     for result in dom.xpath(results_xpath):
  64         links = result.xpath(link_xpath)
  65         if not links:
  66             continue
  67         link = links[0]
  68         url = link.attrib.get('href')
  69         try:
  70             title = escape(link.text_content())
  71         except UnicodeDecodeError:
  72             continue
  73 
  74         # block google-ad url's
  75         if re.match("^http(s|)://www.google.[a-z]+/aclk.*$", url):
  76             continue
  77 
  78         if result.xpath('./p[@class="desc"]'):
  79             content = escape(result.xpath('./p[@class="desc"]')[0]
  80                              .text_content())
  81         else:
  82             content = ''
  83 
  84         # append result
  85         results.append({'url': url,
  86                         'title': title,
  87                         'content': content})
  88 
  89     # return results
  90     return results
  91
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py
  --- a/searx/engines/startpage.py
  +++ b/searx/engines/startpage.py
  @@ -10,7 +10,6 @@
   #
   # @todo        paging
   
  -from urllib import urlencode
   from lxml import html
   from cgi import escape
   import re
  @@ -38,7 +37,6 @@
   # do search-request
   def request(query, params):
       offset = (params['pageno'] - 1) * 10
  -    query = urlencode({'q': query})[2:]
   
       params['url'] = search_url
       params['method'] = 'POST'
  
verification_info: {"golden_diff": "diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py\n--- a/searx/engines/startpage.py\n+++ b/searx/engines/startpage.py\n@@ -10,7 +10,6 @@\n #\n # @todo        paging\n \n-from urllib import urlencode\n from lxml import html\n from cgi import escape\n import re\n@@ -38,7 +37,6 @@\n # do search-request\n def request(query, params):\n     offset = (params['pageno'] - 1) * 10\n-    query = urlencode({'q': query})[2:]\n \n     params['url'] = search_url\n     params['method'] = 'POST'\n", "issue": "Startpage engine doesn't support russian queries\n\r\n\n", "before_files": [{"content": "#  Startpage (Web)\n#\n# @website     https://startpage.com\n# @provide-api no (nothing found)\n#\n# @using-api   no\n# @results     HTML\n# @stable      no (HTML can change)\n# @parse       url, title, content\n#\n# @todo        paging\n\nfrom urllib import urlencode\nfrom lxml import html\nfrom cgi import escape\nimport re\n\n# engine dependent config\ncategories = ['general']\n# there is a mechanism to block \"bot\" search\n# (probably the parameter qid), require\n# storing of qid's between mulitble search-calls\n\n# paging = False\nlanguage_support = True\n\n# search-url\nbase_url = 'https://startpage.com/'\nsearch_url = base_url + 'do/search'\n\n# specific xpath variables\n# ads xpath //div[@id=\"results\"]/div[@id=\"sponsored\"]//div[@class=\"result\"]\n# not ads: div[@class=\"result\"] are the direct childs of div[@id=\"results\"]\nresults_xpath = '//div[@class=\"result\"]'\nlink_xpath = './/h3/a'\n\n\n# do search-request\ndef request(query, params):\n    offset = (params['pageno'] - 1) * 10\n    query = urlencode({'q': query})[2:]\n\n    params['url'] = search_url\n    params['method'] = 'POST'\n    params['data'] = {'query': query,\n                      'startat': offset}\n\n    # set language if specified\n    if params['language'] != 'all':\n        params['data']['with_language'] = ('lang_' +\n                                           params['language'].split('_')[0])\n\n    return params\n\n\n# get response from search-request\ndef response(resp):\n    results = []\n\n    dom = html.fromstring(resp.content)\n\n    # parse results\n    for result in dom.xpath(results_xpath):\n        links = result.xpath(link_xpath)\n        if not links:\n            continue\n        link = links[0]\n        url = link.attrib.get('href')\n        try:\n            title = escape(link.text_content())\n        except UnicodeDecodeError:\n            continue\n\n        # block google-ad url's\n        if re.match(\"^http(s|)://www.google.[a-z]+/aclk.*$\", url):\n            continue\n\n        if result.xpath('./p[@class=\"desc\"]'):\n            content = escape(result.xpath('./p[@class=\"desc\"]')[0]\n                             .text_content())\n        else:\n            content = ''\n\n        # append result\n        results.append({'url': url,\n                        'title': title,\n                        'content': content})\n\n    # return results\n    return results\n", "path": "searx/engines/startpage.py"}], "after_files": [{"content": "#  Startpage (Web)\n#\n# @website     https://startpage.com\n# @provide-api no (nothing found)\n#\n# @using-api   no\n# @results     HTML\n# @stable      no (HTML can change)\n# @parse       url, title, content\n#\n# @todo        paging\n\nfrom lxml import html\nfrom cgi import escape\nimport re\n\n# engine dependent config\ncategories = ['general']\n# there is a mechanism to block \"bot\" search\n# (probably the parameter qid), require\n# storing of qid's between mulitble search-calls\n\n# paging = False\nlanguage_support = True\n\n# search-url\nbase_url = 'https://startpage.com/'\nsearch_url = base_url + 'do/search'\n\n# specific xpath variables\n# ads xpath //div[@id=\"results\"]/div[@id=\"sponsored\"]//div[@class=\"result\"]\n# not ads: div[@class=\"result\"] are the direct childs of div[@id=\"results\"]\nresults_xpath = '//div[@class=\"result\"]'\nlink_xpath = './/h3/a'\n\n\n# do search-request\ndef request(query, params):\n    offset = (params['pageno'] - 1) * 10\n\n    params['url'] = search_url\n    params['method'] = 'POST'\n    params['data'] = {'query': query,\n                      'startat': offset}\n\n    # set language if specified\n    if params['language'] != 'all':\n        params['data']['with_language'] = ('lang_' +\n                                           params['language'].split('_')[0])\n\n    return params\n\n\n# get response from search-request\ndef response(resp):\n    results = []\n\n    dom = html.fromstring(resp.content)\n\n    # parse results\n    for result in dom.xpath(results_xpath):\n        links = result.xpath(link_xpath)\n        if not links:\n            continue\n        link = links[0]\n        url = link.attrib.get('href')\n        try:\n            title = escape(link.text_content())\n        except UnicodeDecodeError:\n            continue\n\n        # block google-ad url's\n        if re.match(\"^http(s|)://www.google.[a-z]+/aclk.*$\", url):\n            continue\n\n        if result.xpath('./p[@class=\"desc\"]'):\n            content = escape(result.xpath('./p[@class=\"desc\"]')[0]\n                             .text_content())\n        else:\n            content = ''\n\n        # append result\n        results.append({'url': url,\n                        'title': title,\n                        'content': content})\n\n    # return results\n    return results\n", "path": "searx/engines/startpage.py"}]}