We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
graph --table=file.html does not show outdated packages
They were previously shown in colors. I guess adding a column "outdated" will resolve this issue.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `conans/assets/templates/search_table_html.py`
Content:
```
1 
2 content = """
3 <!DOCTYPE html>
4 <html lang="en">
5     <head>
6         <title>Conan | {{ search.reference }}</title>
7         <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
8         <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap.min.css"/>
9         <style>
10             tr td {
11                 white-space:nowrap;
12             }
13         </style>
14     </head>
15     <body>
16         <div class="container-fluid">
17         <h1>{{ search.reference }}</h1>
18         <div class="info">
19             <p>
20                 Depending on your package_id_mode, any combination of settings, options and requirements
21                 can give you a different packageID. Take into account that your configuration might be
22                 different from the one used to generate the packages.
23             </p>
24         </div>
25 
26         <table id="results" class="table table-striped table-bordered" style="width:100%">
27             <thead>
28                 {%- set headers = results.get_headers(keys=['remote', 'package_id']) %}
29                 {%- set headers2rows = headers.row(n_rows=2) %}
30                 <tr>
31                     {%- for category, subheaders in headers2rows %}
32                         <th class="text-center" rowspan="{% if subheaders|length == 1 and not subheaders[0] %}2{% else %}1{% endif %}" colspan="{{ subheaders|length }}">
33                             {{ category }}
34                         </th>
35                     {%- endfor %}
36                 </tr>
37                 <tr>
38                     {%- for category, subheaders in headers2rows %}
39                         {%- if subheaders|length != 1 or subheaders[0] != '' %}
40                             {%- for subheader in subheaders %}
41                                 <th>{{ subheader|default(category, true) }}</th>
42                             {%- endfor %}
43                         {%- endif %}
44                     {%- endfor %}
45                 </tr>
46             </thead>
47             <tbody>
48                 {%- for package in results.packages() %}
49                     <tr>
50                         {%- for item in package.row(headers) %}
51                             <td>{{ item if item != None else ''}}</td>
52                         {%- endfor %}
53                     </tr>
54                 {%- endfor %}
55             </tbody>
56             <tfoot>
57                 <tr>
58                     {%- for header in headers.row(n_rows=1) %}
59                     <th>{{ header }}</th>
60                     {%- endfor %}
61                 </tr>
62             </tfoot>
63         </table>
64 
65         <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
66         <script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.20/datatables.min.js"></script>
67         <script type="text/javascript" src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap.min.js"></script>
68         <script>
69             $(document).ready(function() {
70                 // Setup - add a text input to each footer cell
71                 $('#results tfoot th').each( function () {
72                     var title = $(this).text();
73                     $(this).html( '<input type="text" class="form-control filter-input" placeholder="Filter '+title+'" style="width:100%"/>' );
74                 });
75 
76                 var table = $('#results').DataTable( {
77                     "dom": "lrtip",
78                     "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
79                     "pageLength": 10,
80                     "columnDefs": [
81                         { className: "cell_border_right", "targets": [ {{ headers.keys|length + headers.settings|length -1 }}, {{ headers.keys|length + headers.settings|length + headers.options|length -1 }}  ] },
82                         { className: "cell_border_right monospaced", "targets": [{{ headers.keys|length -1 }}, ]}
83                     ]
84                 });
85 
86                 // Apply the search
87                 table.columns().every( function () {
88                     var that = this;
89 
90                     $( 'input', this.footer() ).on( 'keyup change clear', function () {
91                         if ( that.search() !== this.value ) {
92                             that
93                                 .search( this.value )
94                                 .draw();
95                         }
96                     } );
97                 } );
98             });
99         </script>
100     </div>
101     </body>
102 </html>
103 """
104
```
--- 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()

```

diff --git a/conans/assets/templates/search_table_html.py b/conans/assets/templates/search_table_html.py
--- a/conans/assets/templates/search_table_html.py
+++ b/conans/assets/templates/search_table_html.py
@@ -25,7 +25,7 @@
 
         <table id="results" class="table table-striped table-bordered" style="width:100%">
             <thead>
-                {%- set headers = results.get_headers(keys=['remote', 'package_id']) %}
+                {%- set headers = results.get_headers(keys=['remote', 'package_id', 'outdated']) %}
                 {%- set headers2rows = headers.row(n_rows=2) %}
                 <tr>
                     {%- for category, subheaders in headers2rows %}

{"golden_diff": "diff --git a/conans/assets/templates/search_table_html.py b/conans/assets/templates/search_table_html.py\n--- a/conans/assets/templates/search_table_html.py\n+++ b/conans/assets/templates/search_table_html.py\n@@ -25,7 +25,7 @@\n \n         <table id=\"results\" class=\"table table-striped table-bordered\" style=\"width:100%\">\n             <thead>\n-                {%- set headers = results.get_headers(keys=['remote', 'package_id']) %}\n+                {%- set headers = results.get_headers(keys=['remote', 'package_id', 'outdated']) %}\n                 {%- set headers2rows = headers.row(n_rows=2) %}\n                 <tr>\n                     {%- for category, subheaders in headers2rows %}\n", "issue": "graph --table=file.html does not show outdated packages\nThey were previously shown in colors. I guess adding a column \"outdated\" will resolve this issue.\n", "before_files": [{"content": "\ncontent = \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>Conan | {{ search.reference }}</title>\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\"/>\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap.min.css\"/>\n        <style>\n            tr td {\n                white-space:nowrap;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container-fluid\">\n        <h1>{{ search.reference }}</h1>\n        <div class=\"info\">\n            <p>\n                Depending on your package_id_mode, any combination of settings, options and requirements\n                can give you a different packageID. Take into account that your configuration might be\n                different from the one used to generate the packages.\n            </p>\n        </div>\n\n        <table id=\"results\" class=\"table table-striped table-bordered\" style=\"width:100%\">\n            <thead>\n                {%- set headers = results.get_headers(keys=['remote', 'package_id']) %}\n                {%- set headers2rows = headers.row(n_rows=2) %}\n                <tr>\n                    {%- for category, subheaders in headers2rows %}\n                        <th class=\"text-center\" rowspan=\"{% if subheaders|length == 1 and not subheaders[0] %}2{% else %}1{% endif %}\" colspan=\"{{ subheaders|length }}\">\n                            {{ category }}\n                        </th>\n                    {%- endfor %}\n                </tr>\n                <tr>\n                    {%- for category, subheaders in headers2rows %}\n                        {%- if subheaders|length != 1 or subheaders[0] != '' %}\n                            {%- for subheader in subheaders %}\n                                <th>{{ subheader|default(category, true) }}</th>\n                            {%- endfor %}\n                        {%- endif %}\n                    {%- endfor %}\n                </tr>\n            </thead>\n            <tbody>\n                {%- for package in results.packages() %}\n                    <tr>\n                        {%- for item in package.row(headers) %}\n                            <td>{{ item if item != None else ''}}</td>\n                        {%- endfor %}\n                    </tr>\n                {%- endfor %}\n            </tbody>\n            <tfoot>\n                <tr>\n                    {%- for header in headers.row(n_rows=1) %}\n                    <th>{{ header }}</th>\n                    {%- endfor %}\n                </tr>\n            </tfoot>\n        </table>\n\n        <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-3.3.1.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdn.datatables.net/v/dt/dt-1.10.20/datatables.min.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap.min.js\"></script>\n        <script>\n            $(document).ready(function() {\n                // Setup - add a text input to each footer cell\n                $('#results tfoot th').each( function () {\n                    var title = $(this).text();\n                    $(this).html( '<input type=\"text\" class=\"form-control filter-input\" placeholder=\"Filter '+title+'\" style=\"width:100%\"/>' );\n                });\n\n                var table = $('#results').DataTable( {\n                    \"dom\": \"lrtip\",\n                    \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]],\n                    \"pageLength\": 10,\n                    \"columnDefs\": [\n                        { className: \"cell_border_right\", \"targets\": [ {{ headers.keys|length + headers.settings|length -1 }}, {{ headers.keys|length + headers.settings|length + headers.options|length -1 }}  ] },\n                        { className: \"cell_border_right monospaced\", \"targets\": [{{ headers.keys|length -1 }}, ]}\n                    ]\n                });\n\n                // Apply the search\n                table.columns().every( function () {\n                    var that = this;\n\n                    $( 'input', this.footer() ).on( 'keyup change clear', function () {\n                        if ( that.search() !== this.value ) {\n                            that\n                                .search( this.value )\n                                .draw();\n                        }\n                    } );\n                } );\n            });\n        </script>\n    </div>\n    </body>\n</html>\n\"\"\"\n", "path": "conans/assets/templates/search_table_html.py"}], "after_files": [{"content": "\ncontent = \"\"\"\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <title>Conan | {{ search.reference }}</title>\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\"/>\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap.min.css\"/>\n        <style>\n            tr td {\n                white-space:nowrap;\n            }\n        </style>\n    </head>\n    <body>\n        <div class=\"container-fluid\">\n        <h1>{{ search.reference }}</h1>\n        <div class=\"info\">\n            <p>\n                Depending on your package_id_mode, any combination of settings, options and requirements\n                can give you a different packageID. Take into account that your configuration might be\n                different from the one used to generate the packages.\n            </p>\n        </div>\n\n        <table id=\"results\" class=\"table table-striped table-bordered\" style=\"width:100%\">\n            <thead>\n                {%- set headers = results.get_headers(keys=['remote', 'package_id', 'outdated']) %}\n                {%- set headers2rows = headers.row(n_rows=2) %}\n                <tr>\n                    {%- for category, subheaders in headers2rows %}\n                        <th class=\"text-center\" rowspan=\"{% if subheaders|length == 1 and not subheaders[0] %}2{% else %}1{% endif %}\" colspan=\"{{ subheaders|length }}\">\n                            {{ category }}\n                        </th>\n                    {%- endfor %}\n                </tr>\n                <tr>\n                    {%- for category, subheaders in headers2rows %}\n                        {%- if subheaders|length != 1 or subheaders[0] != '' %}\n                            {%- for subheader in subheaders %}\n                                <th>{{ subheader|default(category, true) }}</th>\n                            {%- endfor %}\n                        {%- endif %}\n                    {%- endfor %}\n                </tr>\n            </thead>\n            <tbody>\n                {%- for package in results.packages() %}\n                    <tr>\n                        {%- for item in package.row(headers) %}\n                            <td>{{ item if item != None else ''}}</td>\n                        {%- endfor %}\n                    </tr>\n                {%- endfor %}\n            </tbody>\n            <tfoot>\n                <tr>\n                    {%- for header in headers.row(n_rows=1) %}\n                    <th>{{ header }}</th>\n                    {%- endfor %}\n                </tr>\n            </tfoot>\n        </table>\n\n        <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-3.3.1.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdn.datatables.net/v/dt/dt-1.10.20/datatables.min.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap.min.js\"></script>\n        <script>\n            $(document).ready(function() {\n                // Setup - add a text input to each footer cell\n                $('#results tfoot th').each( function () {\n                    var title = $(this).text();\n                    $(this).html( '<input type=\"text\" class=\"form-control filter-input\" placeholder=\"Filter '+title+'\" style=\"width:100%\"/>' );\n                });\n\n                var table = $('#results').DataTable( {\n                    \"dom\": \"lrtip\",\n                    \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]],\n                    \"pageLength\": 10,\n                    \"columnDefs\": [\n                        { className: \"cell_border_right\", \"targets\": [ {{ headers.keys|length + headers.settings|length -1 }}, {{ headers.keys|length + headers.settings|length + headers.options|length -1 }}  ] },\n                        { className: \"cell_border_right monospaced\", \"targets\": [{{ headers.keys|length -1 }}, ]}\n                    ]\n                });\n\n                // Apply the search\n                table.columns().every( function () {\n                    var that = this;\n\n                    $( 'input', this.footer() ).on( 'keyup change clear', function () {\n                        if ( that.search() !== this.value ) {\n                            that\n                                .search( this.value )\n                                .draw();\n                        }\n                    } );\n                } );\n            });\n        </script>\n    </div>\n    </body>\n</html>\n\"\"\"\n", "path": "conans/assets/templates/search_table_html.py"}]}