Commit Graph

1735 Commits

Author SHA1 Message Date
356b22fa44 Expands contributing page to include guidelines. (#3218) 2018-05-23 17:10:23 +01:00
1137a0cc8f [CORDA-1458]: Prevent passwords from being logged as part of node's configuration. (#3223) 2018-05-23 13:51:40 +01:00
c3de65a545 Update tutorial-attachments.rst 2018-05-23 13:44:28 +01:00
48f89e9ff8 [CORDA-1526]: Ensure MDC is printed in logs only if not empty. (#3222) 2018-05-23 13:23:02 +01:00
9b01ef77c6 Clarifies that only stable H2 releases should be used. 2018-05-23 11:21:58 +01:00
cafcecec2b [CORDA-1264]: Mask internal errors if devMode is false. (#871) 2018-05-23 09:55:24 +01:00
57fce1dd16 Docs: Add a section on what data is visible to notaries (#3159) 2018-05-23 08:59:58 +01:00
d9510d9a22 ENT-1883 Adding the CRL generator (#857)
* Adding the empty CRL generation functionality

* Addressing review comments
2018-05-23 07:48:53 +01:00
c4f9f1cb68 Small refactoring of the HSM certificate generator (#869)
* Small refactoring of the HSM certificate generator

* Updating docs
2018-05-22 16:27:51 +01:00
c943a4d46b Moves whitepapers. (#3217) 2018-05-22 15:38:43 +01:00
766093c1aa Merge remote-tracking branch 'remotes/open/master' into merges/may-22-14-56
# Conflicts:
#	node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt
2018-05-22 14:57:59 +01:00
4d715e4d5c ENT-1940 Improve error checking for the db migration tool (#868)
* ENT-1940 Improve error checking for the db migration tool
2018-05-22 13:19:50 +01:00
fb70c4b69c Marked createComponentGroups as @CordaInternal (#3193) 2018-05-22 11:38:56 +01:00
e3b2d3332d Merge remote-tracking branch 'remotes/open/master' into merges/may-21-17-24
# Conflicts:
#	constants.properties
#	node-api/src/main/kotlin/net/corda/nodeapi/exceptions/RejectedCommandException.kt
#	node/src/main/kotlin/net/corda/node/internal/RpcAuthorisationProxy.kt
#	node/src/main/kotlin/net/corda/node/internal/SecureCordaRPCOps.kt
2018-05-21 17:29:26 +01:00
83e99cd583 Merge pull request #865 from corda/tudor-merge-21-05-18
Tudor merge 21 05 18
2018-05-21 19:17:00 +03:00
519aa56947 Fixing docs indentation for CRL (#864) 2018-05-21 17:05:14 +01:00
2ca11d7996 Merge remote-tracking branch 'open/master' into tudor-merge-21-05-18
# Conflicts:
#	.idea/compiler.xml
#	client/rpc/src/main/kotlin/net/corda/client/rpc/CordaRPCClient.kt
#	client/rpc/src/main/kotlin/net/corda/client/rpc/internal/CordaRPCClientUtils.kt
#	docs/source/generating-a-node.rst
#	finance/src/main/kotlin/net/corda/finance/contracts/asset/CommodityContract.kt
#	node-api/src/main/kotlin/net/corda/nodeapi/internal/ArtemisMessagingClient.kt
#	node/src/integration-test/kotlin/net/corda/node/amqp/AMQPBridgeTest.kt
#	node/src/integration-test/kotlin/net/corda/node/amqp/ProtonWrapperTests.kt
#	node/src/integration-test/kotlin/net/corda/node/services/rpc/RpcSslTest.kt
#	node/src/main/kotlin/net/corda/node/internal/Node.kt
#	node/src/main/kotlin/net/corda/node/services/config/ConfigUtilities.kt
#	node/src/main/kotlin/net/corda/node/services/config/NodeConfiguration.kt
#	node/src/main/kotlin/net/corda/node/services/config/SslOptions.kt
#	node/src/main/kotlin/net/corda/node/services/messaging/RPCMessagingClient.kt
#	node/src/main/kotlin/net/corda/node/services/rpc/NodeLoginModule.kt
#	tools/shell/src/integration-test/kotlin/net/corda/tools/shell/InteractiveShellIntegrationTest.kt
2018-05-21 13:49:59 +01:00
cda5a6a8f2 add RPC client examples of connection management (#3201) 2018-05-21 13:39:38 +01:00
b0b36b5b7d Merge pull request #3013 from corda/corda-platform-whitepaper
New Platform Intro Whitepaper
2018-05-21 12:51:31 +01:00
4d8ea047d5 Add extraConfig example. (#3185) 2018-05-21 12:42:23 +01:00
3ffbbf8087 Added favicon to docs.corda.net (#3199)
* Added favicon to docs.corda.net

* docs.corda.net favicon path fix
2018-05-21 11:49:56 +01:00
210a0bc9a5 Merge branch 'master' into os-merge-2907250 2018-05-21 11:26:23 +01:00
455221629b CORDA-1343 Make the RPCClient ssl constructors public. Clean up broke… (#3039)
* CORDA-1343 Make the RPCClient ssl constructors public. Clean up broker authentication logic

* CORDA-1343 small fix

* CORDA-1343 cleanup

* CORDA-1343 fixed api changes script

* CORDA-1343 fixed merge

* CORDA-1343 removed unused property

* CORDA-1343 add separate p2p and rpc node users

* CORDA-1343 remove test configuration

* CORDA-1343 fix tests

* CORDA-1343 address core review comments

* CORDA-1343 some documentation and adding createWithSsl method for a haAddressPool

* CORDA-1343 clean up the CordaRPCClient interface

* CORDA-1343 add internal shell test

* CORDA-1343 address code review comments

* CORDA-1343 split the internalShell user from the System Rpc user

* CORDA-1343 fix test

* CORDA-1343 Add warning when certificateChainCheckPolicies is being configured

* CORDA-1343 Address code review changes

* CORDA-1343 fix merge

* CORDA-1343 added test, docs, clarify comments

* CORDA-1343 clean up docs

* CORDA-1343 fix api

* CORDA-1343 fix merge

* CORDA-1343 fix merge

* CORDA-1343 fix merge

* CORDA-1343 fix merge
2018-05-21 13:05:08 +03:00
fc88cefbc8 CORDA-1288 Node properties can be set as system properties. (#3172) 2018-05-21 10:55:44 +01:00
152848730d Merge remote-tracking branch 'open/master' into os-merge-2907250
# Conflicts:
#	build.gradle
#	client/rpc/src/main/kotlin/net/corda/client/rpc/CordaRPCClient.kt
#	node-api/build.gradle
#	node-api/src/main/kotlin/net/corda/nodeapi/internal/serialization/amqp/custom/StringBufferSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/AllButBlacklisted.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/AttachmentsClassLoader.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/DefaultWhitelist.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/GeneratedAttachment.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/OrdinalIO.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/SerializationFormat.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/SerializationScheme.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/SerializeAsTokenContextImpl.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/SharedContexts.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/UseCaseAwareness.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/AMQPDescriptorRegistry.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/AMQPPrimitiveSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/AMQPSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/AMQPSerializerFactories.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/ArraySerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CollectionSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CorDappCustomSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/CustomSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializationInput.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializedGenericArrayType.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/DeserializedParameterizedType.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/EnumEvolutionSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/EnumSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/Envelope.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/EvolutionSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/FingerPrinter.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/MapSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/ObjectSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/PropertySerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/PropertySerializers.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/Schema.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializationHelper.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializationOutput.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SerializerFactory.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SingletonSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/SupportedTransforms.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/TransformTypes.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/TransformsSchema.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/BigDecimalSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/BigIntegerSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/BitSetSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/CertPathSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/ClassSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/ContractAttachmentSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/CurrencySerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/DurationSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/EnumSetSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/InputStreamSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/InstantSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/LocalDateSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/LocalDateTimeSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/LocalTimeSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/MonthDaySerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/OffsetDateTimeSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/OffsetTimeSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/OpaqueBytesSubSequenceSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/PeriodSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/PrivateKeySerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/PublicKeySerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/SimpleStringSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/ThrowableSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/X509CRLSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/X509CertificateSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/YearMonthSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/YearSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/ZoneIdSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/amqp/custom/ZonedDateTimeSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/carpenter/ClassCarpenter.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/carpenter/Exceptions.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/carpenter/MetaCarpenter.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/carpenter/Schema.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/carpenter/SchemaFields.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/kryo/CordaClassResolver.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/kryo/CordaClosureSerializer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/kryo/DefaultKryoCustomizer.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/kryo/Kryo.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/kryo/KryoSerializationScheme.kt
#	serialization/src/main/kotlin/net/corda/serialization/internal/kryo/SerializeAsTokenSerializer.kt
#	serialization/src/test/java/net/corda/serialization/internal/ForbiddenLambdaSerializationTests.java
#	serialization/src/test/java/net/corda/serialization/internal/LambdaCheckpointSerializationTest.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/ErrorMessageTests.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/JavaGenericsTest.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/JavaPrivatePropertyTests.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/JavaSerialiseEnumTests.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/JavaSerializationOutputTests.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/ListsSerializationJavaTest.java
#	serialization/src/test/java/net/corda/serialization/internal/amqp/SetterConstructorTests.java
#	serialization/src/test/kotlin/net/corda/serialization/internal/AttachmentsClassLoaderTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/ContractAttachmentSerializerTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/CordaClassResolverTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/ListsSerializationTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/MapsSerializationTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/PrivateKeySerializationTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/SerializationTokenTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/SetsSerializationTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/CorDappSerializerTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializeAndReturnEnvelopeTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializeMapTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializeNeedingCarpentryOfEnumsTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializeNeedingCarpentrySimpleTypesTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializeNeedingCarpentryTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializeSimpleTypesTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/DeserializedParameterizedTypeTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/EnumEvolvabilityTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/EnumEvolveTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/EnumTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/ErrorMessagesTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/EvolutionSerializerGetterTesting.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/EvolvabilityTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/FingerPrinterTesting.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/GenericsTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/OverridePKSerializerTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/PrivatePropertyTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/SerializationPropertyOrdering.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/SerializeAndReturnSchemaTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/amqp/StaticInitialisationOfSerializedObjectTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/ClassCarpenterTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/ClassCarpenterTestUtils.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/ClassCarpenterWhitelistTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/CompositeMemberCompositeSchemaToClassCarpenterTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/EnumClassTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/InheritanceSchemaToClassCarpenterTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/MultiMemberCompositeSchemaToClassCarpenterTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/carpenter/SingleMemberCompositeSchemaToClassCarpenterTests.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/kryo/KryoStreamsTest.kt
#	serialization/src/test/kotlin/net/corda/serialization/internal/kryo/KryoTests.kt
#	settings.gradle
2018-05-21 10:31:57 +01:00
2907250468 Mark HA notary design as deprecated (#3171)
This design is superseded by the CFT notary design.

* Mark HA notary design as deprecated
* Remove outdated HA notary service design
2018-05-21 09:57:29 +01:00
93245ac07d Set the confirmationWindowSize setting in the bridge Artemis link. To reduce spam logging and improve performance.
Fixup doc pictures to match CRL config change
2018-05-21 09:52:04 +01:00
eecb210a35 Clarifying the ident width in the code style guide (#3190) 2018-05-18 17:28:40 +01:00
3778f029df Merge branch 'master' into kat-merge-20180517 2018-05-18 14:42:05 +01:00
71aeb6c339 Improving revocation reason selection (#845)
* Improving revocation reason selection

* Addressing review comments - round 2
2018-05-18 14:29:57 +01:00
da6957e6d1 Fixes for the CRL feature after the first round of testing (#837)
* Fixes for the CRL feature after the first round of testing

* Addressing review comments

* Synchronising changes with OS

* Addressing review comments - round 2
2018-05-18 11:17:43 +01:00
74c5cffd38 Merge remote-tracking branch 'open/master' into kat-merge-20180517 2018-05-17 15:04:51 +01:00
0c3a30edc8 Corda-847 - Remove Kryo for RPC
It's no longer used as we've switched over to AMQP for RPC calls so
remove it from everywhere and only use it for checkpointing

 * Wire up demo bench post Kryo removal
 * Test Fixes
 * rebase and fix tests
 * Test Fix
 * wip
 * revert changes to api now we don't need to add annotations
2018-05-17 12:55:45 +01:00
0b76a12637 CORDA-864 Wire up max message size (#3057)
* add checks on message size
* added size check in AMQP bridge
* passing maxMessageSize to AMQPClient and server
* added Interceptor to enforce maxMessageSize on incoming messages
2018-05-17 09:59:30 +01:00
cb882ad694 Removes outdated information from scheduling tutorial. (#3175) 2018-05-17 09:09:07 +01:00
a5a860c52e First pass doc on the bridge.conf configuration file.
More doc work on bridge

Fixup docs with regard to HA changes discovered during testing

Link to bridge docs and add note about Zookeeper prerequisite.

Doc in progress

Add operating modes to overview doc

Change to BridgeInner from FloatInner

Add diagram to worked configuration section

Fix some typos and comments from PR reviews

Try to tidy up some of the wording.

Add new config properties and change to subsection headers for mode discussion
2018-05-17 08:52:49 +01:00
0ee116a1d9 CORDA-1476 Adding TLS certificate CRL extension point configs (#3140)
* Adding TLS certificate CRL extension point configs

* Addressing review comments

* Addressing review comments - round 3
2018-05-17 08:21:24 +01:00
23a0a66128 Merge remote-tracking branch 'open-source/master' into thomas-merge-3d50e73271cb3bbd95822575349995c9771729dd 2018-05-16 15:30:46 +01:00
46eda8edd9 Merge commit '3f2e653f0' into mike-merge-413f476a3 2018-05-15 19:00:05 +02:00
0c38a63486 Update generating-a-node.rst 2018-05-15 17:37:09 +01:00
502088d798 Update generating-a-node.rst 2018-05-15 17:36:17 +01:00
62265088ba Merge commit '7b26f4ecb' into mike-merge-413f476a3 2018-05-15 18:20:37 +02:00
6030c01b21 Merge commit 'c7bfc8f65' into mike-merge-413f476a3 2018-05-15 18:20:30 +02:00
e64adca122 Merge commit '3a80cdfb6' into mike-merge-413f476a3 2018-05-15 18:20:21 +02:00
9a7535085b Merge commit 'b2c28cb52' into mike-merge-413f476a3 2018-05-15 18:20:11 +02:00
b3ba32f24c Merge commit '9cf06dff1' into mike-merge-413f476a3 2018-05-15 18:19:59 +02:00
89abd8c8f8 Merge commit '7b6284c50' into mike-merge-413f476a3 2018-05-15 18:19:41 +02:00
e87dd9258f Merge commit '3baf27bbc71a77d8f3190eaeff812f7ff522002c' into mike-merge-413f476a3 2018-05-15 18:09:56 +02:00
3f2e653f01 Update references to point to new repo and remove other redundant references. (#3151) 2018-05-15 17:09:50 +01:00
12fa4741a6 Merge commit '8cac69d2522ae37b2bb976347b5aad853c04795a' into mike-merge-413f476a3 2018-05-15 18:09:16 +02:00