Commit Graph

312 Commits

Author SHA1 Message Date
Stanislav Tkach 1df8ac9751 Use $crate inside of native_executor_instance and parameter_types macros (#2702)
* Use  inside of native_executor_instance macro

* Same for the parameter_types macro
2019-05-28 17:14:48 +02:00
Shawn Tabrizi 902c9d03f2 Update docs on Imbalance in the Balances module (#2704)
* Update docs on `Imbalance` in the Balances module

* Update lib.rs
2019-05-28 15:10:18 +02:00
Svyatoslav Nikolsky 549d9e1da1 Remove BlockNumber <-> u64 conversions from light-client related code (#2666)
* Remove As usage from CHT

* Remove As usage from CHT (continue)

* Restrict BN <-> int conversions in CT

* more BN <-> u64 conversions removed

* upd spec_version

* Apply suggestions from code review

Co-Authored-By: Gavin Wood <github@gavwood.com>

* Apply suggestions from code review

Co-Authored-By: Gavin Wood <github@gavwood.com>

* more grumbles

* fix last grumbles + compilation

* too long lines

* too long lines
2019-05-28 15:07:16 +02:00
Bastian Köcher e2d1d0c951 Fix doc propagation for Call enum (#2690)
* Fix doc propagation for `Call` enum

* Fix warnings while generating `srml-staking` docs

* Make the line check happy
2019-05-25 21:03:27 +02:00
thiolliere ffce18b994 Contract restoration (#2502)
* partial impl

* more checks

* improve TestExternalities + tests

* make tombstone raw to derive Eq

* remove before merge

* add test

* fmt

* update test

* doc

* bump version

* fix testing

* update runtime

* Fix TrieIdGenerator

* fix dummy trie id generator

* update test

* bump version

* format

* Update core/state-machine/src/testing.rs

Co-Authored-By: cheme <emericchevalier.pro@gmail.com>

* document test

* Apply suggestions from code review

Co-Authored-By: DemiMarie-temp <50585338+DemiMarie-temp@users.noreply.github.com>

* refactor

* fix

* fmt

* address review

* impl last_write

* Fix storage size, test, remove size in tombstone

* fix

* Update srml/contract/src/lib.rs

Co-Authored-By: Sergei Pepyakin <s.pepyakin@gmail.com>

* comment

* child_storage_root as &[u8]
2019-05-23 15:09:16 +02:00
Sergei Pepyakin 12f052ce9d srml-contract: update ext_random(_seed) (#2635)
* Initial implementation.

* Rename random_seed to random

* Update rustdocs

* Update COMPLEXITY.md

* Fix comment.

* Limit the size of subject.

* Bump the runtime version.

* Fix doc

* Update node/runtime/src/lib.rs

Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>
2019-05-23 10:34:17 +01:00
Luke Schoen b017e683dc docs: Update Support SRML to link to StorageDoubleMap in Rustdocs (#2646)
* docs: Update Support SRML to link to StorageDoubleMap in Rustdocs

* review-fix: Add missing backticks. Add trait text for consistency. Fix typo

* review-fix: Move trait text out of link
2019-05-23 10:34:00 +01:00
thiolliere 1e35552c14 get rid of refcell, use &mut storage (#2659) 2019-05-23 10:08:19 +01:00
Gavin Wood 3860d7c810 Remove As (#2602)
* Start to remove the `As` bound on `SimpleArtithmetic`

This just introduces standard numeric bounds, assuming a minimum of
`u32`. Also included is a saturating from/into trait allowing ergonomic
infallible conversion when you don't care if it saturates.

* Remove As from Balances trait

* Remove As from Aura module

* Remove As from Babe module

* Expunge `As` from contract

* Council module

* Democracy

* Finality tracker

* Grandpa

* First bit of indices

* indices

* Line lengths

* session

* system

* Staking

* Square up all other uses of As.

* RHD update

* Fix build/test

* Remove As trait

* line widths

* Remove final As ref

* Update srml/staking/src/lib.rs

Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>

* Update core/client/src/cht.rs

Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>

* Update core/client/db/src/light.rs

Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>

* whitespace

* Apply suggestions from code review

Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
Co-Authored-By: André Silva <andre.beat@gmail.com>

* Bring back u32 check for number on CLI
2019-05-22 23:11:38 +01:00
Luke Schoen 1ce221f0d8 docs: Rephrase EnumerableStorageMap comment in Rustdocs (#2647) 2019-05-22 09:18:18 +02:00
thiolliere 57f306a3c1 Reserve function name (#2609)
* reserve function name

* bumpd impl version

* Revert "bumpd impl version"

This reverts commit 03a23e308312d857bdfd3c90ff564b4b11347530.

* add test

* update test

* update lock

* Fix test on stable
2019-05-21 17:07:30 +02:00
Amaury Martiny e24b18f844 Remove remains from metadata v0 (#2610)
* Remove rests for metadata v0

* bump impl_version
2019-05-17 10:49:08 +02:00
thiolliere aa2c496a65 Make perthings operate in type operator (#2501)
* perthings operate in type operator

* implementation with rem

* fmt

* doc

* better fmt

* bump version

* Tests for pet-things

* demonstrate output as type of operation

* Remove redundant assertions.

* rename test

* update lock

* bump impl version
2019-05-15 18:48:58 +02:00
Bastian Köcher fcf9a46bcc Forward the result in a sudo call (#2594)
* Forward the result in a sudo call

* Print the error of the wrapped call in `sudo`
2019-05-15 18:14:33 +02:00
joe petrowski 4eb18ef2ac add quantization test for on_dilution (#2595) 2019-05-15 18:13:37 +02:00
thiolliere 2893a613c2 increase block gas limit (#2597) 2019-05-15 18:11:05 +02:00
Bastian Köcher d50b717ff6 Generate correct serde bound for GenesisConfig (#2585)
* Generate correct serde bound for GenesisConfig

* Handle double map as well

* Adapt double map test
2019-05-15 11:54:00 +02:00
Sergei Pepyakin d57f6f9305 Pass topics along with events (#2563)
* Introduce an IndexedEvent

* Plumb topics through the Ext interface.

* Add topics to ext_deposit_event

* Charging for events.

* Check the number of topics.

* Check for duplicate topics.

* Bump API version.

* Move derive(*Eq) under test.

* Use sorting for finding duplicates.
2019-05-14 12:09:51 +02:00
joe petrowski 580432d822 Fix over/under flow risk in OnDilution (#2548)
* fix over/under flow risk in OnDilution

* bump impl
2019-05-14 12:07:32 +02:00
Gavin Wood 20e809668b Introduce the Get trait and type_parameter. (#2565) 2019-05-13 20:58:57 +02:00
Sergei Pepyakin 21773b3a07 Light client friendly events (#2491)
* Sketch of indexed events.

* Get EventIndex by holding another variable.

* Add some docs.

* Use DoubleMap to store reverse topic index

* Implement StorageDoubleMap::append

* Use append for EventTopics.

* Refactor.

* Avoid `mutate`

* Docs.

* Add topics to EventRecord

* Update tests.

* Rebuild.

* Bump version.

* Event topics test.

* Mix in BlockNumber to distinguish updates

* Fix srml-system test.

* Post merge fixes.

* Comments/TODO.
2019-05-13 20:56:01 +02:00
thiolliere 2b694b5898 contruct_runtime doc (#2552) 2019-05-13 14:15:26 +02:00
Joshy Orndorff 3b534c1cc6 Changed all occurences of referendums to referenda. Updated spec versions. (#2545) 2019-05-13 11:37:47 +02:00
André Silva 9d23d2a25a Bump master to v2.0.0 (#2514)
* bump crates to v2.0.0

* fix crate authors

* bump node runtime spec_version

* remove unused import for no-std
2019-05-10 16:55:15 +02:00
thiolliere ac195a0060 add brief doc to some macro (#2523)
* add doc

* Update lib.rs
2019-05-10 14:21:03 +02:00
thiolliere dfbaedd535 Allow modules to validate transaction, second attempt (#2463)
* first impl

* rename origin::inherent to none

* fix

* fix

* Apply suggestions from code review

Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>

* comment

* better error

* doc

* (add unsigned module 🤦)

* doc

* fix

* implement for node-template as well

* add validated unsigned to executor

* fix

* fix

* bump version

* testing xt

* remove extraneous logic

* licence

* impl test
2019-05-10 14:13:04 +02:00
Kian Peymani 71426fb060 Reformat Validator Election (#2406)
* Add index caching to election

* Initial draft of the new phragmen API.

* Port post-processing to the new API.

* Fix tests and accuracy.

* Final fixes.

* Unify convert namings.

* Remove todo.

* Some typos.

* Bump.

* Add extended balance type doc.

* A bit more sophisticated weight compensation.

* Fix review feedbacks.

* Bump.

* Final updates
2019-05-09 19:05:45 +02:00
Xiliang Chen 57164aa747 Remove As trait bound from Currency::Balance (#2205)
* remove As<64> bond

* Currency trait refactor

* bump spec version
2019-05-09 09:40:28 +02:00
thiolliere d380db706b actually update deduct_block when paying rent (#2490)
* actually update deduct_block when paying rent

* add test

* remove println

* same block call test

* bump version
2019-05-07 14:13:56 +02:00
Gavin Wood adba89913e Clean up random seed to make a bit more flexible (#2456)
* Reformulate random seed to be more random

- First 80 random values come from cycling the incomplete series (
  instead of filling with zeroes)
- Calculate random material each usage (use a single amalgamated
  ring buffer to store them for avoiding 81 lookups each time)
- Mutate inputs by hashing each with:
  - its index (into the 81)
  - an additional "subject" key provided by caller

This keeps the final output low-influence while still allowing
it to be used as the seed to independent contexts. (Hashing the
result to give the final seed is no better than using parent_hash).

* Docs

* Bump runtime

* Update notes

* Remove feature(alloc)

* Update srml/system/src/lib.rs

Co-Authored-By: gavofyork <github@gavwood.com>
2019-05-06 13:57:30 +02:00
thiolliere b0c21da94f optimize double map first key hash (#2451)
* fix double map encoding it is now encoded as specified in the doc
2019-05-06 08:44:36 +02:00
Andrew Jones 9fdd7df582 Default rent allowance to max_value (#2461)
* Default rent allowance to max_value

* Bump spec version

* Fix exec test

* Address grumbles

* Make test comment less specific

* Default rent_allowance to max_value in exec

* Check default balance on creation

* Check default balance in deploy

* Use hex constant

Co-Authored-By: ascjones <ascjones@gmail.com>

* More specific code const

Co-Authored-By: ascjones <ascjones@gmail.com>

* Update srml/contract/src/tests.rs

Co-Authored-By: ascjones <ascjones@gmail.com>

* Update srml/contract/src/tests.rs

Co-Authored-By: ascjones <ascjones@gmail.com>

* Update srml/contract/src/tests.rs

Co-Authored-By: ascjones <ascjones@gmail.com>
2019-05-04 13:59:14 +02:00
Sergei Pepyakin 79e4c6f870 Change terminology referring balance units in contract docs (#2450) 2019-05-02 18:09:17 +02:00
DemiMarie-parity fb19684358 BABE signing and verification (#2270)
* Add basic BABE consensus type

* Update core/consensus/babe/slots/Cargo.toml

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Fix parameterization and run `rustfmt`

* Respond to review comments

* Update various Cargo.lock files

* Revert "Update various Cargo.lock files"

This reverts commit af53d7624752a744320e9cbb25749fdd8e6f46d2.

* `BabeSealSignature` → `BabeSeal`

* Move slot code to its own crate

This was highly non-trivial, due to cyclic dependencies.

* Remove redundancy between AuRa and BABE

Some of the code duplication was removed using a macro.

* Fix build error

* Avoid non-`#[doc(hidden)]` re-exports

Also, bump some library versions in `Cargo.toml`.

* Remove dead code in AuRa

* Remove impl_slot macro

It was more trouble than it was worth.

Also, delete useless dependencies on Serde.

* AuRa and BABE need different DB keys

* Bring back `aura::Network`, but deprecate it.

* Improve docs and add `slot_duration` inherent method

* Add docs to `substrate_consensus_aura::SlotDuration`

* Add missing documentation and #![forbid(missing_docs, unsafe_code)]

* Add a #![forbid(missing_docs)]

* Remove dependency of `test-runtime` on `slots`

* Update core/consensus/babe/src/lib.rs

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Remove wrongly added file

* Fix copyright notice

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Bump `impl_version` and `spec_version`

* Add more code to BABE

Most of it is copied from AuRa code, but at least the initial core is
there.

* Stuck on horrible compiler error message

* add missing files

* Spaces → tabs

* Simplify code

* Fix compilation

This involved fixing dependencies and adding a `Mutex`.

* More work on BABE

* Fix deprecation version

* Fix deprecation version; remove spurious carets

* Fix Cargo.toml

* Implement VRF signing logic

* The import queue code compiles, though it probably doesn’t work.

* Add VRF verification

* Update Cargo.lock

* Update dependencies

* Move test network to sr25519 authority keys

* Fix accidental build bustage

* Trying to get the tests to work

* Add logging messages and remove dead code

There seems to be a problem with the test network.  Since AuRa and BABE
are both affected, this is most likely due to the switch from ed25519 to
sr25519.

* Trying to get the tests to work

* Add logging messages and remove dead code

There seems to be a problem with the test network.  Since AuRa and BABE
are both affected, this is most likely due to the switch from ed25519 to
sr25519.

* Working testsuite at last!

The problem was with serialization and deserialization.  Normally,
those functions are generated automatically, but those for `BabeSeal`
had to be written manually.  The hand-written versions were not
correct, however, as shown by the decoder not being able to decode the
output of the encoder.

* Enable BabeSeal::Encode asserts in --release tests

* Bump runtime and dependency versions

* Fix wasm compilation

The wasm build was broken because of a typo in
`core/test-runtime/src/lib.rs`, and missing gates on the `std` feature
in `core/consensus/{aura,babe}/primitives/Cargo.toml`.  Additionally,
improve the quotation in the build scripts.

* Merge Cargo.lock

* Change expected JSON string

The test was also broken on `master`, so I suspect that the test was
incorrect.

* Responded to review

* Remove hard-coded threshold from production code

A hard-coded threshold is now only used in tests.

* Fix swapped doc comments

* Fix unused import warnings

* fix ci error

* fix typo

* Fix spacing in docs

* Minor changes suggested by @joepetrowski

on https://github.com/paritytech/substrate/pull/2372

* Remove unnecessary getters

* fix compile error

* Fix silly unused-variable error

* Improve documentation formatting

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Add issue links

* Revert excess verbosity and #![forbid(warnings)]

* Apply suggestions from code review

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Reformat some comments

* Threshold should depend on number of validators

Also, respond to code review

* Fix silly compilation errors

* Reduce logging verbosity

* Fix missing import
2019-05-02 11:16:54 -04:00
Jordan Beauchamp b6d5f6858c Macro spell fixes (#2442) 2019-05-01 09:49:51 +02:00
Shawn Tabrizi 407511100c Add pub to functions in Contract module (#2399)
* Add `pub` to functions in Contract module

This is to support a wrapper module which will add an access control layer to the SRML Contract module.

* Remove `pub` from `on_finalize`
2019-04-30 15:53:31 +02:00
thiolliere c7d9ca379d Contract accounting removal (#2230)
* first partial implementation

* update rent allowance

* fmt

Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>

* remove comments

* reward surcharge claims

* remove rent allowance in param + code_hash changed

* Fix bug

* fix tests

* fmt

* impl getter setter rent allowance

* fmt

Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>

* comments

* doc + be->le

* doc

* doc

* fix improve fast return

* renamings

* rename + COMPLEXITY

* COMPLEXITY

* add test

* etrinsic claim surcharge delay configurable

* comment addressed

* move and rewrite of pay_rent

* remove child trie

* fmt

* use derive

* arithmetic operation

* fix

* fix storage root + checked_mul + test

* WIP: test

* WIP

* add tests and fix

* fmt

* typo and doc suggestions

Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>

* WIP

* address some comments

divide tests + some docs

* use br_table

* remove unused function

* Bump the runtime version

* insert_with

* Add some comments.

* Refactor

* Shuffle and fix comments

* More comment fixes.

* dues limited

* Add comment

* Handicap

* Docs.

* Apply suggestions from code review

Co-Authored-By: pepyakin <s.pepyakin@gmail.com>

* Coalesce block_passed in a block

* Fix build

* Paid → Ok

* match → if

* Imrpove handicap description
2019-04-30 09:41:33 +02:00
thiolliere bb9746c798 store contract keys with blake2_256 (#2414)
* store contract keys with blake2_256

* bump version
2019-04-29 16:13:45 +02:00
Luke Schoen 39197f58f4 refactor: Remove duplicate line. Show on separate lines to fix formatting (#2402) 2019-04-29 09:40:08 +02:00
thiolliere 2b10d8e080 decl_storage document hasher choice (#2387)
* doc

* fix

* grammar and line wrapping

* small changes to end

* Update lib.rs

* update after demi's review
2019-04-27 16:33:21 +02:00
Bastian Köcher 3c988ea7e9 Read locks once and not 2 times (#2394) 2019-04-27 14:14:00 +02:00
Michael Müller a0e0d9b03d Fix typos and markdown (#2388)
* Fix typos

* Align properly

* Update core/consensus/slots/src/lib.rs

Co-Authored-By: cmichi <mich@elmueller.net>

* Update core/network/src/test/mod.rs

Co-Authored-By: cmichi <mich@elmueller.net>

* Update core/finality-grandpa/src/communication/mod.rs

Co-Authored-By: cmichi <mich@elmueller.net>

* Update core/consensus/common/src/import_queue.rs

Co-Authored-By: cmichi <mich@elmueller.net>
2019-04-26 14:09:13 +02:00
thiolliere 07d495d905 remove use of hidden api in support procedural (#2383) 2019-04-25 15:48:18 +02:00
Stanislav Tkach 0f02bed702 Update hex-literal version, simplify imports and remove unused dependencies (#2371) 2019-04-25 11:17:40 +02:00
Bastian Köcher f0862606b7 Forward port blake2 storage support (#2360)
* move storage maps to blake2_128 (#2268)

* remove default hash, introduce twox_128 and blake2

* use blake2_128 & create ext_blake2_128

* refactor code

* add benchmark

* factorize generator

* fix

* parameterizable hasher

* some fix

* fix

* fix

* fix

* metadata

* fix

* remove debug print

* map -> blake2_256

* fix test

* fix test

* Apply suggestions from code review

Co-Authored-By: thiolliere <gui.thiolliere@gmail.com>

* impl twox 128 concat (#2353)

* impl twox_128_concat

* comment addressed

* fix

* impl twox_128->64_concat

* fix test

* Fix compilation and cleanup some docs

* Apply suggestions from code review

Co-Authored-By: bkchr <bkchr@users.noreply.github.com>
2019-04-24 11:05:22 +02:00
Luke Schoen 21d1ee4e99 Documentation for the Session Module (#2283)
* WIP

* fix: Redo session module docs incorporating approach used by Joe in democracy

* remove unncessary quotes

* docs: Add example from srml to session module docs

* replace asterix with dash

* session start

* make example compile

* index html updates

* Update lib.rs
2019-04-23 22:30:30 +02:00
Mokhtar Naamani bd6427a268 set reasonable value for bonding_duration in chainspec staging config (#2289)
* set reasonable value for bonding_duration in chainspec staging config

* set default bonding_duration to 1, and bump runtime version

* Update node/cli/src/chain_spec.rs

Co-Authored-By: mnaamani <mokhtar.naamani@gmail.com>

* Update node/cli/src/chain_spec.rs

Co-Authored-By: mnaamani <mokhtar.naamani@gmail.com>

* Update srml/staking/src/lib.rs

Co-Authored-By: mnaamani <mokhtar.naamani@gmail.com>
2019-04-23 22:26:09 +02:00
Nicole Zhu 01ba9adb63 Documentation: Treasury module (#2269)
* Add: draft of treasury doc

* Update srml/treasury/src/lib.rs

Co-Authored-By: nczhu <nicole@parity.io>
2019-04-23 19:03:33 +01:00
Luke Schoen f1f01f8212 Documentation for example module (#1947)
* WIP: SRML Example Module README

* add newlines

* review-fix: Change const to let. Explain generic usage more

* refactor: Remove example steps 2 and 3. User can refer to other examples to figure it out

* fix: Update to incorporate approved approach of staking module docs in PR #1951

* fix: Move into expandable Details arrow and fix syntax so appears correctly in rust docs

* fix: Fix linting

* docs: Add Public Dispatchable functions

* fix: Rearrange to use Simple Code Snippet and Examples from SRML

* fix: Remove duplicate Dispatchable Functions section

* fix: Remove Implementation Details as requested by Gav
2019-04-23 19:01:58 +01:00
Luke Schoen 5fe4c4591d Documentation for assets module (#1945)
* WIP - SRML Assets Module README

* docs: Tweaks for consistency

* docs: Add missing newline

* review-fix: Remove non-SRML trait dependencies

* review-fix: Replace const with let

* review-fix: Remove use of compact in signature

* review-fix: Change const to let since cannot use result of function call

* fix: Add backticks around type and mention type it derives from

* review-fix: Update variable names since changed to lowercase since using let

* fix: Change type to bold instead of code

* review-fix: Update Asset module

* refactor: Consistent bullet points. Remove whitespace between items

* review-fix: Remove useless blah

* review-fix: Remove Storage Items

* review-fix: Remove Types

* review-fix: Remove duplicate instructions

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* Update srml/assets/src/lib.rs

Co-Authored-By: ltfschoen <ltfschoen@users.noreply.github.com>

* review-fix: Remove since will be replaced after macro expansion #2068 as per comment

* review-fix: Move Goals within overview

* fix: Fix indentation

* style and a few minor changes

* remove Events

* capitalization

* docs: Reword the Goals to remove mention of cold wallets based on discussion with Joe

* Wording

* Update lib.rs

* Update lib.rs

* Update lib.rs
2019-04-23 18:59:17 +01:00