prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Improve security contact webpage
  We need to improve our documentation about a user who found a security issue could contact us to report this vulnerability in a confidential way.
  
  This page should be clear regarding how to report the issue, how submit a patch (wihtout making it public) and what to do receive feedback / discuss about the solution.
  
  There is a page already but it's too poor: https://readthedocs.org/security/
  
  </issue>
  <code>
  [start of readthedocs/urls.py]
  1 # pylint: disable=missing-docstring
  2 from __future__ import absolute_import
  3 
  4 from functools import reduce
  5 from operator import add
  6 
  7 from django.conf.urls import url, include
  8 from django.contrib import admin
  9 from django.conf import settings
  10 from django.conf.urls.static import static
  11 from django.views.generic.base import TemplateView
  12 from tastypie.api import Api
  13 
  14 from readthedocs.api.base import (ProjectResource, UserResource,
  15                                   VersionResource, FileResource)
  16 from readthedocs.core.urls import docs_urls, core_urls, deprecated_urls
  17 from readthedocs.core.views import (HomepageView, SupportView,
  18                                     server_error_404, server_error_500)
  19 from readthedocs.search import views as search_views
  20 
  21 
  22 v1_api = Api(api_name='v1')
  23 v1_api.register(UserResource())
  24 v1_api.register(ProjectResource())
  25 v1_api.register(VersionResource())
  26 v1_api.register(FileResource())
  27 
  28 admin.autodiscover()
  29 
  30 handler404 = server_error_404
  31 handler500 = server_error_500
  32 
  33 basic_urls = [
  34     url(r'^$', HomepageView.as_view(), name='homepage'),
  35     url(r'^support/', SupportView.as_view(), name='support'),
  36     url(r'^security/', TemplateView.as_view(template_name='security.html')),
  37 ]
  38 
  39 rtd_urls = [
  40     url(r'^bookmarks/', include('readthedocs.bookmarks.urls')),
  41     url(r'^search/$', search_views.elastic_search, name='search'),
  42     url(r'^dashboard/', include('readthedocs.projects.urls.private')),
  43     url(r'^profiles/', include('readthedocs.profiles.urls.public')),
  44     url(r'^accounts/', include('readthedocs.profiles.urls.private')),
  45     url(r'^accounts/', include('allauth.urls')),
  46     url(r'^notifications/', include('readthedocs.notifications.urls')),
  47     url(r'^accounts/gold/', include('readthedocs.gold.urls')),
  48     # For redirects
  49     url(r'^builds/', include('readthedocs.builds.urls')),
  50     # For testing the 404's with DEBUG on.
  51     url(r'^404/$', handler404),
  52     # For testing the 500's with DEBUG on.
  53     url(r'^500/$', handler500),
  54 ]
  55 
  56 project_urls = [
  57     url(r'^projects/', include('readthedocs.projects.urls.public')),
  58 ]
  59 
  60 api_urls = [
  61     url(r'^api/', include(v1_api.urls)),
  62     url(r'^api/v2/', include('readthedocs.restapi.urls')),
  63     url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
  64     url(r'^websupport/', include('readthedocs.comments.urls')),
  65 ]
  66 
  67 i18n_urls = [
  68     url(r'^i18n/', include('django.conf.urls.i18n')),
  69 ]
  70 
  71 admin_urls = [
  72     url(r'^admin/', include(admin.site.urls)),
  73 ]
  74 
  75 debug_urls = add(
  76     [
  77         url('style-catalog/$',
  78             TemplateView.as_view(template_name='style_catalog.html')),
  79     ],
  80     static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  81 )
  82 
  83 # Export URLs
  84 groups = [basic_urls, rtd_urls, project_urls, api_urls, core_urls, i18n_urls,
  85           deprecated_urls]
  86 
  87 if settings.USE_PROMOS:
  88     # Include donation URL's
  89     groups.append([
  90         url(r'^sustainability/', include('readthedocsext.donate.urls')),
  91     ])
  92 
  93 if 'readthedocsext.embed' in settings.INSTALLED_APPS:
  94     api_urls.insert(
  95         0,
  96         url(r'^api/v1/embed/', include('readthedocsext.embed.urls'))
  97     )
  98 
  99 if not getattr(settings, 'USE_SUBDOMAIN', False) or settings.DEBUG:
  100     groups.insert(0, docs_urls)
  101 if getattr(settings, 'ALLOW_ADMIN', True):
  102     groups.append(admin_urls)
  103 if getattr(settings, 'DEBUG', False):
  104     groups.append(debug_urls)
  105 
  106 urlpatterns = reduce(add, groups)
  107
  [end of readthedocs/urls.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/readthedocs/urls.py b/readthedocs/urls.py
  --- a/readthedocs/urls.py
  +++ b/readthedocs/urls.py
  @@ -34,6 +34,8 @@
       url(r'^$', HomepageView.as_view(), name='homepage'),
       url(r'^support/', SupportView.as_view(), name='support'),
       url(r'^security/', TemplateView.as_view(template_name='security.html')),
  +    url(r'^.well-known/security.txt',
  +        TemplateView.as_view(template_name='security.txt', content_type='text/plain')),
   ]
   
   rtd_urls = [
  
verification_info: {"golden_diff": "diff --git a/readthedocs/urls.py b/readthedocs/urls.py\n--- a/readthedocs/urls.py\n+++ b/readthedocs/urls.py\n@@ -34,6 +34,8 @@\n     url(r'^$', HomepageView.as_view(), name='homepage'),\n     url(r'^support/', SupportView.as_view(), name='support'),\n     url(r'^security/', TemplateView.as_view(template_name='security.html')),\n+    url(r'^.well-known/security.txt',\n+        TemplateView.as_view(template_name='security.txt', content_type='text/plain')),\n ]\n \n rtd_urls = [\n", "issue": "Improve security contact webpage\nWe need to improve our documentation about a user who found a security issue could contact us to report this vulnerability in a confidential way.\r\n\r\nThis page should be clear regarding how to report the issue, how submit a patch (wihtout making it public) and what to do receive feedback / discuss about the solution.\r\n\r\nThere is a page already but it's too poor: https://readthedocs.org/security/\n", "before_files": [{"content": "# pylint: disable=missing-docstring\nfrom __future__ import absolute_import\n\nfrom functools import reduce\nfrom operator import add\n\nfrom django.conf.urls import url, include\nfrom django.contrib import admin\nfrom django.conf import settings\nfrom django.conf.urls.static import static\nfrom django.views.generic.base import TemplateView\nfrom tastypie.api import Api\n\nfrom readthedocs.api.base import (ProjectResource, UserResource,\n                                  VersionResource, FileResource)\nfrom readthedocs.core.urls import docs_urls, core_urls, deprecated_urls\nfrom readthedocs.core.views import (HomepageView, SupportView,\n                                    server_error_404, server_error_500)\nfrom readthedocs.search import views as search_views\n\n\nv1_api = Api(api_name='v1')\nv1_api.register(UserResource())\nv1_api.register(ProjectResource())\nv1_api.register(VersionResource())\nv1_api.register(FileResource())\n\nadmin.autodiscover()\n\nhandler404 = server_error_404\nhandler500 = server_error_500\n\nbasic_urls = [\n    url(r'^$', HomepageView.as_view(), name='homepage'),\n    url(r'^support/', SupportView.as_view(), name='support'),\n    url(r'^security/', TemplateView.as_view(template_name='security.html')),\n]\n\nrtd_urls = [\n    url(r'^bookmarks/', include('readthedocs.bookmarks.urls')),\n    url(r'^search/$', search_views.elastic_search, name='search'),\n    url(r'^dashboard/', include('readthedocs.projects.urls.private')),\n    url(r'^profiles/', include('readthedocs.profiles.urls.public')),\n    url(r'^accounts/', include('readthedocs.profiles.urls.private')),\n    url(r'^accounts/', include('allauth.urls')),\n    url(r'^notifications/', include('readthedocs.notifications.urls')),\n    url(r'^accounts/gold/', include('readthedocs.gold.urls')),\n    # For redirects\n    url(r'^builds/', include('readthedocs.builds.urls')),\n    # For testing the 404's with DEBUG on.\n    url(r'^404/$', handler404),\n    # For testing the 500's with DEBUG on.\n    url(r'^500/$', handler500),\n]\n\nproject_urls = [\n    url(r'^projects/', include('readthedocs.projects.urls.public')),\n]\n\napi_urls = [\n    url(r'^api/', include(v1_api.urls)),\n    url(r'^api/v2/', include('readthedocs.restapi.urls')),\n    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),\n    url(r'^websupport/', include('readthedocs.comments.urls')),\n]\n\ni18n_urls = [\n    url(r'^i18n/', include('django.conf.urls.i18n')),\n]\n\nadmin_urls = [\n    url(r'^admin/', include(admin.site.urls)),\n]\n\ndebug_urls = add(\n    [\n        url('style-catalog/$',\n            TemplateView.as_view(template_name='style_catalog.html')),\n    ],\n    static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n)\n\n# Export URLs\ngroups = [basic_urls, rtd_urls, project_urls, api_urls, core_urls, i18n_urls,\n          deprecated_urls]\n\nif settings.USE_PROMOS:\n    # Include donation URL's\n    groups.append([\n        url(r'^sustainability/', include('readthedocsext.donate.urls')),\n    ])\n\nif 'readthedocsext.embed' in settings.INSTALLED_APPS:\n    api_urls.insert(\n        0,\n        url(r'^api/v1/embed/', include('readthedocsext.embed.urls'))\n    )\n\nif not getattr(settings, 'USE_SUBDOMAIN', False) or settings.DEBUG:\n    groups.insert(0, docs_urls)\nif getattr(settings, 'ALLOW_ADMIN', True):\n    groups.append(admin_urls)\nif getattr(settings, 'DEBUG', False):\n    groups.append(debug_urls)\n\nurlpatterns = reduce(add, groups)\n", "path": "readthedocs/urls.py"}]}