We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Solidity Compatible ERC20 broken
The [Solidity compatible ERC20 token](https://github.com/ethereum/vyper/blob/master/examples/tokens/ERC20_solidity_compatible/ERC20.v.py) no longer compiles, since it was not updated after the removal of separate uint256 math functions. This is a super easy fix. I can do it later in the week if no one gets to it before then. 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `examples/tokens/ERC20_solidity_compatible/ERC20.v.py`
Content:
```
1 # Solidity-Compatible EIP20/ERC20 Token
2 # Implements https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
3 # Author: Phil Daian
4 
5 # The use of the uint256 datatype as in this token is not
6 # recommended, as it can pose security risks.
7 
8 # This token is intended as a proof of concept towards
9 # language interoperability and not for production use.
10 
11 # Events issued by the contract
12 Transfer: event({_from: indexed(address), _to: indexed(address), _value: uint256})
13 Approval: event({_owner: indexed(address), _spender: indexed(address), _value: uint256})
14 
15 balances: uint256[address]
16 allowances: (uint256[address])[address]
17 num_issued: uint256
18 
19 @public
20 @payable
21 def deposit():
22     _value: uint256 = convert(msg.value, 'uint256')
23     _sender: address = msg.sender
24     self.balances[_sender] = uint256_add(self.balances[_sender], _value)
25     self.num_issued = uint256_add(self.num_issued, _value)
26     # Fire deposit event as transfer from 0x0
27     log.Transfer(0x0000000000000000000000000000000000000000, _sender, _value)
28 
29 @public
30 def withdraw(_value : uint256) -> bool:
31     _sender: address = msg.sender
32     # Make sure sufficient funds are present, op will not underflow supply
33     # implicitly through overflow protection
34     self.balances[_sender] = uint256_sub(self.balances[_sender], _value)
35     self.num_issued = uint256_sub(self.num_issued, _value)
36     send(_sender, as_wei_value(convert(_value, 'int128'), 'wei'))
37     # Fire withdraw event as transfer to 0x0
38     log.Transfer(_sender, 0x0000000000000000000000000000000000000000, _value)
39     return true
40 
41 @public
42 @constant
43 def totalSupply() -> uint256:
44     return self.num_issued
45 
46 @public
47 @constant
48 def balanceOf(_owner : address) -> uint256:
49     return self.balances[_owner]
50 
51 @public
52 def transfer(_to : address, _value : uint256) -> bool:
53     _sender: address = msg.sender
54     # Make sure sufficient funds are present implicitly through overflow protection
55     self.balances[_sender] = uint256_sub(self.balances[_sender], _value)
56     self.balances[_to] = uint256_add(self.balances[_to], _value)
57     # Fire transfer event
58     log.Transfer(_sender, _to, _value)
59     return true
60 
61 @public
62 def transferFrom(_from : address, _to : address, _value : uint256) -> bool:
63     _sender: address = msg.sender
64     allowance: uint256 = self.allowances[_from][_sender]
65     # Make sure sufficient funds/allowance are present implicitly through overflow protection
66     self.balances[_from] = uint256_sub(self.balances[_from], _value)
67     self.balances[_to] = uint256_add(self.balances[_to], _value)
68     self.allowances[_from][_sender] = uint256_sub(allowance, _value)
69     # Fire transfer event
70     log.Transfer(_from, _to, _value)
71     return true
72 
73 @public
74 def approve(_spender : address, _value : uint256) -> bool:
75     _sender: address = msg.sender
76     self.allowances[_sender][_spender] = _value
77     # Fire approval event
78     log.Approval(_sender, _spender, _value)
79     return true
80 
81 @public
82 @constant
83 def allowance(_owner : address, _spender : address) -> uint256:
84     return self.allowances[_owner][_spender]
85 
86
```
--- 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/examples/tokens/ERC20_solidity_compatible/ERC20.v.py b/examples/tokens/ERC20_solidity_compatible/ERC20.v.py
--- a/examples/tokens/ERC20_solidity_compatible/ERC20.v.py
+++ b/examples/tokens/ERC20_solidity_compatible/ERC20.v.py
@@ -21,8 +21,8 @@
 def deposit():
     _value: uint256 = convert(msg.value, 'uint256')
     _sender: address = msg.sender
-    self.balances[_sender] = uint256_add(self.balances[_sender], _value)
-    self.num_issued = uint256_add(self.num_issued, _value)
+    self.balances[_sender] = self.balances[_sender] + _value
+    self.num_issued = self.num_issued + _value
     # Fire deposit event as transfer from 0x0
     log.Transfer(0x0000000000000000000000000000000000000000, _sender, _value)
 
@@ -31,12 +31,12 @@
     _sender: address = msg.sender
     # Make sure sufficient funds are present, op will not underflow supply
     # implicitly through overflow protection
-    self.balances[_sender] = uint256_sub(self.balances[_sender], _value)
-    self.num_issued = uint256_sub(self.num_issued, _value)
+    self.balances[_sender] = self.balances[_sender] - _value
+    self.num_issued = self.num_issued - _value
     send(_sender, as_wei_value(convert(_value, 'int128'), 'wei'))
     # Fire withdraw event as transfer to 0x0
     log.Transfer(_sender, 0x0000000000000000000000000000000000000000, _value)
-    return true
+    return True
 
 @public
 @constant
@@ -52,23 +52,23 @@
 def transfer(_to : address, _value : uint256) -> bool:
     _sender: address = msg.sender
     # Make sure sufficient funds are present implicitly through overflow protection
-    self.balances[_sender] = uint256_sub(self.balances[_sender], _value)
-    self.balances[_to] = uint256_add(self.balances[_to], _value)
+    self.balances[_sender] = self.balances[_sender] - _value
+    self.balances[_to] = self.balances[_to] + _value
     # Fire transfer event
     log.Transfer(_sender, _to, _value)
-    return true
+    return True
 
 @public
 def transferFrom(_from : address, _to : address, _value : uint256) -> bool:
     _sender: address = msg.sender
     allowance: uint256 = self.allowances[_from][_sender]
     # Make sure sufficient funds/allowance are present implicitly through overflow protection
-    self.balances[_from] = uint256_sub(self.balances[_from], _value)
-    self.balances[_to] = uint256_add(self.balances[_to], _value)
-    self.allowances[_from][_sender] = uint256_sub(allowance, _value)
+    self.balances[_from] = self.balances[_from] - _value
+    self.balances[_to] = self.balances[_to] + _value
+    self.allowances[_from][_sender] = allowance - _value
     # Fire transfer event
     log.Transfer(_from, _to, _value)
-    return true
+    return True
 
 @public
 def approve(_spender : address, _value : uint256) -> bool:
@@ -76,7 +76,7 @@
     self.allowances[_sender][_spender] = _value
     # Fire approval event
     log.Approval(_sender, _spender, _value)
-    return true
+    return True
 
 @public
 @constant

{"golden_diff": "diff --git a/examples/tokens/ERC20_solidity_compatible/ERC20.v.py b/examples/tokens/ERC20_solidity_compatible/ERC20.v.py\n--- a/examples/tokens/ERC20_solidity_compatible/ERC20.v.py\n+++ b/examples/tokens/ERC20_solidity_compatible/ERC20.v.py\n@@ -21,8 +21,8 @@\n def deposit():\n     _value: uint256 = convert(msg.value, 'uint256')\n     _sender: address = msg.sender\n-    self.balances[_sender] = uint256_add(self.balances[_sender], _value)\n-    self.num_issued = uint256_add(self.num_issued, _value)\n+    self.balances[_sender] = self.balances[_sender] + _value\n+    self.num_issued = self.num_issued + _value\n     # Fire deposit event as transfer from 0x0\n     log.Transfer(0x0000000000000000000000000000000000000000, _sender, _value)\n \n@@ -31,12 +31,12 @@\n     _sender: address = msg.sender\n     # Make sure sufficient funds are present, op will not underflow supply\n     # implicitly through overflow protection\n-    self.balances[_sender] = uint256_sub(self.balances[_sender], _value)\n-    self.num_issued = uint256_sub(self.num_issued, _value)\n+    self.balances[_sender] = self.balances[_sender] - _value\n+    self.num_issued = self.num_issued - _value\n     send(_sender, as_wei_value(convert(_value, 'int128'), 'wei'))\n     # Fire withdraw event as transfer to 0x0\n     log.Transfer(_sender, 0x0000000000000000000000000000000000000000, _value)\n-    return true\n+    return True\n \n @public\n @constant\n@@ -52,23 +52,23 @@\n def transfer(_to : address, _value : uint256) -> bool:\n     _sender: address = msg.sender\n     # Make sure sufficient funds are present implicitly through overflow protection\n-    self.balances[_sender] = uint256_sub(self.balances[_sender], _value)\n-    self.balances[_to] = uint256_add(self.balances[_to], _value)\n+    self.balances[_sender] = self.balances[_sender] - _value\n+    self.balances[_to] = self.balances[_to] + _value\n     # Fire transfer event\n     log.Transfer(_sender, _to, _value)\n-    return true\n+    return True\n \n @public\n def transferFrom(_from : address, _to : address, _value : uint256) -> bool:\n     _sender: address = msg.sender\n     allowance: uint256 = self.allowances[_from][_sender]\n     # Make sure sufficient funds/allowance are present implicitly through overflow protection\n-    self.balances[_from] = uint256_sub(self.balances[_from], _value)\n-    self.balances[_to] = uint256_add(self.balances[_to], _value)\n-    self.allowances[_from][_sender] = uint256_sub(allowance, _value)\n+    self.balances[_from] = self.balances[_from] - _value\n+    self.balances[_to] = self.balances[_to] + _value\n+    self.allowances[_from][_sender] = allowance - _value\n     # Fire transfer event\n     log.Transfer(_from, _to, _value)\n-    return true\n+    return True\n \n @public\n def approve(_spender : address, _value : uint256) -> bool:\n@@ -76,7 +76,7 @@\n     self.allowances[_sender][_spender] = _value\n     # Fire approval event\n     log.Approval(_sender, _spender, _value)\n-    return true\n+    return True\n \n @public\n @constant\n", "issue": "Solidity Compatible ERC20 broken\nThe [Solidity compatible ERC20 token](https://github.com/ethereum/vyper/blob/master/examples/tokens/ERC20_solidity_compatible/ERC20.v.py) no longer compiles, since it was not updated after the removal of separate uint256 math functions. This is a super easy fix. I can do it later in the week if no one gets to it before then. \n", "before_files": [{"content": "# Solidity-Compatible EIP20/ERC20 Token\n# Implements https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md\n# Author: Phil Daian\n\n# The use of the uint256 datatype as in this token is not\n# recommended, as it can pose security risks.\n\n# This token is intended as a proof of concept towards\n# language interoperability and not for production use.\n\n# Events issued by the contract\nTransfer: event({_from: indexed(address), _to: indexed(address), _value: uint256})\nApproval: event({_owner: indexed(address), _spender: indexed(address), _value: uint256})\n\nbalances: uint256[address]\nallowances: (uint256[address])[address]\nnum_issued: uint256\n\n@public\n@payable\ndef deposit():\n    _value: uint256 = convert(msg.value, 'uint256')\n    _sender: address = msg.sender\n    self.balances[_sender] = uint256_add(self.balances[_sender], _value)\n    self.num_issued = uint256_add(self.num_issued, _value)\n    # Fire deposit event as transfer from 0x0\n    log.Transfer(0x0000000000000000000000000000000000000000, _sender, _value)\n\n@public\ndef withdraw(_value : uint256) -> bool:\n    _sender: address = msg.sender\n    # Make sure sufficient funds are present, op will not underflow supply\n    # implicitly through overflow protection\n    self.balances[_sender] = uint256_sub(self.balances[_sender], _value)\n    self.num_issued = uint256_sub(self.num_issued, _value)\n    send(_sender, as_wei_value(convert(_value, 'int128'), 'wei'))\n    # Fire withdraw event as transfer to 0x0\n    log.Transfer(_sender, 0x0000000000000000000000000000000000000000, _value)\n    return true\n\n@public\n@constant\ndef totalSupply() -> uint256:\n    return self.num_issued\n\n@public\n@constant\ndef balanceOf(_owner : address) -> uint256:\n    return self.balances[_owner]\n\n@public\ndef transfer(_to : address, _value : uint256) -> bool:\n    _sender: address = msg.sender\n    # Make sure sufficient funds are present implicitly through overflow protection\n    self.balances[_sender] = uint256_sub(self.balances[_sender], _value)\n    self.balances[_to] = uint256_add(self.balances[_to], _value)\n    # Fire transfer event\n    log.Transfer(_sender, _to, _value)\n    return true\n\n@public\ndef transferFrom(_from : address, _to : address, _value : uint256) -> bool:\n    _sender: address = msg.sender\n    allowance: uint256 = self.allowances[_from][_sender]\n    # Make sure sufficient funds/allowance are present implicitly through overflow protection\n    self.balances[_from] = uint256_sub(self.balances[_from], _value)\n    self.balances[_to] = uint256_add(self.balances[_to], _value)\n    self.allowances[_from][_sender] = uint256_sub(allowance, _value)\n    # Fire transfer event\n    log.Transfer(_from, _to, _value)\n    return true\n\n@public\ndef approve(_spender : address, _value : uint256) -> bool:\n    _sender: address = msg.sender\n    self.allowances[_sender][_spender] = _value\n    # Fire approval event\n    log.Approval(_sender, _spender, _value)\n    return true\n\n@public\n@constant\ndef allowance(_owner : address, _spender : address) -> uint256:\n    return self.allowances[_owner][_spender]\n\n", "path": "examples/tokens/ERC20_solidity_compatible/ERC20.v.py"}], "after_files": [{"content": "# Solidity-Compatible EIP20/ERC20 Token\n# Implements https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md\n# Author: Phil Daian\n\n# The use of the uint256 datatype as in this token is not\n# recommended, as it can pose security risks.\n\n# This token is intended as a proof of concept towards\n# language interoperability and not for production use.\n\n# Events issued by the contract\nTransfer: event({_from: indexed(address), _to: indexed(address), _value: uint256})\nApproval: event({_owner: indexed(address), _spender: indexed(address), _value: uint256})\n\nbalances: uint256[address]\nallowances: (uint256[address])[address]\nnum_issued: uint256\n\n@public\n@payable\ndef deposit():\n    _value: uint256 = convert(msg.value, 'uint256')\n    _sender: address = msg.sender\n    self.balances[_sender] = self.balances[_sender] + _value\n    self.num_issued = self.num_issued + _value\n    # Fire deposit event as transfer from 0x0\n    log.Transfer(0x0000000000000000000000000000000000000000, _sender, _value)\n\n@public\ndef withdraw(_value : uint256) -> bool:\n    _sender: address = msg.sender\n    # Make sure sufficient funds are present, op will not underflow supply\n    # implicitly through overflow protection\n    self.balances[_sender] = self.balances[_sender] - _value\n    self.num_issued = self.num_issued - _value\n    send(_sender, as_wei_value(convert(_value, 'int128'), 'wei'))\n    # Fire withdraw event as transfer to 0x0\n    log.Transfer(_sender, 0x0000000000000000000000000000000000000000, _value)\n    return True\n\n@public\n@constant\ndef totalSupply() -> uint256:\n    return self.num_issued\n\n@public\n@constant\ndef balanceOf(_owner : address) -> uint256:\n    return self.balances[_owner]\n\n@public\ndef transfer(_to : address, _value : uint256) -> bool:\n    _sender: address = msg.sender\n    # Make sure sufficient funds are present implicitly through overflow protection\n    self.balances[_sender] = self.balances[_sender] - _value\n    self.balances[_to] = self.balances[_to] + _value\n    # Fire transfer event\n    log.Transfer(_sender, _to, _value)\n    return True\n\n@public\ndef transferFrom(_from : address, _to : address, _value : uint256) -> bool:\n    _sender: address = msg.sender\n    allowance: uint256 = self.allowances[_from][_sender]\n    # Make sure sufficient funds/allowance are present implicitly through overflow protection\n    self.balances[_from] = self.balances[_from] - _value\n    self.balances[_to] = self.balances[_to] + _value\n    self.allowances[_from][_sender] = allowance - _value\n    # Fire transfer event\n    log.Transfer(_from, _to, _value)\n    return True\n\n@public\ndef approve(_spender : address, _value : uint256) -> bool:\n    _sender: address = msg.sender\n    self.allowances[_sender][_spender] = _value\n    # Fire approval event\n    log.Approval(_sender, _spender, _value)\n    return True\n\n@public\n@constant\ndef allowance(_owner : address, _spender : address) -> uint256:\n    return self.allowances[_owner][_spender]\n\n", "path": "examples/tokens/ERC20_solidity_compatible/ERC20.v.py"}]}