Преглед изворни кода

Merge branch 'development' into monorepo-update-from-development

Mokhtar Naamani пре 5 година
родитељ
комит
2a717caf85

+ 21 - 1
CHANGELOG.md

@@ -1,8 +1,28 @@
+### Version 6.8.0 (Rome release) - March 9th 2020
+- New versioned and permissioned content mangement system that powers a new media experience.
+- Content Working Group - introduces staked content curator roles to maintain quality of content and ensure that is meets the platform's terms of service.
+- Update of core substrate to pre-release of version 2.0 - [c37bb08](https://github.com/paritytech/substrate/commit/c37bb08535c49a12320af7facfd555ce05cce2e8)
+
+### Version 5.4.0 (Acropolis) - Athens testnet update 3 - June 22n 2019
+- New Forum - v1.0.0
+- Discovery Service to support new Storage Provider implementation.
+- Removing all previously uploaded content
+
+### Version 5.3.0 - Athens testnet update 2 - April 27th 2019
+- Fix to configure an onchain primary storage provider liason to work around incomplete storage server implementation.
+
+### Version 5.2.0 - Athens testnet update 1 - April 17th 2019
+- Fix account locking for staked roles to allow storage providers to submit transaction
+- Update substrate version to `6dfc3e8b057bb00322136251a0f10305fbb1ad8f` from v1 branch
+
+### Version 5.1.0 - Athens testnet release - April 14th 2019
+- Storage Role
+- Update to substrate version at `89bbb7b6d0e076f0eda736b330f5f792aa2e2991`
+
 ### Version 4 - Bug Fixes - March 4th 2019 - `9941dd`
  - Allow illiquid accounts to pay transaction fees. Fixes unstaking and setting memo, by permitting extrinsics which do not require more than a transaction fee to be accepted into mempool.
  - Updated Cargo dependencies to use forked substrate repo `github.com/joystream/substrate`
 
-
  On-chain runtime upgrade performed with sudo `consensus::setCode()`
 
 ### Version 3 - Sparta - March 1st 2019 - `1ca4cc`

+ 26 - 26
Cargo.lock

@@ -100,7 +100,7 @@ version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502"
 dependencies = [
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -589,9 +589,9 @@ dependencies = [
 
 [[package]]
 name = "failure"
-version = "0.1.6"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9"
+checksum = "b8529c2421efa3066a5cbd8063d2244603824daccb6936b079010bb2aa89464b"
 dependencies = [
  "backtrace",
  "failure_derive",
@@ -599,12 +599,12 @@ dependencies = [
 
 [[package]]
 name = "failure_derive"
-version = "0.1.6"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08"
+checksum = "030a733c8287d6213886dd487564ff5c8f6aae10278b3588ed177f9d18f8d231"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
  "synstructure",
 ]
@@ -1004,7 +1004,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -1037,7 +1037,7 @@ checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
 
 [[package]]
 name = "joystream-node-runtime"
-version = "6.5.0"
+version = "6.8.0"
 dependencies = [
  "parity-scale-codec",
  "safe-mix",
@@ -1894,7 +1894,7 @@ checksum = "5a0ec292e92e8ec7c58e576adacc1e3f399c597c8f263c42f18420abe58e7245"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -2015,7 +2015,7 @@ checksum = "6d4dc4a7f6f743211c5aab239640a65091535d97d43d92a52bca435a640892bb"
 dependencies = [
  "proc-macro-hack 0.5.11",
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -2090,7 +2090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -2141,9 +2141,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.2"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
+checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f"
 dependencies = [
  "proc-macro2 1.0.9",
 ]
@@ -2502,7 +2502,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -2672,7 +2672,7 @@ dependencies = [
  "blake2-rfc",
  "proc-macro-crate",
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -2991,7 +2991,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c37bb08535c49a1232
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -3036,7 +3036,7 @@ version = "2.0.0"
 source = "git+https://github.com/paritytech/substrate.git?rev=c37bb08535c49a12320af7facfd555ce05cce2e8#c37bb08535c49a12320af7facfd555ce05cce2e8"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "sr-api-macros",
  "srml-support-procedural-tools",
  "syn 1.0.16",
@@ -3049,7 +3049,7 @@ source = "git+https://github.com/paritytech/substrate.git?rev=c37bb08535c49a1232
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "srml-support-procedural-tools-derive",
  "syn 1.0.16",
 ]
@@ -3060,7 +3060,7 @@ version = "2.0.0"
 source = "git+https://github.com/paritytech/substrate.git?rev=c37bb08535c49a12320af7facfd555ce05cce2e8#c37bb08535c49a12320af7facfd555ce05cce2e8"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -3315,7 +3315,7 @@ version = "2.0.0"
 source = "git+https://github.com/paritytech/substrate.git?rev=c37bb08535c49a12320af7facfd555ce05cce2e8#c37bb08535c49a12320af7facfd555ce05cce2e8"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
 ]
 
@@ -3820,7 +3820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "unicode-xid 0.2.0",
 ]
 
@@ -3831,7 +3831,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
  "unicode-xid 0.2.0",
 ]
@@ -4279,7 +4279,7 @@ dependencies = [
  "lazy_static",
  "log",
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
  "wasm-bindgen-shared",
 ]
@@ -4303,7 +4303,7 @@ version = "0.2.59"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0f6fde1d36e75a714b5fe0cffbb78978f222ea6baebb726af13c78869fdb4205"
 dependencies = [
- "quote 1.0.2",
+ "quote 1.0.3",
  "wasm-bindgen-macro-support",
 ]
 
@@ -4314,7 +4314,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "25bda4168030a6412ea8a047e27238cadf56f0e53516e1e83fec0a8b7c786f6d"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
@@ -4492,7 +4492,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2"
 dependencies = [
  "proc-macro2 1.0.9",
- "quote 1.0.2",
+ "quote 1.0.3",
  "syn 1.0.16",
  "synstructure",
 ]

+ 6 - 2
Cargo.toml

@@ -4,7 +4,7 @@ edition = '2018'
 name = 'joystream-node-runtime'
 # Follow convention: https://github.com/Joystream/substrate-runtime-joystream/issues/1
 # {Authoring}.{Spec}.{Impl} of the RuntimeVersion
-version = '6.5.0'
+version = '6.8.0'
 
 [features]
 default = ['std']
@@ -60,6 +60,10 @@ std = [
     'storage/std',
 ]
 
+# [dependencies]
+# # https://users.rust-lang.org/t/failure-derive-compilation-error/39062
+# quote = '<=1.0.2'
+
 [dependencies.babe]
 default-features = false
 git = 'https://github.com/paritytech/substrate.git'
@@ -347,4 +351,4 @@ version = '1.0.0'
 default_features = false
 package = 'substrate-storage-module'
 path = 'runtime-modules/storage'
-version = '1.0.0'
+version = '1.0.0'

+ 13 - 15
README.md

@@ -3,29 +3,23 @@
 # Joystream Runtime
 
 The runtime is the code that defines the consensus rules of the Joystream protocol.
-It is compiled to WASM and lives on chain. [Full nodes](https://github.com/Joystream/substrate-node-joystream) execute the code's logic to validate transactions and blocks on the blockchain.
+It is compiled to WASM and lives on chain.
+[Full nodes](https://github.com/Joystream/substrate-node-joystream) execute the code's logic to validate transactions and blocks on the blockchain.
 
-The joystream runtime builds on [substrate v1.0](https://docs.substrate.dev/docs) and adds additional functionality:
+The joystream runtime builds on a pre-release version of [substrate v2.0](https://substrate.dev/) and adds additional
+functionality to support the [various roles](https://www.joystream.org/roles) that can be entered into on the platform.
 
-- [Council elections](src/governance/election.rs)
-- [Runtime Upgrade proposal system](src/governance/proposals.rs)
-- [User membership system](src/membership/)
-- [Staked Roles](src/roles)
-   - [Storage Provider](src/storage/)
 
 ### Prerequisites
 
-To compile the runtime you will need some tools such as: Rust, llvm and openssl. You can install most of the dependencies with:
-
-```bash
-curl https://getsubstrate.io -sSf | bash -s -- --fast
-```
-
 ## Getting Started - Building the WASM runtime
 
 ```bash
+# Clone repository
 git clone https://github.com/Joystream/substrate-runtime-joystream
 cd substrate-runtime-joystream/
+
+# Install Pre-requisits
 ./setup.sh
 cargo build --release
 ```
@@ -50,7 +44,7 @@ Deploying the compiled runtime on a live system can be done in one of two ways:
 cargo test
 ```
 
-### Coding style
+## Coding style
 
 We use `rustfmt` to format the source code for consistency.
 
@@ -66,13 +60,17 @@ Running rustfmt can be applied to all source files recursing subfolders:
 rustfmt src/*.*
 ```
 
+## Reproducible Builds
+
+In an attempt to have a reproducuble version of the runtime that can be verified independantly (by council members for example when deciding wether to vote in a runtime upgrade proposal) there is a `build-with-docker.sh` script which can be run to generate a `joystream_runtime.wasm` file to the current directory.
+
 ## Built With
 
 * [Substrate](https://github.com/paritytech/substrate)
 
 ## Contributing
 
-Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us.
+Please see our [contributing guidlines](https://github.com/Joystream/joystream#contribute) for details on our code of conduct, and the process for submitting pull requests to us.
 
 ## Versioning
 

+ 0 - 248
banner.svg

@@ -1,248 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 882 300" style="enable-background:new 0 0 882 300;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#C4C3C6;}
-	.st1{fill:#FFFFFF;}
-	.st2{fill-rule:evenodd;clip-rule:evenodd;}
-	.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#C4C3C6;}
-	.st4{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
-	.st5{fill:#010101;}
-	.st6{fill:none;}
-	.st7{fill-rule:evenodd;clip-rule:evenodd;fill:#B1B2B7;}
-	.st8{fill-rule:evenodd;clip-rule:evenodd;fill:#FDFDFD;}
-	.st9{fill-rule:evenodd;clip-rule:evenodd;fill:#F9F9F9;}
-</style>
-<g id="Layer_4">
-	<path d="M876,209H6c-3.3,0-6-2.7-6-6V6c0-3.3,2.7-6,6-6h870c3.3,0,6,2.7,6,6v197C882,206.3,879.3,209,876,209z"/>
-</g>
-<g id="Layer_2">
-</g>
-<g id="Layer_3">
-</g>
-<g id="Layer_1">
-	<path class="st6" d="M224.3,200.9c0.5,0.2,1.1,0.5,1.6,0.7c0,0.1,0,0.2,0,0.2C225.6,201.4,224,201.5,224.3,200.9z"/>
-	<path class="st6" d="M225.9,201.8c0.1,0.1,0.1,0.1,0,0.3C225.9,202,225.9,201.9,225.9,201.8z"/>
-	<path d="M657.5,133.3c14.7-6.8,28-16.2,41.2-25.5c0.7-7.7,0.7-16.5,0.7-25c-19.9,9.6-39.3,22.8-57.9,34.7c-1.4,0.9-3,1.9-4.6,1.7
-		c-1-0.1-2-0.6-2.9-1.1c-16.7-9.2-28.1-15.4-39.7-21.8c9.2-6,18.7-11.4,28.5-16.3c-3.1-3-6.4-5.8-9.9-8.3c-0.9-0.7-2-1.4-3.1-1.4
-		c-1-0.1-2,0.4-3,0.9c-11.4,5.7-22.7,11.5-34,17.2c0.4,8.6-6,18.8-5.5,27.3c14.3,5.8,30.6,13.6,45,19.4c-10.6,6.7-15.8,10-26.5,16.8
-		c-3.4,2.2-9.3,4.8-11.2,8.3c-2.1,3.9-2,8.6-1.8,13.1c0.2,3.9-0.8,5.9,1.8,8.8c1.9,2.2,6.9,3,9.6,4c11.1,4.3,9.6,5.5,20.7,9.8
-		c-13.1,7.4-13.2,7.3-26.3,14.7c-2,1.1-8.8,5.1-9.4,6.4c-0.7,1.4,0.5,11.5,0.5,13.1c-0.1,3.7,0,11.7,0.7,15.6
-		c0.3,1.6,5.7,3.3,7.2,2.7c18.5-8.1,35.2-16.1,53.5-25.7c1.3-0.7,3.7-0.5,5.1-0.4c0.9,0.1,1.8,0.5,2.7,0.8
-		c12.6,5.8,14.6,6.6,26,12.3c0.4,0.2,0.4,0.7,0.1,1c-10.4,7.3-14.3,10.7-24.9,17.6c-0.7,0.5-0.6,1.5,0.1,1.9
-		c6.4,3.6,17,10.8,23.2,13.5c1.1,0.5,2.3,0.4,3.3-0.2c10.3-6,22.3-13.4,32.1-20.3c0.7-0.5,1.1-1.4,1.1-2.3
-		c-0.4-6.4,0.1-16.7-0.1-21.8c0-0.6-0.4-1.2-0.9-1.5c-13.1-7.7-25.7-13.2-38.8-21c13.5-9.4,24.1-17.3,38.7-25
-		c-0.3-6.8-0.1-13.6,0.7-20.3C685.8,148.2,671.9,140.3,657.5,133.3z M677.6,168.7c-13.6,8.2-27.2,16.4-40.8,24.5
-		c-0.4,0.3-0.9,0.6-1.5,0.5c-0.5,0-1-0.3-1.4-0.6c-18.4-11.6-30-18.9-36.8-23.2c-1.2-0.7-1.1-2.4,0-3.1c6.4-3.8,12.7-7.6,19.1-11.3
-		c3.6-2.1,7.2-4.3,10.8-6.4c2.6-1.5,6.7-5.2,9.7-5.3c2.8-0.1,7.1,3.5,9.6,4.9c3.7,2,7.4,4,11.1,6c3.7,2,7.4,4,11.1,6
-		c2.3,1.2,9.2,3.6,10.3,5.7C679.4,167.3,678.4,168.2,677.6,168.7z"/>
-	<path class="st1" d="M617.8,195.6c0.4,0.2,0.4,0.7,0,0.9c-11.8,6.7-23.7,13.4-35.5,20c-1.8,1-6.1,2.3-7.1,4.2c-0.7,1.3,0,3.2,0,4.6
-		c-0.1,3.6,0.2,9.3,0.7,12.9c0.1,1,2.7,1.9,3.5,1.6c17.1-7.5,34.4-18.9,50.6-28.1c1.2-0.7,2.5-1.4,3.8-1.3c0.9,0.1,1.7,0.4,2.4,0.8
-		c11.5,5.3,29.7,16.5,41.7,22c0.5,0.2,0.6,0.9,0.2,1.2c-8.2,6.4-18.2,13.5-28.2,20.1c-0.7,0.4,3.8,2.7,3.8,2.7s3.4-0.7,7.4,1.1
-		c1.3,0.6,2.8,0.5,4-0.2c9.5-5.5,17.9-11.3,27.1-17.7c0.2-4.7,0.8-8.4,0.8-8.4l-3.6-5.4c0,0-34.8-16-47.2-23.4
-		c12.5-8.7,36.6-22.2,50-29.3c0.6-4.6,2.1-15.9,2.1-15.9s-6.1-0.3-8.9-3.2c-12.3-8-26.8-10.8-34.1-20.8c13.8-8.6,29.1-18,41.2-25.5
-		c0.6-7.1,1.9-18.8,1.9-18.8l-4.3-1.8c0,0-36.3,21.8-52.5,32.1c-1.3,0.8-2.7,1.7-4.3,1.6c-1-0.1-2.9,1-3.8,0.6
-		c-11.8-6.5-23.6-11.5-35.4-18c-0.4-0.2,1.5-4.1,2-4.4c7.6-4.9,14.1-11.3,22.4-13.7c0.7-0.2-4-8.4-4.5-9.6l-4.7-2.2
-		c-1.2,0.5-9.8,5.3-10.7,5.7c-10.5,5.3-12.8,6.7-23.3,12c0.4,7.9-0.6,12.1-0.2,19.9c0.4,0.2,1.9,0.8,2.4,1
-		c12.3,6.2,27.4,13.8,40.2,18.9c-9.8,6.2-19.6,12.4-29.4,18.6c-3.2,2-13.5,7.6-13.6,8.8c0,0.9-0.1,4.3,0.1,8.3
-		c0.2,3.6-0.2,3,0.1,6.5l2.8,1.3L617.8,195.6z M672.9,166c-12.5,7.5-26.1,15.1-38.6,22.6c-0.4,0.2-2.1,1.1-2.6,1.1
-		c-0.5,0-0.9-0.3-1.3-0.5c-11.3-7.1-20.3-12.9-31.6-20c-1.1-0.7-1-2.2,0-2.9c5.9-3.5,11.7-7,17.6-10.4c3.3-2,6.6-3.9,10-5.9
-		c2.4-1.4,7.4-4.9,8.9-4.9c1,0,6.6,1.3,8.9,2.5c3.4,1.8,6.8,3.7,10.2,5.6c3.4,1.9,6.8,3.7,10.2,5.6c2.1,1.1,8.5,3.2,9.5,5.2
-		C674.5,164.7,673.7,165.5,672.9,166z"/>
-	<path class="st0" d="M617.2,199.3c0.4,0.2,0.4,0.7,0,0.9c-11.8,6.7-21.7,12.4-33.5,19c-1.8,1-4.6,1.9-5.6,3.7
-		c-0.7,1.3,0.1,3.1,0.1,4.6c-0.1,3.6,0.1,7.5,0.5,11.1c0.1,1,1.1,1.5,2,1.2c17.1-7.5,34.5-16.2,50.8-25.4c1.2-0.7,2.5-1.4,3.8-1.3
-		c0.9,0.1,1.7,0.4,2.4,0.8c11.5,5.3,29.7,16.5,41.7,22c0.5,0.2,0.6,0.9,0.2,1.2c-8.7,7.1-15.8,12.3-25.6,18.4
-		c-0.7,0.4-0.6,1.4,0.1,1.8c4,1.8,4.6,1.9,8.5,3.7c1.3,0.6,2.8,0.5,4-0.2c9.5-5.5,17.9-11.3,27.1-17.7c0.3-6.2-0.2-7.6-0.1-14.7
-		c-12.4-7.3-32.8-17.8-45.2-25.1c12.5-8.7,31.8-19.5,45.2-26.7c0.9-6.4,0.9-12.3,0.7-18.7c-12.9-7.9-26.3-16.2-39.1-23
-		c13.8-8.6,26.7-16.1,38.8-23.6c0.6-7.1,0.5-13.8,0.5-21.6c-18.3,8.8-36.1,21-53.3,31.9c-1.3,0.8-2.7,1.7-4.3,1.6
-		c-1-0.1-1.8-0.6-2.7-1c-11.8-6.5-23.7-13-35.5-19.6c-0.4-0.2-0.5-0.9,0-1.2c8.2-5.3,16.6-10.1,25.3-14.4L614,76.4c-1,0-4,2-4.9,2.4
-		c-10.5,5.3-20.9,10.6-31.3,15.9c0.4,7.9-0.7,10.3-0.3,18.2c12.5,6.1,28.3,16.3,41.5,21.7c-9.8,6.2-19.6,12.4-29.4,18.6
-		c-3.2,2-11.9,7.6-11.9,8.8c0,0.9-0.3,4.6-0.1,8.7c0.2,3.6-0.2,1.2,0.1,4.7L617.2,199.3z M673.5,169.2
-		c-12.5,7.5-24.3,13.6-36.8,21.1c-0.4,0.2-0.9,0.5-1.3,0.5c-0.5,0-0.9-0.3-1.3-0.5c-11.3-7.1-21.6-14.2-32.9-21.3
-		c-1.1-0.7-1-2.2,0-2.9c5.9-3.5,10.7-6,16.6-9.4c3.3-2,6.6-3.9,10-5.9c2.4-1.4,7.4-4.9,8.9-4.9c1,0,6.6,3.3,8.9,4.5
-		c3.4,1.8,6.8,3.7,10.2,5.6c3.4,1.9,6.8,3.7,10.2,5.6c2.1,1.1,8.1,3.5,9.2,5.5C675.6,167.7,674.3,168.7,673.5,169.2z"/>
-	<polyline points="693.3,114.3 684.3,104.8 687.4,117.1 678.8,109.7 682.8,119.3 	"/>
-	<polygon points="618.3,223.8 614,215 620.3,222.5 619,215 623,222 	"/>
-	<polygon points="602.7,129.8 606.6,117.3 605.9,130.4 611.4,121.9 608.9,132.4 	"/>
-	<polygon points="659.8,202.3 651.3,183.3 661.3,198.1 659.2,185.5 665.4,199.1 	"/>
-	<polygon points="610.6,164.5 605.9,154.8 612.6,162.7 	"/>
-	<polygon points="684,184.5 679.3,174.7 686.1,182.6 	"/>
-	<path class="st1" d="M590.8,155.3c0.2-0.1,0.5-0.3,0.7-0.3c0.4,0,0.7,0.4,0.8,0.7c0.8,1.7-0.3,3.8-1.6,5.1c-1.4,1.3-3.1,2.4-4,4
-		c-0.5,0.9-0.8,2-1,3c-0.3,1.5-0.6,3-1,4.5c-2,0.2-3.3-2-3.5-4C580.9,161.4,585.1,158.7,590.8,155.3z"/>
-	<path class="st1" d="M580.6,226.3c-0.1-1.5,0.8-2.8,2-3.7c1.2-0.9,2.6-1.4,3.9-1.8c0.7-0.2,1.5-0.5,2.2-0.4
-		c0.7,0.1,1.5,0.6,1.6,1.4c0.1,1.1-1.1,1.8-2.1,2.4c-3.6,2.2-5.2,7.1-3.7,11c-0.7,0.8-2,0.7-2.8,0.1c-0.8-0.6-1.3-1.6-1.6-2.6
-		c-0.8-2.7-0.5-5.7,0.7-8.3"/>
-	<path class="st1" d="M583.4,95.5c-0.9,0.6-1.9,1.2-2.4,2.2c-0.2,0.5-0.3,1.1-0.4,1.6c-0.3,2.3-0.5,4.7,0.7,6.7
-		c0.8,0,1.8,0.3,2.3-0.3c0.2-0.3,0.3-0.7,0.3-1c0.1-1,0.3-2,0.6-2.9c0.8-2,2.6-3.4,4.4-4.7c0.7-0.5,1.5-1.1,1.9-2
-		c0.3-0.7,0.2-2-0.3-2.6c-0.8-1.1-0.8-0.7-1.9-0.1C586.7,93.2,585.1,94.5,583.4,95.5z"/>
-	<g>
-		<path class="st0" d="M60.2,133.7v-1.2h9v1.2h-3.8v11.2h-1.4v-11.2H60.2z"/>
-		<path class="st0" d="M72.1,144.9h-1.4V132h1.4v4.4c1-0.5,1.9-0.7,2.8-0.7c1.2,0,2,0.3,2.4,1s0.6,1.8,0.6,3.5v4.8h-1.4v-4.7
-			c0-1.2-0.1-2.1-0.4-2.6c-0.2-0.5-0.8-0.7-1.6-0.7c-0.8,0-1.5,0.1-2.2,0.4l-0.3,0.1V144.9z"/>
-		<path class="st0" d="M86.5,143.8l0.5-0.1l0,1.1c-1.4,0.2-2.5,0.3-3.5,0.3c-1.3,0-2.2-0.4-2.8-1.1c-0.5-0.7-0.8-1.9-0.8-3.5
-			c0-3.2,1.3-4.7,3.8-4.7c1.2,0,2.1,0.3,2.7,1s0.9,1.7,0.9,3.2l-0.1,1h-5.9c0,1,0.2,1.7,0.5,2.2c0.4,0.5,1,0.7,1.9,0.7
-			S85.6,143.9,86.5,143.8z M86.1,139.9c0-1.1-0.2-1.9-0.5-2.3s-0.9-0.7-1.7-0.7s-1.4,0.2-1.8,0.7c-0.4,0.5-0.6,1.2-0.6,2.3H86.1z"/>
-		<path class="st0" d="M96.8,135.7c0.4,0,1.1,0.1,2,0.2l0.4,0.1l-0.1,1.1c-1-0.1-1.7-0.2-2.1-0.2c-1,0-1.7,0.2-2.1,0.7
-			c-0.4,0.5-0.5,1.4-0.5,2.7c0,1.3,0.2,2.2,0.5,2.7c0.3,0.5,1.1,0.8,2.1,0.8l2.1-0.2l0.1,1.1c-1.1,0.2-2,0.3-2.5,0.3
-			c-1.4,0-2.4-0.4-2.9-1.1c-0.5-0.7-0.8-1.9-0.8-3.6s0.3-2.9,0.9-3.6C94.5,136.1,95.5,135.7,96.8,135.7z"/>
-		<path class="st0" d="M100.8,140.4c0-1.6,0.3-2.8,0.9-3.6c0.6-0.7,1.6-1.1,3-1.1c1.4,0,2.4,0.4,3,1.1c0.6,0.7,0.9,1.9,0.9,3.6
-			c0,1.6-0.3,2.8-0.8,3.6s-1.6,1.1-3,1.1c-1.5,0-2.5-0.4-3-1.1C101.1,143.2,100.8,142.1,100.8,140.4z M102.2,140.4
-			c0,1.3,0.2,2.2,0.5,2.8c0.3,0.5,1,0.8,2,0.8c1,0,1.7-0.3,2-0.8c0.3-0.5,0.5-1.4,0.5-2.8c0-1.3-0.2-2.2-0.5-2.7s-1-0.7-1.9-0.7
-			c-0.9,0-1.6,0.2-1.9,0.7S102.2,139.1,102.2,140.4z"/>
-		<path class="st0" d="M112.1,144.9h-1.4v-9h1.3v0.6c1-0.5,1.9-0.8,2.8-0.8c1.2,0,2,0.3,2.4,1s0.6,1.8,0.6,3.5v4.8h-1.3v-4.7
-			c0-1.2-0.1-2.1-0.4-2.6s-0.8-0.7-1.6-0.7c-0.4,0-0.8,0.1-1.2,0.2c-0.4,0.1-0.8,0.2-1,0.3l-0.3,0.2V144.9z"/>
-		<path class="st0" d="M123.2,137c-1.3,0-2,0.5-2,1.4c0,0.4,0.1,0.7,0.4,0.9s1,0.4,2.1,0.5c1.1,0.2,1.8,0.4,2.3,0.8
-			c0.4,0.3,0.7,1,0.7,1.9s-0.3,1.6-0.9,2c-0.6,0.4-1.5,0.6-2.6,0.6c-0.7,0-1.6-0.1-2.6-0.3l-0.5-0.1l0.1-1.2
-			c1.4,0.2,2.4,0.3,3.1,0.3c0.7,0,1.2-0.1,1.6-0.3c0.4-0.2,0.5-0.6,0.5-1.1c0-0.5-0.2-0.9-0.5-1.1c-0.3-0.2-1-0.4-2.1-0.5
-			c-1.1-0.2-1.8-0.4-2.2-0.7c-0.4-0.3-0.7-0.9-0.7-1.8c0-0.9,0.3-1.5,0.9-1.9s1.4-0.6,2.3-0.6c0.7,0,1.6,0.1,2.8,0.3l0.5,0.1l0,1.2
-			C125,137,124,137,123.2,137z"/>
-		<path class="st0" d="M134.9,143.8l0.5-0.1l0,1.1c-1.4,0.2-2.5,0.3-3.5,0.3c-1.3,0-2.2-0.4-2.8-1.1c-0.5-0.7-0.8-1.9-0.8-3.5
-			c0-3.2,1.3-4.7,3.8-4.7c1.2,0,2.1,0.3,2.7,1s0.9,1.7,0.9,3.2l-0.1,1h-5.9c0,1,0.2,1.7,0.5,2.2c0.4,0.5,1,0.7,1.9,0.7
-			S134,143.9,134.9,143.8z M134.4,139.9c0-1.1-0.2-1.9-0.5-2.3s-0.9-0.7-1.7-0.7s-1.4,0.2-1.8,0.7c-0.4,0.5-0.6,1.2-0.6,2.3H134.4z"
-			/>
-		<path class="st0" d="M139.2,144.9h-1.4v-9h1.3v0.6c1-0.5,1.9-0.8,2.8-0.8c1.2,0,2,0.3,2.4,1s0.6,1.8,0.6,3.5v4.8h-1.3v-4.7
-			c0-1.2-0.1-2.1-0.4-2.6s-0.8-0.7-1.6-0.7c-0.4,0-0.8,0.1-1.2,0.2c-0.4,0.1-0.8,0.2-1,0.3l-0.3,0.2V144.9z"/>
-		<path class="st0" d="M150.3,137c-1.3,0-2,0.5-2,1.4c0,0.4,0.1,0.7,0.4,0.9s1,0.4,2.1,0.5c1.1,0.2,1.8,0.4,2.3,0.8
-			c0.4,0.3,0.7,1,0.7,1.9s-0.3,1.6-0.9,2c-0.6,0.4-1.5,0.6-2.6,0.6c-0.7,0-1.6-0.1-2.6-0.3l-0.5-0.1l0.1-1.2
-			c1.4,0.2,2.4,0.3,3.1,0.3c0.7,0,1.2-0.1,1.6-0.3c0.4-0.2,0.5-0.6,0.5-1.1c0-0.5-0.2-0.9-0.5-1.1c-0.3-0.2-1-0.4-2.1-0.5
-			c-1.1-0.2-1.8-0.4-2.2-0.7c-0.4-0.3-0.7-0.9-0.7-1.8c0-0.9,0.3-1.5,0.9-1.9s1.4-0.6,2.3-0.6c0.7,0,1.6,0.1,2.8,0.3l0.5,0.1l0,1.2
-			C152.2,137,151.1,137,150.3,137z"/>
-		<path class="st0" d="M161.5,135.9h1.4v9h-1.4v-0.6c-0.9,0.5-1.8,0.8-2.7,0.8c-1.2,0-2-0.3-2.4-1c-0.4-0.6-0.6-1.8-0.6-3.5v-4.7
-			h1.4v4.7c0,1.3,0.1,2.2,0.3,2.6c0.2,0.4,0.7,0.7,1.5,0.7c0.4,0,0.8-0.1,1.2-0.2c0.4-0.1,0.7-0.2,0.9-0.3l0.3-0.2V135.9z"/>
-		<path class="st0" d="M168.3,137c-1.3,0-2,0.5-2,1.4c0,0.4,0.1,0.7,0.4,0.9s1,0.4,2.1,0.5c1.1,0.2,1.8,0.4,2.3,0.8
-			c0.4,0.3,0.7,1,0.7,1.9s-0.3,1.6-0.9,2c-0.6,0.4-1.5,0.6-2.6,0.6c-0.7,0-1.6-0.1-2.6-0.3l-0.5-0.1l0.1-1.2
-			c1.4,0.2,2.4,0.3,3.1,0.3c0.7,0,1.2-0.1,1.6-0.3c0.4-0.2,0.5-0.6,0.5-1.1c0-0.5-0.2-0.9-0.5-1.1c-0.3-0.2-1-0.4-2.1-0.5
-			c-1.1-0.2-1.8-0.4-2.2-0.7c-0.4-0.3-0.7-0.9-0.7-1.8c0-0.9,0.3-1.5,0.9-1.9s1.4-0.6,2.3-0.6c0.7,0,1.6,0.1,2.8,0.3l0.5,0.1l0,1.2
-			C170.1,137,169,137,168.3,137z"/>
-		<path class="st0" d="M177.8,144.9v-9h1.3v1.2c1-0.7,2.1-1.2,3.3-1.4v1.4c-0.5,0.1-1,0.2-1.6,0.5c-0.5,0.2-1,0.4-1.3,0.5l-0.5,0.2
-			v6.6H177.8z"/>
-		<path class="st0" d="M189.6,135.9h1.4v9h-1.4v-0.6c-0.9,0.5-1.8,0.8-2.7,0.8c-1.2,0-2-0.3-2.4-1c-0.4-0.6-0.6-1.8-0.6-3.5v-4.7
-			h1.4v4.7c0,1.3,0.1,2.2,0.3,2.6c0.2,0.4,0.7,0.7,1.5,0.7c0.4,0,0.8-0.1,1.2-0.2c0.4-0.1,0.7-0.2,0.9-0.3l0.3-0.2V135.9z"/>
-		<path class="st0" d="M193.7,144.9V132h1.4v12.9H193.7z"/>
-		<path class="st0" d="M203.8,143.8l0.5-0.1l0,1.1c-1.4,0.2-2.5,0.3-3.5,0.3c-1.3,0-2.2-0.4-2.8-1.1c-0.5-0.7-0.8-1.9-0.8-3.5
-			c0-3.2,1.3-4.7,3.8-4.7c1.2,0,2.1,0.3,2.7,1s0.9,1.7,0.9,3.2l-0.1,1h-5.9c0,1,0.2,1.7,0.5,2.2c0.4,0.5,1,0.7,1.9,0.7
-			S202.9,143.9,203.8,143.8z M203.4,139.9c0-1.1-0.2-1.9-0.5-2.3s-0.9-0.7-1.7-0.7s-1.4,0.2-1.8,0.7c-0.4,0.5-0.6,1.2-0.6,2.3H203.4
-			z"/>
-		<path class="st0" d="M209.6,137c-1.3,0-2,0.5-2,1.4c0,0.4,0.1,0.7,0.4,0.9s1,0.4,2.1,0.5c1.1,0.2,1.8,0.4,2.3,0.8
-			c0.4,0.3,0.7,1,0.7,1.9s-0.3,1.6-0.9,2c-0.6,0.4-1.5,0.6-2.6,0.6c-0.7,0-1.6-0.1-2.6-0.3l-0.5-0.1l0.1-1.2
-			c1.4,0.2,2.4,0.3,3.1,0.3c0.7,0,1.2-0.1,1.6-0.3c0.4-0.2,0.5-0.6,0.5-1.1c0-0.5-0.2-0.9-0.5-1.1c-0.3-0.2-1-0.4-2.1-0.5
-			c-1.1-0.2-1.8-0.4-2.2-0.7c-0.4-0.3-0.7-0.9-0.7-1.8c0-0.9,0.3-1.5,0.9-1.9s1.4-0.6,2.3-0.6c0.7,0,1.6,0.1,2.8,0.3l0.5,0.1l0,1.2
-			C211.4,137,210.4,137,209.6,137z"/>
-		<path class="st0" d="M218.7,140.4c0-1.6,0.3-2.8,0.9-3.6c0.6-0.7,1.6-1.1,3-1.1c1.4,0,2.4,0.4,3,1.1c0.6,0.7,0.9,1.9,0.9,3.6
-			c0,1.6-0.3,2.8-0.8,3.6s-1.6,1.1-3,1.1c-1.5,0-2.5-0.4-3-1.1C219,143.2,218.7,142.1,218.7,140.4z M220.1,140.4
-			c0,1.3,0.2,2.2,0.5,2.8c0.3,0.5,1,0.8,2,0.8c1,0,1.7-0.3,2-0.8c0.3-0.5,0.5-1.4,0.5-2.8c0-1.3-0.2-2.2-0.5-2.7s-1-0.7-1.9-0.7
-			c-0.9,0-1.6,0.2-1.9,0.7S220.1,139.1,220.1,140.4z"/>
-		<path class="st0" d="M230.4,137.1v7.8H229v-7.8h-1.1v-1.2h1.1v-0.8c0-1.3,0.2-2.1,0.5-2.6c0.4-0.5,1-0.7,1.9-0.7l1.8,0.1l0,1.1
-			c-0.7,0-1.2,0-1.7,0s-0.8,0.1-0.9,0.4c-0.2,0.3-0.3,0.8-0.3,1.7v0.8h2.6v1.2H230.4z"/>
-		<path class="st0" d="M243.2,137.1h-2.9v4.3c0,1,0.1,1.7,0.2,2s0.5,0.5,1.1,0.5l1.6-0.1l0.1,1.1c-0.8,0.1-1.4,0.2-1.8,0.2
-			c-0.9,0-1.6-0.2-1.9-0.7c-0.4-0.5-0.5-1.3-0.5-2.6v-4.7h-1.3v-1.2h1.3v-2.8h1.3v2.8h2.9V137.1z"/>
-		<path class="st0" d="M246.2,144.9h-1.4V132h1.4v4.4c1-0.5,1.9-0.7,2.8-0.7c1.2,0,2,0.3,2.4,1s0.6,1.8,0.6,3.5v4.8h-1.4v-4.7
-			c0-1.2-0.1-2.1-0.4-2.6c-0.2-0.5-0.8-0.7-1.6-0.7c-0.8,0-1.5,0.1-2.2,0.4l-0.3,0.1V144.9z"/>
-		<path class="st0" d="M260.7,143.8l0.5-0.1l0,1.1c-1.4,0.2-2.5,0.3-3.5,0.3c-1.3,0-2.2-0.4-2.8-1.1c-0.5-0.7-0.8-1.9-0.8-3.5
-			c0-3.2,1.3-4.7,3.8-4.7c1.2,0,2.1,0.3,2.7,1s0.9,1.7,0.9,3.2l-0.1,1h-5.9c0,1,0.2,1.7,0.5,2.2c0.4,0.5,1,0.7,1.9,0.7
-			S259.7,143.9,260.7,143.8z M260.2,139.9c0-1.1-0.2-1.9-0.5-2.3s-0.9-0.7-1.7-0.7s-1.4,0.2-1.8,0.7c-0.4,0.5-0.6,1.2-0.6,2.3H260.2
-			z"/>
-		<path class="st0" d="M266.6,146.2V145c0.9,0,1.4-0.1,1.7-0.3s0.4-0.8,0.4-1.6v-10.5h1.4l0,10.7c0,1-0.2,1.7-0.5,2.2
-			c-0.3,0.4-0.8,0.6-1.6,0.7C267.6,146.2,267.1,146.2,266.6,146.2z"/>
-		<path class="st0" d="M272.3,140.4c0-1.6,0.3-2.8,0.9-3.6c0.6-0.7,1.6-1.1,3-1.1c1.4,0,2.4,0.4,3,1.1c0.6,0.7,0.9,1.9,0.9,3.6
-			c0,1.6-0.3,2.8-0.8,3.6s-1.6,1.1-3,1.1c-1.5,0-2.5-0.4-3-1.1C272.6,143.2,272.3,142.1,272.3,140.4z M273.7,140.4
-			c0,1.3,0.2,2.2,0.5,2.8c0.3,0.5,1,0.8,2,0.8c1,0,1.7-0.3,2-0.8c0.3-0.5,0.5-1.4,0.5-2.8c0-1.3-0.2-2.2-0.5-2.7s-1-0.7-1.9-0.7
-			c-0.9,0-1.6,0.2-1.9,0.7S273.7,139.1,273.7,140.4z"/>
-		<path class="st0" d="M281.2,135.9h1.3l2.2,7.8h0.6l2.3-7.8h1.4l-3.7,13h-1.4l1.2-4h-1.3L281.2,135.9z"/>
-		<path class="st0" d="M293.4,137c-1.3,0-2,0.5-2,1.4c0,0.4,0.1,0.7,0.4,0.9s1,0.4,2.1,0.5c1.1,0.2,1.8,0.4,2.3,0.8
-			c0.4,0.3,0.7,1,0.7,1.9s-0.3,1.6-0.9,2c-0.6,0.4-1.5,0.6-2.6,0.6c-0.7,0-1.6-0.1-2.6-0.3l-0.5-0.1l0.1-1.2
-			c1.4,0.2,2.4,0.3,3.1,0.3c0.7,0,1.2-0.1,1.6-0.3c0.4-0.2,0.5-0.6,0.5-1.1c0-0.5-0.2-0.9-0.5-1.1c-0.3-0.2-1-0.4-2.1-0.5
-			c-1.1-0.2-1.8-0.4-2.2-0.7c-0.4-0.3-0.7-0.9-0.7-1.8c0-0.9,0.3-1.5,0.9-1.9s1.4-0.6,2.3-0.6c0.7,0,1.6,0.1,2.8,0.3l0.5,0.1l0,1.2
-			C295.2,137,294.2,137,293.4,137z"/>
-		<path class="st0" d="M303.6,137.1h-2.9v4.3c0,1,0.1,1.7,0.2,2s0.5,0.5,1.1,0.5l1.6-0.1l0.1,1.1c-0.8,0.1-1.4,0.2-1.8,0.2
-			c-0.9,0-1.6-0.2-1.9-0.7c-0.4-0.5-0.5-1.3-0.5-2.6v-4.7h-1.3v-1.2h1.3v-2.8h1.3v2.8h2.9V137.1z"/>
-		<path class="st0" d="M305.3,144.9v-9h1.3v1.2c1-0.7,2.1-1.2,3.3-1.4v1.4c-0.5,0.1-1,0.2-1.6,0.5c-0.5,0.2-1,0.4-1.3,0.5l-0.5,0.2
-			v6.6H305.3z"/>
-		<path class="st0" d="M317.5,143.8l0.5-0.1l0,1.1c-1.4,0.2-2.5,0.3-3.5,0.3c-1.3,0-2.2-0.4-2.8-1.1c-0.5-0.7-0.8-1.9-0.8-3.5
-			c0-3.2,1.3-4.7,3.8-4.7c1.2,0,2.1,0.3,2.7,1s0.9,1.7,0.9,3.2l-0.1,1h-5.9c0,1,0.2,1.7,0.5,2.2c0.4,0.5,1,0.7,1.9,0.7
-			S316.5,143.9,317.5,143.8z M317,139.9c0-1.1-0.2-1.9-0.5-2.3s-0.9-0.7-1.7-0.7s-1.4,0.2-1.8,0.7c-0.4,0.5-0.6,1.2-0.6,2.3H317z"/>
-		<path class="st0" d="M326.8,138.6v4.6c0,0.4,0.4,0.7,1,0.8l-0.1,1.1c-0.9,0-1.7-0.2-2.1-0.7c-1.1,0.5-2.2,0.7-3.2,0.7
-			c-0.8,0-1.5-0.2-1.9-0.7c-0.4-0.5-0.6-1.1-0.6-2s0.2-1.5,0.7-1.9c0.4-0.4,1.1-0.7,2.1-0.8l2.8-0.3v-0.8c0-0.6-0.1-1-0.4-1.3
-			c-0.3-0.3-0.6-0.4-1.1-0.4c-1,0-2,0.1-3,0.2l-0.6,0.1l-0.1-1c1.3-0.3,2.5-0.4,3.5-0.4s1.8,0.2,2.2,0.7
-			C326.5,136.9,326.8,137.6,326.8,138.6z M321.2,142.3c0,1.1,0.5,1.7,1.4,1.7c0.8,0,1.6-0.1,2.4-0.4l0.4-0.1v-3l-2.7,0.3
-			c-0.5,0-0.9,0.2-1.2,0.5S321.2,141.8,321.2,142.3z"/>
-		<path class="st0" d="M330.8,144.9h-1.4v-9h1.3v0.6c0.9-0.5,1.8-0.8,2.6-0.8c1.1,0,1.9,0.3,2.3,0.9c0.4-0.2,0.9-0.5,1.5-0.6
-			c0.6-0.2,1.2-0.3,1.7-0.3c1.2,0,2,0.3,2.4,1c0.4,0.6,0.6,1.8,0.6,3.5v4.8h-1.3v-4.7c0-1.2-0.1-2.1-0.4-2.6s-0.8-0.7-1.5-0.7
-			c-0.4,0-0.8,0.1-1.2,0.2s-0.7,0.2-1,0.3l-0.3,0.2c0.2,0.4,0.2,1.3,0.2,2.6v4.7h-1.3v-4.6c0-1.3-0.1-2.2-0.4-2.6
-			c-0.2-0.5-0.7-0.7-1.5-0.7c-0.4,0-0.8,0.1-1.2,0.2s-0.7,0.2-0.9,0.3l-0.3,0.2V144.9z"/>
-		<path class="st0" d="M348.4,148.9v-13h1.3v0.6c0.9-0.6,1.8-0.8,2.7-0.8c1.1,0,2,0.4,2.5,1.1c0.5,0.7,0.8,1.9,0.8,3.6
-			s-0.3,2.9-0.9,3.6c-0.6,0.7-1.6,1.1-3,1.1c-0.7,0-1.4-0.1-2-0.2v4H348.4z M352.3,137c-0.4,0-0.7,0.1-1.2,0.2
-			c-0.4,0.1-0.7,0.2-1,0.4l-0.3,0.2v6.1c0.9,0.1,1.5,0.2,1.9,0.2c1,0,1.7-0.3,2-0.8c0.4-0.6,0.6-1.5,0.6-2.7s-0.2-2.1-0.5-2.7
-			C353.5,137.2,353,137,352.3,137z"/>
-		<path class="st0" d="M357.9,144.9v-9h1.3v1.2c1-0.7,2.1-1.2,3.3-1.4v1.4c-0.5,0.1-1,0.2-1.6,0.5c-0.5,0.2-1,0.4-1.3,0.5l-0.5,0.2
-			v6.6H357.9z"/>
-		<path class="st0" d="M363.6,140.4c0-1.6,0.3-2.8,0.9-3.6c0.6-0.7,1.6-1.1,3-1.1c1.4,0,2.4,0.4,3,1.1c0.6,0.7,0.9,1.9,0.9,3.6
-			c0,1.6-0.3,2.8-0.8,3.6s-1.6,1.1-3,1.1c-1.5,0-2.5-0.4-3-1.1C363.9,143.2,363.6,142.1,363.6,140.4z M365,140.4
-			c0,1.3,0.2,2.2,0.5,2.8c0.3,0.5,1,0.8,2,0.8c1,0,1.7-0.3,2-0.8c0.3-0.5,0.5-1.4,0.5-2.8c0-1.3-0.2-2.2-0.5-2.7s-1-0.7-1.9-0.7
-			c-0.9,0-1.6,0.2-1.9,0.7S365,139.1,365,140.4z"/>
-		<path class="st0" d="M378.1,137.1h-2.9v4.3c0,1,0.1,1.7,0.2,2s0.5,0.5,1.1,0.5l1.6-0.1l0.1,1.1c-0.8,0.1-1.4,0.2-1.8,0.2
-			c-0.9,0-1.6-0.2-1.9-0.7c-0.4-0.5-0.5-1.3-0.5-2.6v-4.7h-1.3v-1.2h1.3v-2.8h1.3v2.8h2.9V137.1z"/>
-		<path class="st0" d="M379.3,140.4c0-1.6,0.3-2.8,0.9-3.6c0.6-0.7,1.6-1.1,3-1.1s2.4,0.4,3,1.1c0.6,0.7,0.9,1.9,0.9,3.6
-			c0,1.6-0.3,2.8-0.8,3.6c-0.6,0.7-1.6,1.1-3,1.1c-1.5,0-2.5-0.4-3-1.1C379.6,143.2,379.3,142.1,379.3,140.4z M380.7,140.4
-			c0,1.3,0.2,2.2,0.5,2.8c0.3,0.5,1,0.8,2,0.8s1.7-0.3,2-0.8c0.3-0.5,0.5-1.4,0.5-2.8c0-1.3-0.2-2.2-0.5-2.7c-0.3-0.5-1-0.7-1.9-0.7
-			c-0.9,0-1.6,0.2-1.9,0.7C380.9,138.2,380.7,139.1,380.7,140.4z"/>
-		<path class="st0" d="M392.6,135.7c0.4,0,1.1,0.1,2,0.2l0.4,0.1l-0.1,1.1c-1-0.1-1.7-0.2-2.1-0.2c-1,0-1.7,0.2-2.1,0.7
-			s-0.5,1.4-0.5,2.7c0,1.3,0.2,2.2,0.5,2.7c0.3,0.5,1.1,0.8,2.1,0.8l2.1-0.2l0.1,1.1c-1.1,0.2-2,0.3-2.5,0.3c-1.4,0-2.4-0.4-2.9-1.1
-			c-0.5-0.7-0.8-1.9-0.8-3.6s0.3-2.9,0.9-3.6C390.3,136.1,391.3,135.7,392.6,135.7z"/>
-		<path class="st0" d="M396.6,140.4c0-1.6,0.3-2.8,0.9-3.6c0.6-0.7,1.6-1.1,3-1.1c1.4,0,2.4,0.4,3,1.1c0.6,0.7,0.9,1.9,0.9,3.6
-			c0,1.6-0.3,2.8-0.8,3.6c-0.6,0.7-1.6,1.1-3,1.1s-2.5-0.4-3-1.1C396.9,143.2,396.6,142.1,396.6,140.4z M398,140.4
-			c0,1.3,0.2,2.2,0.5,2.8c0.3,0.5,1,0.8,2,0.8c1,0,1.7-0.3,2-0.8c0.3-0.5,0.5-1.4,0.5-2.8c0-1.3-0.2-2.2-0.5-2.7
-			c-0.3-0.5-1-0.7-1.9-0.7s-1.6,0.2-1.9,0.7C398.1,138.2,398,139.1,398,140.4z"/>
-		<path class="st0" d="M406.6,144.9V132h1.3v12.9H406.6z"/>
-	</g>
-	<g>
-		<path class="st1" d="M60.9,104.1v-3.3c2.3,0,3.8-0.3,4.4-0.8c0.7-0.6,1-2,1-4.4V67.4h3.6L70,96c0,2.7-0.4,4.7-1.3,5.9
-			c-0.7,1.1-2.2,1.7-4.4,2C63.4,104,62.3,104.1,60.9,104.1z"/>
-		<path class="st1" d="M76,88.6c0-4.4,0.8-7.6,2.4-9.5c1.6-2,4.2-2.9,7.9-2.9s6.4,1,7.9,2.9c1.6,2,2.3,5.1,2.3,9.5
-			c0,4.4-0.7,7.6-2.2,9.6c-1.5,2-4.2,3-8.1,3c-3.9,0-6.6-1-8.1-3C76.8,96.1,76,92.9,76,88.6z M79.7,88.5c0,3.5,0.4,6,1.3,7.4
-			c0.8,1.4,2.6,2.1,5.3,2.1s4.5-0.7,5.3-2.1c0.8-1.4,1.2-3.8,1.2-7.4s-0.5-5.9-1.4-7.3c-0.9-1.3-2.6-2-5.2-2s-4.2,0.7-5.2,2
-			C80.2,82.6,79.7,85,79.7,88.5z"/>
-		<path class="st1" d="M99.7,76.6h3.6l6,20.9h1.6l6-20.9h3.6l-10,34.7h-3.6l3.1-10.7h-3.6L99.7,76.6z"/>
-		<path class="st1" d="M132.3,79.3c-3.5,0-5.2,1.2-5.2,3.6c0,1.1,0.4,1.9,1.2,2.4c0.8,0.5,2.6,0.9,5.5,1.4c2.8,0.5,4.9,1.2,6,2.1
-			c1.2,0.9,1.8,2.6,1.8,5c0,2.5-0.8,4.3-2.4,5.4s-3.9,1.7-6.9,1.7c-2,0-4.3-0.2-7-0.7l-1.4-0.2l0.2-3.1c3.6,0.5,6.4,0.8,8.3,0.8
-			s3.3-0.3,4.2-0.9c1-0.6,1.5-1.6,1.5-3c0-1.4-0.4-2.3-1.2-2.8c-0.8-0.5-2.7-1-5.5-1.4c-2.8-0.4-4.8-1.1-6-2
-			c-1.2-0.9-1.8-2.5-1.8-4.8c0-2.3,0.8-4.1,2.5-5.2c1.6-1.1,3.7-1.7,6.2-1.7c2,0,4.4,0.2,7.3,0.7l1.3,0.2l-0.1,3.1
-			C137.2,79.6,134.4,79.3,132.3,79.3z"/>
-		<path class="st1" d="M159.6,79.7h-7.6v11.5c0,2.8,0.2,4.6,0.6,5.4c0.4,0.9,1.4,1.3,2.9,1.3l4.3-0.3l0.2,3
-			c-2.1,0.4-3.8,0.5-4.9,0.5c-2.5,0-4.2-0.6-5.2-1.8c-1-1.2-1.4-3.5-1.4-7V79.7H145v-3.1h3.4v-7.3h3.6v7.3h7.6V79.7z"/>
-		<path class="st1" d="M164,100.6v-24h3.6v3.3c2.8-1.9,5.7-3.2,8.8-3.8v3.6c-1.3,0.3-2.7,0.7-4.2,1.2s-2.6,1-3.3,1.4l-1.2,0.6v17.6
-			H164z"/>
-		<path class="st1" d="M196.4,97.6l1.4-0.1l0.1,2.8c-3.6,0.5-6.8,0.8-9.4,0.8c-3.5,0-5.9-1-7.3-3c-1.4-2-2.2-5.1-2.2-9.3
-			c0-8.4,3.3-12.6,10-12.6c3.2,0,5.6,0.9,7.2,2.7c1.6,1.8,2.4,4.6,2.4,8.5l-0.2,2.7h-15.8c0,2.7,0.5,4.6,1.4,5.9
-			c1,1.3,2.6,1.9,5,1.9C191.5,97.9,194,97.8,196.4,97.6z M195.1,87.2c0-2.9-0.5-5-1.4-6.2c-0.9-1.2-2.5-1.8-4.6-1.8
-			c-2.1,0-3.7,0.6-4.8,1.9c-1.1,1.3-1.6,3.3-1.7,6.1H195.1z"/>
-		<path class="st1" d="M221.3,83.9v12.3c0.1,1.2,1,1.9,2.8,2.1l-0.1,2.8c-2.5,0-4.4-0.6-5.7-1.9c-2.9,1.3-5.8,1.9-8.6,1.9
-			c-2.2,0-3.9-0.6-5-1.9c-1.2-1.2-1.7-3-1.7-5.4s0.6-4.1,1.8-5.2c1.2-1.1,3-1.8,5.6-2l7.5-0.7v-2.1c0-1.6-0.4-2.8-1.1-3.5
-			c-0.7-0.7-1.7-1.1-2.9-1.1c-2.6,0-5.2,0.2-8,0.5l-1.5,0.1l-0.1-2.7c3.5-0.7,6.6-1.1,9.4-1.1c2.7,0,4.7,0.6,5.9,1.9
-			C220.7,79.2,221.3,81.2,221.3,83.9z M206.5,93.6c0,2.9,1.2,4.4,3.6,4.4c2.2,0,4.3-0.4,6.4-1.1l1.1-0.4v-7.9l-7.1,0.7
-			c-1.4,0.1-2.5,0.5-3.1,1.2C206.8,91.3,206.5,92.3,206.5,93.6z"/>
-		<path class="st1" d="M232,100.6h-3.6v-24h3.6v1.7c2.4-1.4,4.7-2.2,7-2.2c3,0,5.1,0.8,6.2,2.4c1.1-0.6,2.4-1.2,4.1-1.7
-			c1.7-0.5,3.2-0.7,4.4-0.7c3.2,0,5.4,0.9,6.5,2.6c1.1,1.7,1.7,4.8,1.7,9.2v12.7h-3.6V88c0-3.3-0.3-5.6-1-6.8
-			c-0.6-1.2-2-1.8-4.1-1.8c-1.1,0-2.1,0.2-3.3,0.5s-2,0.6-2.6,0.9l-0.9,0.4c0.4,1.1,0.6,3.4,0.6,7v12.5h-3.6V88.2
-			c0-3.5-0.3-5.8-0.9-7c-0.6-1.2-2-1.8-4.1-1.8c-1,0-2.1,0.2-3.1,0.5c-1.1,0.3-1.9,0.6-2.5,0.9l-0.8,0.4V100.6z"/>
-		<path class="st1" d="M283.4,87.9v12.7h-3.7V67.4H292c3.5,0,6.2,0.8,7.9,2.4c1.8,1.6,2.7,4.2,2.7,7.6c0,5.1-2,8.3-6.1,9.6l6.4,13.5
-			h-4.1l-6-12.7H283.4z M292,84.6c4.5,0,6.8-2.3,6.8-7s-2.3-7-6.8-7h-8.6v14H292z"/>
-		<path class="st1" d="M323.5,76.6h3.6v24h-3.6v-1.7c-2.4,1.4-4.8,2.2-7.1,2.2c-3.3,0-5.4-0.8-6.5-2.5c-1.1-1.7-1.6-4.8-1.6-9.4
-			V76.6h3.6v12.5c0,3.5,0.3,5.8,0.9,7c0.6,1.2,2,1.8,4.1,1.8c1.1,0,2.1-0.2,3.2-0.5c1.1-0.3,1.9-0.6,2.5-0.9l0.9-0.4V76.6z"/>
-		<path class="st1" d="M337.6,100.6H334v-24h3.6v1.7c2.6-1.4,5.1-2.2,7.4-2.2c3.2,0,5.4,0.9,6.5,2.6c1.1,1.7,1.7,4.8,1.7,9.2v12.7
-			h-3.6V88c0-3.3-0.3-5.6-1-6.8c-0.7-1.2-2.1-1.8-4.2-1.8c-1,0-2.1,0.2-3.2,0.5c-1.1,0.3-2,0.6-2.6,0.9l-0.9,0.4V100.6z"/>
-		<path class="st1" d="M372,79.7h-7.6v11.5c0,2.8,0.2,4.6,0.6,5.4c0.4,0.9,1.4,1.3,2.9,1.3l4.3-0.3l0.2,3c-2.1,0.4-3.8,0.5-4.9,0.5
-			c-2.5,0-4.2-0.6-5.2-1.8c-1-1.2-1.4-3.5-1.4-7V79.7h-3.4v-3.1h3.4v-7.3h3.6v7.3h7.6V79.7z"/>
-		<path class="st1" d="M376.5,71.2V67h3.6v4.2H376.5z M376.5,100.6v-24h3.6v24H376.5z"/>
-		<path class="st1" d="M390.6,100.6H387v-24h3.6v1.7c2.4-1.4,4.7-2.2,7-2.2c3,0,5.1,0.8,6.2,2.4c1.1-0.6,2.4-1.2,4.1-1.7
-			c1.7-0.5,3.2-0.7,4.4-0.7c3.2,0,5.4,0.9,6.5,2.6c1.1,1.7,1.7,4.8,1.7,9.2v12.7h-3.6V88c0-3.3-0.3-5.6-1-6.8
-			c-0.6-1.2-2-1.8-4.1-1.8c-1.1,0-2.1,0.2-3.3,0.5s-2,0.6-2.6,0.9l-0.9,0.4c0.4,1.1,0.6,3.4,0.6,7v12.5H402V88.2
-			c0-3.5-0.3-5.8-0.9-7c-0.6-1.2-2-1.8-4.1-1.8c-1,0-2.1,0.2-3.1,0.5c-1.1,0.3-1.9,0.6-2.5,0.9l-0.8,0.4V100.6z"/>
-		<path class="st1" d="M443.4,97.6l1.4-0.1l0.1,2.8c-3.6,0.5-6.8,0.8-9.4,0.8c-3.5,0-5.9-1-7.3-3c-1.4-2-2.2-5.1-2.2-9.3
-			c0-8.4,3.3-12.6,10-12.6c3.2,0,5.6,0.9,7.2,2.7c1.6,1.8,2.4,4.6,2.4,8.5l-0.2,2.7h-15.8c0,2.7,0.5,4.6,1.4,5.9
-			c1,1.3,2.6,1.9,5,1.9C438.5,97.9,441,97.8,443.4,97.6z M442.1,87.2c0-2.9-0.5-5-1.4-6.2c-0.9-1.2-2.5-1.8-4.6-1.8
-			c-2.1,0-3.7,0.6-4.8,1.9c-1.1,1.3-1.6,3.3-1.7,6.1H442.1z"/>
-	</g>
-</g>
-</svg>

+ 0 - 2
runtime-modules/content-working-group/src/genesis.rs

@@ -34,7 +34,6 @@ pub struct GenesisConfigBuilder<T: Trait> {
     channel_creation_enabled: bool,
     channel_handle_constraint: InputValidationLengthConstraint,
     channel_description_constraint: InputValidationLengthConstraint,
-    opening_human_readble_text: InputValidationLengthConstraint,
     curator_application_human_readable_text: InputValidationLengthConstraint,
     curator_exit_rationale_text: InputValidationLengthConstraint,
     channel_title_constraint: InputValidationLengthConstraint,
@@ -124,7 +123,6 @@ impl<T: Trait> Default for GenesisConfigBuilder<T> {
             channel_creation_enabled: true,
             channel_handle_constraint: default_constraint.clone(),
             channel_description_constraint: default_constraint.clone(),
-            opening_human_readble_text: default_constraint.clone(),
             curator_application_human_readable_text: default_constraint.clone(),
             curator_exit_rationale_text: default_constraint.clone(),
             channel_title_constraint: default_constraint.clone(),

+ 19 - 8
runtime-modules/content-working-group/src/lib.rs

@@ -20,7 +20,7 @@ use rstd::collections::btree_set::BTreeSet;
 use rstd::convert::From;
 use rstd::prelude::*;
 use sr_primitives::traits::{One, Zero}; // Member, SimpleArithmetic, MaybeSerialize
-use srml_support::traits::{Currency, ExistenceRequirement, Get, WithdrawReasons};
+use srml_support::traits::{Currency, ExistenceRequirement, WithdrawReasons};
 use srml_support::{
     decl_event,
     decl_module,
@@ -1213,8 +1213,12 @@ decl_module! {
             // Ensure channel owner has signed
             let channel = Self::ensure_channel_owner_signed(origin, &channel_id)?;
 
-            // Ensure prospective new owner can actually become a channel owner
-            let (new_owner_as_channel_owner, _next_channel_id) = Self::ensure_can_register_channel_owner_role_on_member(&new_owner, Some(channel_id))?;
+            // Ensure prospective new owner can actually become a channel owner (with a new channel id)
+            // We do not pass the existing channel id because it is already owned and the call would
+            // return with Err, since the membership system doesn't allow the same ActorInRole to be assigned
+            // to more than one member, and we don't use the returned actor_in_role because its not
+            // for the channel being transferred.
+            Self::ensure_can_register_channel_owner_role_on_member(&new_owner, None)?;
 
             //
             // == MUTATION SAFE ==
@@ -1230,16 +1234,23 @@ decl_module! {
             // Overwrite entry in ChannelById
             ChannelById::<T>::insert(channel_id, new_channel);
 
+            let role = role_types::ActorInRole::new(
+                role_types::Role::ChannelOwner,
+                channel_id
+            );
+
             // Remove
-            let unregistered_role = <members::Module<T>>::unregister_role(role_types::ActorInRole::new(role_types::Role::ChannelOwner, channel_id)).is_ok();
+            let unregistered_role = <members::Module<T>>::unregister_role(
+                role
+            ).is_ok();
 
             assert!(unregistered_role);
 
-            // Dial out to membership module and inform about new role as channe owner.
+            // Dial out to membership module and inform about new role as channel owner.
             let registered_role = <members::Module<T>>::register_role_on_member(
                 new_owner,
-                &new_owner_as_channel_owner)
-                .is_ok();
+                &role
+            ).is_ok();
 
             assert!(registered_role);
 
@@ -2121,7 +2132,7 @@ impl<T: Trait> Module<T> {
     ) -> Result<
         (
             members::ActorInRole<ActorIdInMembersModule<T>>,
-            CuratorId<T>,
+            ChannelId<T>,
         ),
         &'static str,
     > {

+ 53 - 2
runtime-modules/content-working-group/src/tests.rs

@@ -170,7 +170,57 @@ fn create_channel_description_too_short() {
 }
 
 #[test]
-fn transfer_channel_ownership_success() {}
+fn transfer_channel_ownership_success() {
+    TestExternalitiesBuilder::<Test>::default()
+        .build()
+        .execute_with(|| {
+            // Add channel creator as member
+            let channel_creator_member_root_and_controller_account_1 = 1111;
+            let channel_creator_member_root_and_controller_account_2 = 2222;
+
+            let channel_creator_member_id_1 = add_member(
+                channel_creator_member_root_and_controller_account_1,
+                to_vec(CHANNEL_CREATOR_HANDLE),
+            );
+
+            let channel_creator_member_id_2 = add_member(
+                channel_creator_member_root_and_controller_account_2,
+                to_vec(CHANNEL_CREATOR_HANDLE2),
+            );
+
+            let create_channel_fixture =
+                CreateChannelFixture::make_valid_unpulished_video_channel_for(
+                    channel_creator_member_id_1,
+                    None,
+                );
+
+            let channel_id = create_channel_fixture.call_and_assert_success();
+
+            let original_channel = ChannelById::<Test>::get(channel_id);
+
+            let new_role_account = 3333;
+
+            let transfer_result = ContentWorkingGroup::transfer_channel_ownership(
+                Origin::signed(create_channel_fixture.channel_creator_role_account),
+                channel_id,
+                channel_creator_member_id_2,
+                new_role_account,
+            );
+
+            assert_ok!(transfer_result);
+
+            let updated_channel = ChannelById::<Test>::get(channel_id);
+
+            assert_eq!(
+                updated_channel,
+                Channel {
+                    owner: channel_creator_member_id_2,
+                    role_account: new_role_account,
+                    ..original_channel
+                }
+            );
+        });
+}
 
 #[test]
 fn update_channel_as_owner_success() {}
@@ -1355,7 +1405,8 @@ static LEAD_ROOT_AND_CONTROLLER_ACCOUNT: <Test as system::Trait>::AccountId = 12
 static LEAD_ROLE_ACCOUNT: <Test as system::Trait>::AccountId = 1289;
 static LEAD_MEMBER_HANDLE: &str = "IamTheLead";
 static CHANNEL_CREATOR_ROOT_AND_CONTROLLER_ACCOUNT: <Test as system::Trait>::AccountId = 11;
-static CHANNEL_CREATOR_HANDLE: &str = "Coolcreator";
+static CHANNEL_CREATOR_HANDLE: &str = "Coolcreator1";
+static CHANNEL_CREATOR_HANDLE2: &str = "Coolcreator2";
 
 fn make_generic_add_member_params() -> AddMemberAndApplyOnOpeningParams {
     AddMemberAndApplyOnOpeningParams::new(

+ 1 - 1
runtime-modules/governance/src/election.rs

@@ -82,7 +82,7 @@ pub struct TransferableStake<Balance> {
 }
 
 // can we use a type alias to overcome name clashes of public types with other modules?
-pub type ElectionStake<T: Trait> = Stake<BalanceOf<T>>;
+pub type ElectionStake<T> = Stake<BalanceOf<T>>;
 
 decl_storage! {
     trait Store for Module<T: Trait> as CouncilElection {

+ 2 - 0
runtime-modules/membership/src/members.rs

@@ -709,6 +709,8 @@ impl<T: Trait> Module<T> {
 
         assert!(profile.roles.unregister_role(&actor_in_role));
 
+        <MembershipIdByActorInRole<T>>::remove(actor_in_role);
+
         <MemberProfile<T>>::insert(member_id, profile);
 
         Self::deposit_event(RawEvent::MemberUnregisteredRole(member_id, actor_in_role));

+ 1 - 1
src/lib.rs

@@ -115,7 +115,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
     spec_name: create_runtime_str!("joystream-node"),
     impl_name: create_runtime_str!("joystream-node"),
     authoring_version: 6,
-    spec_version: 5,
+    spec_version: 8,
     impl_version: 0,
     apis: RUNTIME_API_VERSIONS,
 };