We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Visa now supports 19 digits credit card length
reference: 
https://www.freeformatter.com/credit-card-number-generator-validator.html 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `faker/providers/credit_card/__init__.py`
Content:
```
1 # coding=utf-8
2 from __future__ import unicode_literals
3 from collections import OrderedDict
4 
5 from .. import BaseProvider
6 
7 
8 class CreditCard(object):
9 
10     def __init__(
11             self,
12             name,
13             prefixes,
14             length=16,
15             security_code='CVC',
16             security_code_length=3):
17         self.name = name
18         self.prefixes = prefixes
19         self.length = length
20         self.security_code = security_code
21         self.security_code_length = security_code_length
22 
23 
24 class Provider(BaseProvider):
25 
26     # Prefixes from:
27     # * https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_.28IIN.29
28     # * https://www.regular-expressions.info/creditcard.html
29     # * https://creditcardjs.com/credit-card-type-detection
30     prefix_maestro = ['5018', '5020', '5038', '56##', '57##', '58##',
31                       '6304', '6759', '6761', '6762', '6763', '0604', '6390']
32     prefix_mastercard = ['51', '52', '53', '54', '55', '222%']
33     prefix_visa = ['4']
34     prefix_amex = ['34', '37']
35     prefix_discover = ['6011', '65']
36     prefix_diners = ['300', '301', '302', '303', '304', '305', '36', '38']
37     prefix_jcb16 = ['35']
38     prefix_jcb15 = ['2131', '1800']
39 
40     credit_card_types = OrderedDict((
41         ('maestro', CreditCard('Maestro',
42                                     prefix_maestro, 12, security_code='CVV')),
43         ('mastercard', CreditCard('Mastercard',
44                                   prefix_mastercard, 16, security_code='CVV')),
45         ('visa16', CreditCard('VISA 16 digit', prefix_visa)),
46         ('visa13', CreditCard('VISA 13 digit', prefix_visa, 13)),
47         ('amex', CreditCard('American Express', prefix_amex,
48                             15, security_code='CID', security_code_length=4)),
49         ('discover', CreditCard('Discover', prefix_discover)),
50         ('diners', CreditCard('Diners Club / Carte Blanche', prefix_diners, 14)),
51         ('jcb15', CreditCard('JCB 15 digit', prefix_jcb15, 15)),
52         ('jcb16', CreditCard('JCB 16 digit', prefix_jcb16)),
53     ))
54     credit_card_types['visa'] = credit_card_types['visa16']
55     credit_card_types['jcb'] = credit_card_types['jcb16']
56 
57     luhn_lookup = {'0': 0, '1': 2, '2': 4, '3': 6, '4': 8,
58                    '5': 1, '6': 3, '7': 5, '8': 7, '9': 9}
59 
60     def credit_card_provider(self, card_type=None):
61         """ Returns the provider's name of the credit card. """
62         if card_type is None:
63             card_type = self.random_element(self.credit_card_types.keys())
64         return self._credit_card_type(card_type).name
65 
66     def credit_card_number(self, card_type=None):
67         """ Returns a valid credit card number. """
68         card = self._credit_card_type(card_type)
69         prefix = self.random_element(card.prefixes)
70         number = self._generate_number(self.numerify(prefix), card.length)
71         return number
72 
73     def credit_card_expire(self, start='now', end='+10y', date_format='%m/%y'):
74         expire_date = self.generator.date_time_between(start, end)
75         return expire_date.strftime(date_format)
76 
77     def credit_card_full(self, card_type=None):
78         card = self._credit_card_type(card_type)
79 
80         tpl = ('{provider}\n'
81                '{owner}\n'
82                '{number} {expire_date}\n'
83                '{security}: {security_nb}\n')
84 
85         tpl = tpl.format(provider=card.name,
86                          owner=self.generator.parse(
87                              "{{first_name}} {{last_name}}"),
88                          number=self.credit_card_number(card),
89                          expire_date=self.credit_card_expire(),
90                          security=card.security_code,
91                          security_nb=self.credit_card_security_code(card))
92 
93         return self.generator.parse(tpl)
94 
95     def credit_card_security_code(self, card_type=None):
96         """ Returns a security code string. """
97         sec_len = self._credit_card_type(card_type).security_code_length
98         return self.numerify('#' * sec_len)
99 
100     def _credit_card_type(self, card_type=None):
101         """ Returns a random credit card type instance. """
102         if card_type is None:
103             card_type = self.random_element(self.credit_card_types.keys())
104         elif isinstance(card_type, CreditCard):
105             return card_type
106         return self.credit_card_types[card_type]
107 
108     def _generate_number(self, prefix, length):
109         """
110         'prefix' is the start of the CC number as a string, any number of digits.
111         'length' is the length of the CC number to generate. Typically 13 or 16
112         """
113         number = prefix
114         # Generate random char digits
115         number += '#' * (length - len(prefix) - 1)
116         number = self.numerify(number)
117         reverse = number[::-1]
118         # Calculate sum
119         tot = 0
120         pos = 0
121         while pos < length - 1:
122             tot += Provider.luhn_lookup[reverse[pos]]
123             if pos != (length - 2):
124                 tot += int(reverse[pos + 1])
125             pos += 2
126         # Calculate check digit
127         check_digit = (10 - (tot % 10)) % 10
128         number += str(check_digit)
129         return number
130
```
--- 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/faker/providers/credit_card/__init__.py b/faker/providers/credit_card/__init__.py
--- a/faker/providers/credit_card/__init__.py
+++ b/faker/providers/credit_card/__init__.py
@@ -44,6 +44,7 @@
                                   prefix_mastercard, 16, security_code='CVV')),
         ('visa16', CreditCard('VISA 16 digit', prefix_visa)),
         ('visa13', CreditCard('VISA 13 digit', prefix_visa, 13)),
+        ('visa19', CreditCard('VISA 19 digit', prefix_visa, 19)),
         ('amex', CreditCard('American Express', prefix_amex,
                             15, security_code='CID', security_code_length=4)),
         ('discover', CreditCard('Discover', prefix_discover)),

{"golden_diff": "diff --git a/faker/providers/credit_card/__init__.py b/faker/providers/credit_card/__init__.py\n--- a/faker/providers/credit_card/__init__.py\n+++ b/faker/providers/credit_card/__init__.py\n@@ -44,6 +44,7 @@\n                                   prefix_mastercard, 16, security_code='CVV')),\n         ('visa16', CreditCard('VISA 16 digit', prefix_visa)),\n         ('visa13', CreditCard('VISA 13 digit', prefix_visa, 13)),\n+        ('visa19', CreditCard('VISA 19 digit', prefix_visa, 19)),\n         ('amex', CreditCard('American Express', prefix_amex,\n                             15, security_code='CID', security_code_length=4)),\n         ('discover', CreditCard('Discover', prefix_discover)),\n", "issue": "Visa now supports 19 digits credit card length\nreference: \r\nhttps://www.freeformatter.com/credit-card-number-generator-validator.html \n", "before_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom collections import OrderedDict\n\nfrom .. import BaseProvider\n\n\nclass CreditCard(object):\n\n    def __init__(\n            self,\n            name,\n            prefixes,\n            length=16,\n            security_code='CVC',\n            security_code_length=3):\n        self.name = name\n        self.prefixes = prefixes\n        self.length = length\n        self.security_code = security_code\n        self.security_code_length = security_code_length\n\n\nclass Provider(BaseProvider):\n\n    # Prefixes from:\n    # * https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_.28IIN.29\n    # * https://www.regular-expressions.info/creditcard.html\n    # * https://creditcardjs.com/credit-card-type-detection\n    prefix_maestro = ['5018', '5020', '5038', '56##', '57##', '58##',\n                      '6304', '6759', '6761', '6762', '6763', '0604', '6390']\n    prefix_mastercard = ['51', '52', '53', '54', '55', '222%']\n    prefix_visa = ['4']\n    prefix_amex = ['34', '37']\n    prefix_discover = ['6011', '65']\n    prefix_diners = ['300', '301', '302', '303', '304', '305', '36', '38']\n    prefix_jcb16 = ['35']\n    prefix_jcb15 = ['2131', '1800']\n\n    credit_card_types = OrderedDict((\n        ('maestro', CreditCard('Maestro',\n                                    prefix_maestro, 12, security_code='CVV')),\n        ('mastercard', CreditCard('Mastercard',\n                                  prefix_mastercard, 16, security_code='CVV')),\n        ('visa16', CreditCard('VISA 16 digit', prefix_visa)),\n        ('visa13', CreditCard('VISA 13 digit', prefix_visa, 13)),\n        ('amex', CreditCard('American Express', prefix_amex,\n                            15, security_code='CID', security_code_length=4)),\n        ('discover', CreditCard('Discover', prefix_discover)),\n        ('diners', CreditCard('Diners Club / Carte Blanche', prefix_diners, 14)),\n        ('jcb15', CreditCard('JCB 15 digit', prefix_jcb15, 15)),\n        ('jcb16', CreditCard('JCB 16 digit', prefix_jcb16)),\n    ))\n    credit_card_types['visa'] = credit_card_types['visa16']\n    credit_card_types['jcb'] = credit_card_types['jcb16']\n\n    luhn_lookup = {'0': 0, '1': 2, '2': 4, '3': 6, '4': 8,\n                   '5': 1, '6': 3, '7': 5, '8': 7, '9': 9}\n\n    def credit_card_provider(self, card_type=None):\n        \"\"\" Returns the provider's name of the credit card. \"\"\"\n        if card_type is None:\n            card_type = self.random_element(self.credit_card_types.keys())\n        return self._credit_card_type(card_type).name\n\n    def credit_card_number(self, card_type=None):\n        \"\"\" Returns a valid credit card number. \"\"\"\n        card = self._credit_card_type(card_type)\n        prefix = self.random_element(card.prefixes)\n        number = self._generate_number(self.numerify(prefix), card.length)\n        return number\n\n    def credit_card_expire(self, start='now', end='+10y', date_format='%m/%y'):\n        expire_date = self.generator.date_time_between(start, end)\n        return expire_date.strftime(date_format)\n\n    def credit_card_full(self, card_type=None):\n        card = self._credit_card_type(card_type)\n\n        tpl = ('{provider}\\n'\n               '{owner}\\n'\n               '{number} {expire_date}\\n'\n               '{security}: {security_nb}\\n')\n\n        tpl = tpl.format(provider=card.name,\n                         owner=self.generator.parse(\n                             \"{{first_name}} {{last_name}}\"),\n                         number=self.credit_card_number(card),\n                         expire_date=self.credit_card_expire(),\n                         security=card.security_code,\n                         security_nb=self.credit_card_security_code(card))\n\n        return self.generator.parse(tpl)\n\n    def credit_card_security_code(self, card_type=None):\n        \"\"\" Returns a security code string. \"\"\"\n        sec_len = self._credit_card_type(card_type).security_code_length\n        return self.numerify('#' * sec_len)\n\n    def _credit_card_type(self, card_type=None):\n        \"\"\" Returns a random credit card type instance. \"\"\"\n        if card_type is None:\n            card_type = self.random_element(self.credit_card_types.keys())\n        elif isinstance(card_type, CreditCard):\n            return card_type\n        return self.credit_card_types[card_type]\n\n    def _generate_number(self, prefix, length):\n        \"\"\"\n        'prefix' is the start of the CC number as a string, any number of digits.\n        'length' is the length of the CC number to generate. Typically 13 or 16\n        \"\"\"\n        number = prefix\n        # Generate random char digits\n        number += '#' * (length - len(prefix) - 1)\n        number = self.numerify(number)\n        reverse = number[::-1]\n        # Calculate sum\n        tot = 0\n        pos = 0\n        while pos < length - 1:\n            tot += Provider.luhn_lookup[reverse[pos]]\n            if pos != (length - 2):\n                tot += int(reverse[pos + 1])\n            pos += 2\n        # Calculate check digit\n        check_digit = (10 - (tot % 10)) % 10\n        number += str(check_digit)\n        return number\n", "path": "faker/providers/credit_card/__init__.py"}], "after_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom collections import OrderedDict\n\nfrom .. import BaseProvider\n\n\nclass CreditCard(object):\n\n    def __init__(\n            self,\n            name,\n            prefixes,\n            length=16,\n            security_code='CVC',\n            security_code_length=3):\n        self.name = name\n        self.prefixes = prefixes\n        self.length = length\n        self.security_code = security_code\n        self.security_code_length = security_code_length\n\n\nclass Provider(BaseProvider):\n\n    # Prefixes from:\n    # * https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_.28IIN.29\n    # * https://www.regular-expressions.info/creditcard.html\n    # * https://creditcardjs.com/credit-card-type-detection\n    prefix_maestro = ['5018', '5020', '5038', '56##', '57##', '58##',\n                      '6304', '6759', '6761', '6762', '6763', '0604', '6390']\n    prefix_mastercard = ['51', '52', '53', '54', '55', '222%']\n    prefix_visa = ['4']\n    prefix_amex = ['34', '37']\n    prefix_discover = ['6011', '65']\n    prefix_diners = ['300', '301', '302', '303', '304', '305', '36', '38']\n    prefix_jcb16 = ['35']\n    prefix_jcb15 = ['2131', '1800']\n\n    credit_card_types = OrderedDict((\n        ('maestro', CreditCard('Maestro',\n                                    prefix_maestro, 12, security_code='CVV')),\n        ('mastercard', CreditCard('Mastercard',\n                                  prefix_mastercard, 16, security_code='CVV')),\n        ('visa16', CreditCard('VISA 16 digit', prefix_visa)),\n        ('visa13', CreditCard('VISA 13 digit', prefix_visa, 13)),\n        ('visa19', CreditCard('VISA 19 digit', prefix_visa, 19)),\n        ('amex', CreditCard('American Express', prefix_amex,\n                            15, security_code='CID', security_code_length=4)),\n        ('discover', CreditCard('Discover', prefix_discover)),\n        ('diners', CreditCard('Diners Club / Carte Blanche', prefix_diners, 14)),\n        ('jcb15', CreditCard('JCB 15 digit', prefix_jcb15, 15)),\n        ('jcb16', CreditCard('JCB 16 digit', prefix_jcb16)),\n    ))\n    credit_card_types['visa'] = credit_card_types['visa16']\n    credit_card_types['jcb'] = credit_card_types['jcb16']\n\n    luhn_lookup = {'0': 0, '1': 2, '2': 4, '3': 6, '4': 8,\n                   '5': 1, '6': 3, '7': 5, '8': 7, '9': 9}\n\n    def credit_card_provider(self, card_type=None):\n        \"\"\" Returns the provider's name of the credit card. \"\"\"\n        if card_type is None:\n            card_type = self.random_element(self.credit_card_types.keys())\n        return self._credit_card_type(card_type).name\n\n    def credit_card_number(self, card_type=None):\n        \"\"\" Returns a valid credit card number. \"\"\"\n        card = self._credit_card_type(card_type)\n        prefix = self.random_element(card.prefixes)\n        number = self._generate_number(self.numerify(prefix), card.length)\n        return number\n\n    def credit_card_expire(self, start='now', end='+10y', date_format='%m/%y'):\n        expire_date = self.generator.date_time_between(start, end)\n        return expire_date.strftime(date_format)\n\n    def credit_card_full(self, card_type=None):\n        card = self._credit_card_type(card_type)\n\n        tpl = ('{provider}\\n'\n               '{owner}\\n'\n               '{number} {expire_date}\\n'\n               '{security}: {security_nb}\\n')\n\n        tpl = tpl.format(provider=card.name,\n                         owner=self.generator.parse(\n                             \"{{first_name}} {{last_name}}\"),\n                         number=self.credit_card_number(card),\n                         expire_date=self.credit_card_expire(),\n                         security=card.security_code,\n                         security_nb=self.credit_card_security_code(card))\n\n        return self.generator.parse(tpl)\n\n    def credit_card_security_code(self, card_type=None):\n        \"\"\" Returns a security code string. \"\"\"\n        sec_len = self._credit_card_type(card_type).security_code_length\n        return self.numerify('#' * sec_len)\n\n    def _credit_card_type(self, card_type=None):\n        \"\"\" Returns a random credit card type instance. \"\"\"\n        if card_type is None:\n            card_type = self.random_element(self.credit_card_types.keys())\n        elif isinstance(card_type, CreditCard):\n            return card_type\n        return self.credit_card_types[card_type]\n\n    def _generate_number(self, prefix, length):\n        \"\"\"\n        'prefix' is the start of the CC number as a string, any number of digits.\n        'length' is the length of the CC number to generate. Typically 13 or 16\n        \"\"\"\n        number = prefix\n        # Generate random char digits\n        number += '#' * (length - len(prefix) - 1)\n        number = self.numerify(number)\n        reverse = number[::-1]\n        # Calculate sum\n        tot = 0\n        pos = 0\n        while pos < length - 1:\n            tot += Provider.luhn_lookup[reverse[pos]]\n            if pos != (length - 2):\n                tot += int(reverse[pos + 1])\n            pos += 2\n        # Calculate check digit\n        check_digit = (10 - (tot % 10)) % 10\n        number += str(check_digit)\n        return number\n", "path": "faker/providers/credit_card/__init__.py"}]}