aboutsummaryrefslogtreecommitdiffstats
Commit message (Expand)AuthorAgeFilesLines
* Type conversion specialities for storage references.chriseth2015-06-163-15/+20
* Style.chriseth2015-06-162-23/+33
* Copying between memory and memory.chriseth2015-06-165-336/+491
* Style.chriseth2015-06-152-3/+6
* Pleased gcc.chriseth2015-06-151-0/+2
* Distinction between storage pointer and storage ref and type checking for con...chriseth2015-06-1510-151/+327
* Optimize RETURN x 0 to STOP.chriseth2015-06-121-1/+4
* Added missing source locations for new memory management code.chriseth2015-06-101-9/+13
* Merge pull request #2122 from chriseth/sol_memoryArrays2chriseth2015-06-106-144/+288
|\
| * Use dynamic memory for argument encoding.chriseth2015-06-094-126/+218
| * Dynamic memory.chriseth2015-06-095-35/+87
* | Merge pull request #2114 from LianaHus/sol_byte0_in_storagechriseth2015-06-102-4/+3
|\ \
| * | removed byte0 keywordLiana Husikyan2015-06-082-4/+2
| * | added testLiana Husikyan2015-06-081-2/+3
* | | Merge pull request #2126 from LianaHus/sol_Natspec_warnings_instead_of_except...chriseth2015-06-102-65/+94
|\ \ \
| * | | style fixesLiana Husikyan2015-06-092-20/+34
| * | | style fixesLiana Husikyan2015-06-091-47/+62
| | |/ | |/|
* | | Merge pull request #2124 from chriseth/sol_conversionErrorsGav Wood2015-06-091-6/+36
|\ \ \
| * | | Improved type conversion error messages.chriseth2015-06-091-6/+36
| |/ /
* | | Merge pull request #2112 from chfast/refactor_move_overrideGav Wood2015-06-095-11/+11
|\ \ \ | |/ / |/| |
| * | Add missing override specifiers.Paweł Bylica2015-06-083-4/+4
| * | Remove pessimising moves.Paweł Bylica2015-06-082-7/+7
| |/
* / Improved "Stack too deep" error message.chriseth2015-06-075-14/+32
|/
* Merge pull request #2096 from chriseth/sol_constantFallbackchriseth2015-06-063-16/+45
|\
| * Style.chriseth2015-06-051-4/+5
| * Bare functions return success condition.chriseth2015-06-052-14/+27
| * Fallback takes constant amount of gas, and send to gas with send.chriseth2015-06-052-2/+17
* | Merge pull request #2084 from chriseth/sol_computeConstantschriseth2015-06-065-12/+26
|\ \ | |/ |/|
| * Compute constantschriseth2015-06-055-12/+26
* | Style.chriseth2015-06-052-8/+15
* | Ability to specify the storage location of a reference type.chriseth2015-06-0511-96/+229
|/
* Merge pull request #2074 from LianaHus/sol_PosIntegerLiteralsConversationchriseth2015-06-052-14/+30
|\
| * Update Types.cppLiana Husikyan2015-06-051-6/+6
| * fixed assigning negative number to unsignedLiana Husikyan2015-06-041-1/+1
| * - style fixesLiana Husikyan2015-06-042-14/+12
| * - conversion of positive literals to signed intLiana Husikyan2015-06-042-15/+33
* | fixed assertionLiana Husikyan2015-06-041-1/+1
* | corrected the calculation of gas for sendLiana Husikyan2015-06-042-4/+8
|/
* Do not put duplicate labels for accessor functions.chriseth2015-06-021-1/+0
* Merge pull request #1975 from LianaHus/sol_EVMExceptionschriseth2015-06-015-12/+11
|\
| * fixed CALL case. added exceptionLiana Husikyan2015-06-011-2/+2
| * style fixesLiana Husikyan2015-06-011-2/+2
| * removed exception when function is not foundLiana Husikyan2015-06-013-19/+7
| * special handle of sendLiana Husikyan2015-06-012-6/+15
| * one more test to test the call of non-existed functionLiana Husikyan2015-06-011-1/+1
| * style fixesLiana Husikyan2015-06-012-2/+3
| * fixed mistake because of conflict resolvingLiana Husikyan2015-06-011-4/+5
| * added error jump instead of STOP instraction in case of exceptionLiana Husikyan2015-06-014-10/+10
* | Merge pull request #2027 from chriseth/sol_dupRemForLoopschriseth2015-06-011-2/+12
|\ \
| * | Allow duplicate code removal for loops.chriseth2015-05-281-2/+12
| |/
* / Re-introduce string type.chriseth2015-05-285-13/+36
|/
* Merge pull request #2006 from chriseth/sol_functionalGasEstimatorchriseth2015-05-2610-17/+127
|\
| * Gas estimation for internal functions.chriseth2015-05-268-9/+89
| * Functional gas estimator.chriseth2015-05-224-17/+47
* | Sort keywords and add some reserved keywords.chriseth2015-05-251-8/+14
|/
* Merge pull request #1979 from LianaHus/sol_constructorForSolAbichriseth2015-05-211-9/+19
|\
| * Update InterfaceHandler.cppLiana Husikyan2015-05-211-2/+1
| * added ';'Liana Husikyan2015-05-191-2/+5
| * added constructor to solidiy abiLiana Husikyan2015-05-191-9/+17
* | Gas estimation taking known state into account.chriseth2015-05-205-24/+82
* | Move non-cryptopp dependent stuff into devcore.Gav Wood2015-05-204-4/+4
|/
* Merge pull request #1931 from chriseth/sol_callcodechriseth2015-05-184-28/+75
|\
| * Bare callcode for addresses and contracts.chriseth2015-05-164-28/+75
* | Fixed error message about explicit type conversion.chriseth2015-05-181-1/+1
|/
* Succint interfaces.chriseth2015-05-152-5/+3
* Reverse if and else body.chriseth2015-05-121-4/+8
* updated unit testLiana Husikyan2015-05-111-4/+8
* bug in abi. fixed external type for return parametersLiana Husikyan2015-05-111-5/+5
* Merge pull request #1831 from chriseth/sol_newABIEncodingchriseth2015-05-111-28/+18
|\
| * New ABI encoding for dynamic types.chriseth2015-05-081-28/+18
* | Build fixes.Gav Wood2015-05-101-1/+1
* | style changesLiana Husikyan2015-05-086-16/+16
* | fixed the testLiana Husikyan2015-05-082-5/+7
* | implemented cleanup of duplication in resolverLiana Husikyan2015-05-082-6/+22
* | changed the way of resolving declarations. now the cleanup of function duplic...Liana Husikyan2015-05-086-54/+55
* | adde the positions for the end of SourceLocationLiana Husikyan2015-05-072-8/+13
* | added interface function for SourceLocation/ position convertation to compile...Liana Husikyan2015-05-072-0/+13
|/
* Added assertions.chriseth2015-05-071-0/+2
* Style.chriseth2015-05-061-1/+2
* Use std::array.chriseth2015-05-062-5/+8
* Structural gas estimator.chriseth2015-05-065-3/+224
* Merge pull request #1743 from chriseth/evmasmGav Wood2015-05-0512-12/+12
|\
| * Build fix after merge.chriseth2015-04-301-1/+1
| * Move assembly related files to libevmasm and Params.h/.cpp to libevmcore.chriseth2015-04-3011-11/+11
* | Update NameAndTypeResolver.cppLiana Husikyan2015-05-041-1/+3
* | Update AST.cppLiana Husikyan2015-05-041-4/+3
* | Update AST.cppLiana Husikyan2015-05-041-1/+1
* | some more style fixesLiana Husikyan2015-05-042-14/+18
* | small fixLiana Husikyan2015-05-046-32/+45
* | fixed warrningLiana Husikyan2015-05-041-1/+1
* | fixed the order of error msgsLiana Husikyan2015-05-041-3/+16
* | created secondarySoureLocation error typeLiana Husikyan2015-05-047-28/+100
* | Fix for broken continue in for loop.chriseth2015-05-041-1/+4
|/
* Utility class to find a suitable AST node for a given location.chriseth2015-04-292-0/+102
* Merge pull request #1761 from chriseth/sol_fix_deleteBytesGav Wood2015-04-281-8/+3
|\
| * Fix for deleting byte array elements.chriseth2015-04-281-8/+3
* | Provide a way to override default visitor function in a generic way.chriseth2015-04-281-153/+169
* | Removed visit functions for abstract AST nodes.chriseth2015-04-285-131/+0
|/
* saved returnParameterNames in FunctionType constructorLiana Husikyan2015-04-274-2/+10
* changed the test so constructor will have input parametersLiana Husikyan2015-04-274-31/+83
* removed an unnecessary functionLiana Husikyan2015-04-272-8/+0
* changed the implementationLiana Husikyan2015-04-271-21/+26
* style fixLiana Husikyan2015-04-272-2/+0
* fixed the output of the testLiana Husikyan2015-04-273-2/+21
* Use BUILD_SHARED_LIBchriseth2015-04-241-5/+1
* Use non-implemented functions for solidity interface output.chriseth2015-04-231-1/+1
* Merge pull request #1708 from chriseth/sol_fix_librarieschriseth2015-04-222-2/+2
|\
| * Fixed use of libraries.chriseth2015-04-222-2/+2
* | Merge pull request #1697 from chriseth/sol_bytesInEventschriseth2015-04-227-34/+120
|\ \
| * | Fix regarding memory overwrite during sha3 computation.chriseth2015-04-221-4/+9
| * | bytes parameters for events and sha3.chriseth2015-04-227-30/+111
| |/
* / JSON compiler.Christian2015-04-226-10/+30
|/
* Fix for declarations.chriseth2015-04-221-4/+10
* Merge pull request #1685 from chriseth/sol_fix_ripemd_alignmentGav Wood2015-04-211-1/+7
|\
| * Fixed byte alignment for return type of ripemd160 built-in contract.chriseth2015-04-211-1/+7
* | Merge pull request #1699 from chriseth/sol_fix_contractTypesAsArgumentsGav Wood2015-04-213-15/+33
|\ \
| * | Fix for Contract and Enum types as external function arguments.chriseth2015-04-213-15/+33
| |/
* | Styling.chriseth2015-04-202-15/+17
* | Merge remote-tracking branch 'ethereum/develop' into sol_overloadingFunctionschriseth2015-04-207-22/+76
|\|
| * removed unused parameter from streamAsmJsonLiana Husikyan2015-04-171-1/+1
| * style fixesLiana Husikyan2015-04-173-4/+7
| * added asm-json flag to cl compilerLiana Husikyan2015-04-174-6/+9
| * Merge pull request #1501 from LefterisJP/abstract_contract_contructorschriseth2015-04-175-17/+65
| |\
| | * Fixing detection of abstract contractLefteris Karapetsas2015-04-171-23/+18
| | * Adding forgotten virtual specifier to EnumValue getType()Lefteris Karapetsas2015-04-171-1/+1
| | * Add "this" contract's ctor to provided ctors setLefteris Karapetsas2015-04-171-5/+8
| | * Fixing new abstract contract error location reportingLefteris Karapetsas2015-04-171-1/+1
| | * size()!=0 -> !empty()Lefteris Karapetsas2015-04-171-1/+1
| | * Check all constructors in inheritance chain get argsLefteris Karapetsas2015-04-172-1/+44
| | * Allowing abstract contracts constructor to have no argsLefteris Karapetsas2015-04-175-15/+22
* | | Merge remote-tracking branch 'ethereum/develop' into sol_overloadingFunctionschriseth2015-04-177-99/+87
|\| |
| * | Fix for signed integers in storage.chriseth2015-04-171-0/+16
| |/
| * Bugfixes concerning variable declarations.chriseth2015-04-162-20/+19
| * Line break.chriseth2015-04-161-1/+2
| * Some cleanup concerning byte arrays.chriseth2015-04-165-79/+51
* | Merge remote-tracking branch 'ethereum/develop' into sol_overloadingFunctionschriseth2015-04-156-30/+72
|\|
| * Merge pull request #1546 from chriseth/sol_assumeContractNotCreatedGav Wood2015-04-091-1/+1
| |\
| | * Retain more gas for the case that the called contract is not yet created.chriseth2015-04-071-1/+1
| * | fixesLiana Husikyan2015-04-082-16/+30
| * | added implementation to append code for State variable accessorLiana Husikyan2015-04-084-38/+45
| * | some more testsLiana Husikyan2015-04-083-28/+41
| * | added createing FunctionType from ArrayType VariableDeclarationLiana Husikyan2015-04-082-14/+23
| * | SHA3 optimizations.chriseth2015-04-071-1/+0
| |/
* | Fixed function overloads.chriseth2015-04-1513-305/+507
* | Merge remote-tracking branch 'ethereum/develop' into sol_overloadingFunctionschriseth2015-04-0723-654/+1312
|\|
| * VariableDeclaration::checkTypeRequirements() refactoringLiana Husikyan2015-04-011-5/+2
| * Update Types.cppLiana Husikyan2015-04-011-2/+2
| * Update AST.cppLiana Husikyan2015-04-011-2/+2
| * Update Types.hLiana Husikyan2015-04-011-1/+1
| * miner changes in the implementation of the externalTypes function of Function...Liana Husikyan2015-04-013-15/+17
| * changed checking for external type in VariableDeclaration::checkTypeRequireme...Liana Husikyan2015-04-011-1/+16
| * style fixesLiana Husikyan2015-04-012-6/+11
| * Merge pull request #1468 from chriseth/sol_pullOutIndexaccessGav Wood2015-03-313-100/+117
| |\
| | * Refactor: Pull out array index access.chriseth2015-03-313-100/+117
| * | Merge pull request #1464 from LefterisJP/natspec_nonexistant_paramchriseth2015-03-311-0/+9
| |\ \
| | * | Detect if non-existant parameter is documented with natspecLefteris Karapetsas2015-03-301-0/+9
| | |/
| * | Merge pull request #1414 from LefterisJP/sol_notImplementedFuncschriseth2015-03-315-36/+112
| |\ \ | | |/ | |/|
| | * Fix some styling issues and remove commentsLefteris Karapetsas2015-03-301-16/+2
| | * Abstract contract and inheritanceLefteris Karapetsas2015-03-274-4/+44
| | * Moving contract fullyImplemented check to TypeRequirementsLefteris Karapetsas2015-03-273-10/+10
| | * Parsing of not fully implemented functionsLefteris Karapetsas2015-03-254-39/+89
| * | Merge pull request #1338 from LianaHus/sol_ConvertContractTypesToAddresschriseth2015-03-276-18/+76
| |\ \
| | * | added externalTypes function to functionTypeLiana Husikyan2015-03-275-14/+30
| | * | two more testsLiana Husikyan2015-03-262-2/+2
| | * | tests for external typesLiana Husikyan2015-03-255-16/+14
| | * | renamed externalTypes to externalSignatureLiana Husikyan2015-03-256-15/+15
| | * | renamed getCanonicalSignatureLiana Husikyan2015-03-256-14/+17
| | * | added check for events and stat variablesLiana Husikyan2015-03-253-10/+14
| | * | - added externalType to BooleanType.Liana Husikyan2015-03-253-4/+7
| | * | added check for valid externalType to checkTypeRequirements for functionLiana Husikyan2015-03-251-0/+8
| | * | added externalType for ArrayTypeLiana Husikyan2015-03-252-6/+24
| | * | added getABIType() to typesLiana Husikyan2015-03-251-3/+11
| | |/
| * | Merge branch 'develop' of github.com:ethereum/cpp-ethereum into developGav Wood2015-03-260-0/+0
| |\ \
| | * | Adding some more reserved keywordsLefteris Karapetsas2015-03-251-0/+3
| | * | Adding keywords for future use section in Token.hLefteris Karapetsas2015-03-241-2/+7
| | * | Removing string as a token.Lefteris Karapetsas2015-03-232-2/+0
| | |/
| * / Clean up some code redundancy.Gav Wood2015-03-262-4/+10
| |/
| * Merge pull request #1341 from chriseth/sol_packedStoragechriseth2015-03-206-93/+274
| |\
| | * Byte size checked for zero; coding style.chriseth2015-03-203-14/+16
| | * Disallowed special case of bytes0 arrays.chriseth2015-03-181-0/+2
| | * Packing for arrays.chriseth2015-03-185-76/+240
| | * Provide access to storage offsets via contract type.chriseth2015-03-183-17/+30
| * | Merge pull request #1344 from LefterisJP/sol_BytesToIntConvchriseth2015-03-191-8/+2
| |\ \
| | * | Explicit conversion between bytes and int of any sizeLefteris Karapetsas2015-03-181-8/+2
| | |/
| * | Merge pull request #1178 from imapp-pl/pr/evmjit-v0.3Gav Wood2015-03-190-0/+0
| |\ \
| | * \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-03-1611-183/+196
| | |\ \
| | * \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-03-127-8/+30
| | |\ \ \
| | * \ \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-03-0911-223/+205
| | |\ \ \ \
| | * \ \ \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-03-0616-111/+364
| | |\ \ \ \ \
| | * \ \ \ \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-03-053-2/+3
| | |\ \ \ \ \ \
| | * \ \ \ \ \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-03-0418-348/+786
| | |\ \ \ \ \ \ \
| | * \ \ \ \ \ \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-02-2717-676/+724
| | |\ \ \ \ \ \ \ \
| | * \ \ \ \ \ \ \ \ Merge remote-tracking branch 'upstream/develop' into evmjitPaweł Bylica2015-02-245-31/+104
| | |\ \ \ \ \ \ \ \ \
| | * \ \ \ \ \ \ \ \ \ Merge commit '444cc3d12c96a40b7b5b6832ec84afe83c403733' into evmjitPaweł Bylica2015-02-240-0/+0
| | |\ \ \ \ \ \ \ \ \ \
| | | * | | | | | | | | | Add EVMJIT.Gav Wood2015-02-2142-13376/+0
| * | | | | | | | | | | | Exception-throwing assert.chriseth2015-03-181-27/+2
| | |_|_|_|_|_|_|_|_|_|/ | |/| | | | | | | | | |
| * | | | | | | | | | | added test to check anonymous events with user specified topicsLiana Husikyan2015-03-171-1/+1
| * | | | | | | | | | | added anonymous to ABILiana Husikyan2015-03-173-3/+3
| * | | | | | | | | | | changed the position of 'anonymous' keyword: event <name>() anonymous.Liana Husikyan2015-03-173-13/+18
| * | | | | | | | | | | Added anonymous flag to event.Liana Husikyan2015-03-175-6/+20
| * | | | | | | | | | | Fix static variables.chriseth2015-03-171-6/+8
| * | | | | | | | | | | Add move assignment operator manually.chriseth2015-03-172-0/+7
| * | | | | | | | | | | Move memberlist to avoid unique_ptr copy.chriseth2015-03-171-13/+19
| * | | | | | | | | | | Fetch and store packed values.chriseth2015-03-178-105/+199
| * | | | | | | | | | | Compute packing offsets.chriseth2015-03-172-11/+114
| * | | | | | | | | | | Enlarge storage references to two stack slots.chriseth2015-03-179-134/+168
| * | | | | | | | | | | Merge pull request #1325 from LefterisJP/sol_MsgSigchriseth2015-03-172-1/+5
| |\ \ \ \ \ \ \ \ \ \ \
| | * | | | | | | | | | | Additional test for msg.sigLefteris Karapetsas2015-03-161-1/+2
| | * | | | | | | | | | | Adding msg.sig Solidity Magic typeLefteris Karapetsas2015-03-162-1/+4
| * | | | | | | | | | | | restyleingLiana Husikyan2015-03-162-11/+9
| * | | | | | | | | | | | - added more tests to check constant specifier implementationLiana Husikyan2015-03-163-2/+12
| * | | | | | | | | | | | - added isPartOfExternalInterface to DeclarationLiana Husikyan2015-03-165-15/+17
| * | | | | | | | | | | | added parsing for constant variablesLiana Husikyan2015-03-167-17/+42
| | |_|_|_|_|_|_|_|_|_|/ | |/| | | | | | | | | |
| * | | | | | | | | | | Fix gas for builtin.chriseth2015-03-145-2/+12
| |/ / / / / / / / / /
| * | | | | | | | | | Small FixedBytes type fixesLefteris Karapetsas2015-03-131-5/+2
| * | | | | | | | | | Some fixes on Types.cpp for FixedBytesTypeLefteris Karapetsas2015-03-121-10/+10
| * | | | | | | | | | Style fixes and some additional hash to bytes32 renamingLefteris Karapetsas2015-03-122-4/+4
| * | | | | | | | | | Style fixes in Types[cpp/h]Lefteris Karapetsas2015-03-122-5/+4
| * | | | | | | | | | byte is now an alias for byte1Lefteris Karapetsas2015-03-122-3/+6
| * | | | | | | | | | Fixing byte array index access code generationLefteris Karapetsas2015-03-122-3/+2
| * | | | | | | | | | Conversion changes after renaming Hash/String to Bytes.Lefteris Karapetsas2015-03-124-32/+47
| * | | | | | | | | | Most EndToEndTests are now compliant with the Bytes renamingLefteris Karapetsas2015-03-125-19/+25
| * | | | | | | | | | Bytes Tokens properly named and NameAndTypeResolution tests workLefteris Karapetsas2015-03-122-34/+37
| * | | | | | | | | | Fixes after rebasing on top of developLefteris Karapetsas2015-03-123-4/+3
| * | | | | | | | | | Replacing StaticStringType with FixedBytesTypeLefteris Karapetsas2015-03-124-60/+84
| * | | | | | | | | | More changes towards getting rid of HashXXLefteris Karapetsas2015-03-124-25/+16
| * | | | | | | | | | start of cleanupLefteris Karapetsas2015-03-122-67/+34
| | |_|_|_|_|_|_|_|/ | |/| | | | | | | |
| * | | | | | | | | Merge pull request #1268 from chriseth/sol_checkerFixesGav Wood2015-03-112-2/+4
| |\ \ \ \ \ \ \ \ \
| | * | | | | | | | | Fixed some checker warnings.chriseth2015-03-102-2/+4
| * | | | | | | | | | added brackets for printing in/outLiana Husikyan2015-03-102-7/+3
| * | | | | | | | | | added information about jump type for jump instructionsLiana Husikyan2015-03-104-6/+19
| |/ / / / / / / / /
| * | | | | | | | / Global variable "now" (alias for block.timestamp).chriseth2015-03-102-1/+12
| | |_|_|_|_|_|_|/ | |/| | | | | | |
| * | | | | | | | Style fixes.chriseth2015-03-091-2/+1
| * | | | | | | | Fixed: Some instructions did not have source locations.chriseth2015-03-094-60/+45
* | | | | | | | | fix rebase errorsLu Guanqun2015-03-091-33/+6
* | | | | | | | | add the location of a duplicated functionLu Guanqun2015-03-081-1/+2
* | | | | | | | | make it work for var x = f;Lu Guanqun2015-03-084-21/+32
* | | | | | | | | remove debug stuffLu Guanqun2015-03-081-13/+1
* | | | | | | | | implement overload resolutionLu Guanqun2015-03-088-39/+210
* | | | | | | | | the contract interfaces should take overloaded function into consideration TODO:Lu Guanqun2015-03-081-2/+6
* | | | | | | | | enhance DeclarationContainer to use `std::set` so that it can handle overload...Lu Guanqun2015-03-082-8/+27
* | | | | | | | | mark an identifier as callable if its next token is '('Lu Guanqun2015-03-082-3/+11
|/ / / / / / / /
* | | | | | | | Solidity fixes.Gav Wood2015-03-082-2/+2
* | | | | | | | Fixed gas calculation for CALL.chriseth2015-03-061-2/+3
* | | | | | | | Merge pull request #1222 from chriseth/sol_copyFromCalldatachriseth2015-03-069-161/+158
|\ \ \ \ \ \ \ \ | |_|_|_|_|_|_|/ |/| | | | | | |
| * | | | | | | Update Types.hchriseth2015-03-061-1/+1
| * | | | | | | Fix for arrays containing mappings.chriseth2015-03-062-2/+18
| * | | | | | | Copying between calldata and storage.chriseth2015-03-068-161/+142
* | | | | | | | Fix type checks for storage variable initializer.chriseth2015-03-062-27/+25
* | | | | | | | Merge branch 'poc9trie' of github.com:ethereum/cpp-ethereum into poc9trieGav Wood2015-03-060-0/+0
|\ \ \ \ \ \ \ \