Merge branch 'develop' of github.com:vector-im/riot-web into t3chguy/updating_stuff
14
CHANGELOG.md
|
@ -1,3 +1,17 @@
|
|||
Changes in [0.10.2](https://github.com/vector-im/riot-web/releases/tag/v0.10.2) (2017-06-06)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.1...v0.10.2)
|
||||
|
||||
* Hotfix for bugs where navigating straight to a URL like /#/login and
|
||||
and /#/forgot_password
|
||||
|
||||
|
||||
Changes in [0.10.1](https://github.com/vector-im/riot-web/releases/tag/v0.10.1) (2017-06-02)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0...v0.10.1)
|
||||
|
||||
* Update to matrix-react-sdk 0.9.1 to fix i18n error which broke start chat in some circumstances
|
||||
|
||||
Changes in [0.10.0](https://github.com/vector-im/riot-web/releases/tag/v0.10.0) (2017-06-02)
|
||||
============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0-rc.2...v0.10.0)
|
||||
|
|
|
@ -134,7 +134,7 @@ Running as a Desktop app
|
|||
|
||||
Riot can also be run as a desktop app, wrapped in electron. You can download a
|
||||
pre-built version from https://riot.im/desktop.html or, if you prefer,
|
||||
built it yourself.
|
||||
build it yourself. Requires Electron >=1.6.0
|
||||
|
||||
To run as a desktop app:
|
||||
|
||||
|
@ -285,7 +285,7 @@ You'll need to do this in each new terminal you open before building Riot.
|
|||
How to add a new translation?
|
||||
=============================
|
||||
|
||||
[<img src="https://translate.nordgedanken.de/widgets/riot-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.nordgedanken.de/engage/riot-web/?utm_source=widget)
|
||||
[<img src="https://translate.riot.im/widgets/riot-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.riot.im/engage/riot-web/?utm_source=widget)
|
||||
|
||||
|
||||
Head to the [translating doc](docs/translating.md)
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"matrix.org"
|
||||
]
|
||||
},
|
||||
"welcomeUserId": "@riot-bot:matrix.org",
|
||||
"piwik": {
|
||||
"url": "https://piwik.riot.im/",
|
||||
"siteId": 1
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
## Adding new strings
|
||||
|
||||
1. Check if the import ``import _t from 'counterpart-riot'`` is present. If not add it to the other import statements.
|
||||
1. Check if the import ``import { _t } from 'matrix-react-sdk/lib/languageHandler';`` is present. If not add it to the other import statements.
|
||||
2. Add ``_t()`` to your string. (Don't forget curly braces when you assign an expression to JSX attributes in the render method)
|
||||
3. Add the String to the ``en_EN.json`` file in ``src/i18n`` or if you are working in matrix-react-sdk you can find the json file in ``src/i18n/strings``
|
||||
3. Add the String to the ``en_EN.json`` file in ``src/i18n/strings`` (respect which repository you are on).
|
||||
|
||||
## Adding variables inside a string.
|
||||
|
||||
|
|
|
@ -8,25 +8,25 @@
|
|||
|
||||
## Step 0: Join #riotweb-translations:matrix.org
|
||||
|
||||
1. Come and join https://riot.im/develop/#/room/#riotweb-translations:matrix.org
|
||||
1. Come and join https://matrix.to/#/#riotweb-translations:matrix.org
|
||||
2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :)
|
||||
|
||||
## Step 1: Preparing your Weblate Profile
|
||||
|
||||
1. Head to https://translate.nordgedanken.de and register either via Github or email
|
||||
1. Head to https://translate.riot.im and register either via Github or email
|
||||
2. After registering check if you got an email to verify your account and click the link (if there is none head to step 1.4)
|
||||
3. Log into weblate
|
||||
4. Head to https://translate.nordgedanken.de/accounts/profile/ and select the languages you know and maybe another language you know too.
|
||||
6. Head to https://translate.nordgedanken.de/accounts/profile/#subscriptions and select Riot Web as Project
|
||||
4. Head to https://translate.riot.im/accounts/profile/ and select the languages you know and maybe another language you know too.
|
||||
6. Head to https://translate.riot.im/accounts/profile/#subscriptions and select Riot Web as Project
|
||||
|
||||
## How to check if your language already is being translated
|
||||
|
||||
Go to https://translate.nordgedanken.de/projects/riot-web/ and visit the 2 sub-projects.
|
||||
Go to https://translate.riot.im/projects/riot-web/ and visit the 2 sub-projects.
|
||||
If your language is listed go to Step 2a and if not go to Step 2b
|
||||
|
||||
## Step 2a: Helping on existing languages.
|
||||
|
||||
1. Head to one of the projects listed https://translate.nordgedanken.de/projects/riot-web/
|
||||
1. Head to one of the projects listed https://translate.riot.im/projects/riot-web/
|
||||
2. Click on the ``translate`` button on the right side of your language
|
||||
3. Fill in the translations in the writeable field. You will see the original English string and the string of your second language above.
|
||||
|
||||
|
@ -34,7 +34,7 @@ Head to the explanations under Steb 2b
|
|||
|
||||
## Step 2b: Adding a new language
|
||||
|
||||
1. Go to one of the projects listed https://translate.nordgedanken.de/projects/riot-web/
|
||||
1. Go to one of the projects listed https://translate.riot.im/projects/riot-web/
|
||||
2. Click the ``Start new language`` button at the bottom
|
||||
3. Select a language
|
||||
4. Start translating like in 2a.3
|
||||
|
|
|
@ -2,12 +2,13 @@
|
|||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"main": "src/electron-main.js",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.2",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "Vector Creations Ltd.",
|
||||
"dependencies": {
|
||||
"electron-window-state": "^4.1.0",
|
||||
"auto-launch": "^5.0.1",
|
||||
"minimist": "^1.2.0"
|
||||
"electron-window-state": "^4.1.0",
|
||||
"minimist": "^1.2.0",
|
||||
"png-to-ico": "^1.0.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
Copyright 2016 Aviral Dasgupta
|
||||
Copyright 2016 OpenMarket Ltd
|
||||
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -155,6 +156,20 @@ electron.ipcMain.on('settings_set', function(ev, key, value) {
|
|||
});
|
||||
|
||||
electron.app.on('ready', () => {
|
||||
|
||||
if (argv.devtools) {
|
||||
try {
|
||||
const { default: installExtension, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer');
|
||||
installExtension(REACT_DEVELOPER_TOOLS)
|
||||
.then((name) => console.log(`Added Extension: ${name}`))
|
||||
.catch((err) => console.log('An error occurred: ', err));
|
||||
installExtension(REACT_PERF)
|
||||
.then((name) => console.log(`Added Extension: ${name}`))
|
||||
.catch((err) => console.log('An error occurred: ', err));
|
||||
} catch(e) {console.log(e);}
|
||||
}
|
||||
|
||||
|
||||
if (vectorConfig.update_base_url) {
|
||||
console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`);
|
||||
updater.start(vectorConfig.update_base_url)
|
||||
|
|
|
@ -16,6 +16,9 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
const {app, Tray, Menu, nativeImage} = require('electron');
|
||||
const pngToIco = require('png-to-ico');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
let trayIcon = null;
|
||||
|
||||
|
@ -57,7 +60,7 @@ exports.create = function(win, config) {
|
|||
trayIcon.on('click', toggleWin);
|
||||
|
||||
let lastFavicon = null;
|
||||
win.webContents.on('page-favicon-updated', function(ev, favicons) {
|
||||
win.webContents.on('page-favicon-updated', async function(ev, favicons) {
|
||||
let newFavicon = config.icon_path;
|
||||
if (favicons && favicons.length > 0 && favicons[0].startsWith('data:')) {
|
||||
newFavicon = favicons[0];
|
||||
|
@ -70,6 +73,15 @@ exports.create = function(win, config) {
|
|||
// if its not default we have to construct into nativeImage
|
||||
if (newFavicon !== config.icon_path) {
|
||||
newFavicon = nativeImage.createFromDataURL(favicons[0]);
|
||||
|
||||
if (process.platform === 'win32') {
|
||||
try {
|
||||
const icoPath = path.join(app.getPath('temp'), 'win32_riot_icon.ico')
|
||||
const icoBuf = await pngToIco(newFavicon.toPNG());
|
||||
fs.writeFileSync(icoPath, icoBuf);
|
||||
newFavicon = icoPath;
|
||||
} catch (e) {console.error(e);}
|
||||
}
|
||||
}
|
||||
|
||||
trayIcon.setImage(newFavicon);
|
||||
|
|
13
package.json
|
@ -2,7 +2,7 @@
|
|||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"main": "electron_app/src/electron-main.js",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.2",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "Vector Creations Ltd.",
|
||||
"repository": {
|
||||
|
@ -46,7 +46,7 @@
|
|||
"start:prod": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js:prod\"",
|
||||
"lint": "eslint src/",
|
||||
"lintall": "eslint src/ test/",
|
||||
"clean": "rimraf lib webapp electron/dist",
|
||||
"clean": "rimraf lib webapp electron_app/dist",
|
||||
"prepublish": "npm run build:compile",
|
||||
"test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false",
|
||||
"test-multi": "karma start"
|
||||
|
@ -66,7 +66,7 @@
|
|||
"highlight.js": "^9.0.0",
|
||||
"linkifyjs": "^2.1.3",
|
||||
"matrix-js-sdk": "0.7.10",
|
||||
"matrix-react-sdk": "0.9.0",
|
||||
"matrix-react-sdk": "0.9.2",
|
||||
"modernizr": "^3.1.0",
|
||||
"pako": "^1.0.5",
|
||||
"q": "^1.4.1",
|
||||
|
@ -76,8 +76,10 @@
|
|||
"react-dom": "^15.4.0",
|
||||
"react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef",
|
||||
"sanitize-html": "^1.11.1",
|
||||
"text-encoding-utf-8": "^1.0.1",
|
||||
"ua-parser-js": "^0.7.10",
|
||||
"url": "^0.11.0"
|
||||
"url": "^0.11.0",
|
||||
"velocity-vector": "vector-im/velocity#059e3b2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^6.6.0",
|
||||
|
@ -101,6 +103,7 @@
|
|||
"css-raw-loader": "^0.1.1",
|
||||
"electron-builder": "^11.2.4",
|
||||
"electron-builder-squirrel-windows": "^11.2.1",
|
||||
"electron-devtools-installer": "^2.2.0",
|
||||
"emojione": "^2.2.7",
|
||||
"eslint": "^3.14.0",
|
||||
"eslint-config-google": "^0.7.1",
|
||||
|
@ -162,7 +165,7 @@
|
|||
"category": "Network;InstantMessaging;Chat",
|
||||
"maintainer": "support@riot.im",
|
||||
"desktop": {
|
||||
"StartupWMClass": "riot-web"
|
||||
"StartupWMClass": "riot"
|
||||
}
|
||||
},
|
||||
"win": {
|
||||
|
|
BIN
res/flags/AD.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.5 KiB |
BIN
res/flags/AE.png
Before Width: | Height: | Size: 841 B After Width: | Height: | Size: 1,015 B |
BIN
res/flags/AF.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.5 KiB |
BIN
res/flags/AG.png
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 4.1 KiB |
BIN
res/flags/AI.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 4.7 KiB |
BIN
res/flags/AL.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3 KiB |
BIN
res/flags/AM.png
Before Width: | Height: | Size: 744 B After Width: | Height: | Size: 654 B |
BIN
res/flags/AO.png
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
res/flags/AQ.png
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
res/flags/AR.png
Before Width: | Height: | Size: 955 B After Width: | Height: | Size: 1.6 KiB |
BIN
res/flags/AS.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.9 KiB |
BIN
res/flags/AT.png
Before Width: | Height: | Size: 701 B After Width: | Height: | Size: 655 B |
BIN
res/flags/AU.png
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 5.1 KiB |
BIN
res/flags/AW.png
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 1.6 KiB |
BIN
res/flags/AX.png
Before Width: | Height: | Size: 900 B After Width: | Height: | Size: 1.8 KiB |
BIN
res/flags/AZ.png
Before Width: | Height: | Size: 978 B After Width: | Height: | Size: 1.7 KiB |
BIN
res/flags/BA.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3 KiB |
BIN
res/flags/BB.png
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 2 KiB |
BIN
res/flags/BD.png
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.8 KiB |
BIN
res/flags/BE.png
Before Width: | Height: | Size: 689 B After Width: | Height: | Size: 558 B |
BIN
res/flags/BF.png
Before Width: | Height: | Size: 954 B After Width: | Height: | Size: 1.6 KiB |
BIN
res/flags/BG.png
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 659 B |
BIN
res/flags/BH.png
Before Width: | Height: | Size: 842 B After Width: | Height: | Size: 1.3 KiB |
BIN
res/flags/BI.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
res/flags/BJ.png
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 811 B |
BIN
res/flags/BL.png
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 566 B |
BIN
res/flags/BM.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
res/flags/BN.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
res/flags/BO.png
Before Width: | Height: | Size: 733 B After Width: | Height: | Size: 668 B |
BIN
res/flags/BQ.png
Before Width: | Height: | Size: 726 B After Width: | Height: | Size: 672 B |
BIN
res/flags/BR.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.7 KiB |
BIN
res/flags/BS.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
res/flags/BT.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.8 KiB |
BIN
res/flags/BV.png
Before Width: | Height: | Size: 866 B After Width: | Height: | Size: 1.7 KiB |
BIN
res/flags/BW.png
Before Width: | Height: | Size: 697 B After Width: | Height: | Size: 669 B |
BIN
res/flags/BY.png
Before Width: | Height: | Size: 950 B After Width: | Height: | Size: 2 KiB |
BIN
res/flags/BZ.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
res/flags/CA.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
res/flags/CC.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
res/flags/CD.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.6 KiB |
BIN
res/flags/CF.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
res/flags/CG.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
res/flags/CH.png
Before Width: | Height: | Size: 800 B After Width: | Height: | Size: 1.5 KiB |
BIN
res/flags/CI.png
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 568 B |
BIN
res/flags/CK.png
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 5.9 KiB |
BIN
res/flags/CL.png
Before Width: | Height: | Size: 964 B After Width: | Height: | Size: 1.6 KiB |
BIN
res/flags/CM.png
Before Width: | Height: | Size: 908 B After Width: | Height: | Size: 1.4 KiB |
BIN
res/flags/CN.png
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
res/flags/CO.png
Before Width: | Height: | Size: 726 B After Width: | Height: | Size: 668 B |
BIN
res/flags/CR.png
Before Width: | Height: | Size: 734 B After Width: | Height: | Size: 785 B |
BIN
res/flags/CU.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3 KiB |
BIN
res/flags/CV.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
res/flags/CW.png
Before Width: | Height: | Size: 970 B After Width: | Height: | Size: 1.7 KiB |
BIN
res/flags/CX.png
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 5 KiB |
BIN
res/flags/CY.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3.5 KiB |
BIN
res/flags/CZ.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
res/flags/DE.png
Before Width: | Height: | Size: 734 B After Width: | Height: | Size: 568 B |
BIN
res/flags/DJ.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3.5 KiB |
BIN
res/flags/DK.png
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 1.2 KiB |
BIN
res/flags/DM.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
res/flags/DO.png
Before Width: | Height: | Size: 946 B After Width: | Height: | Size: 1.6 KiB |
BIN
res/flags/DZ.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
res/flags/EC.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.8 KiB |
BIN
res/flags/EE.png
Before Width: | Height: | Size: 723 B After Width: | Height: | Size: 641 B |
BIN
res/flags/EG.png
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 1.6 KiB |
BIN
res/flags/EH.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
res/flags/ER.png
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 4 KiB |
BIN
res/flags/ES.png
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
res/flags/ET.png
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 3.4 KiB |
BIN
res/flags/FI.png
Before Width: | Height: | Size: 841 B After Width: | Height: | Size: 1.5 KiB |
BIN
res/flags/FJ.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 4.9 KiB |
BIN
res/flags/FK.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.1 KiB |
BIN
res/flags/FM.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
res/flags/FO.png
Before Width: | Height: | Size: 834 B After Width: | Height: | Size: 1.7 KiB |
BIN
res/flags/FR.png
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 566 B |
BIN
res/flags/GA.png
Before Width: | Height: | Size: 753 B After Width: | Height: | Size: 661 B |
BIN
res/flags/GB.png
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
res/flags/GD.png
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 5.6 KiB |
BIN
res/flags/GE.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.5 KiB |
BIN
res/flags/GF.png
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
res/flags/GG.png
Before Width: | Height: | Size: 1,001 B After Width: | Height: | Size: 2.7 KiB |
BIN
res/flags/GH.png
Before Width: | Height: | Size: 1,010 B After Width: | Height: | Size: 1.8 KiB |
BIN
res/flags/GI.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.7 KiB |
BIN
res/flags/GL.png
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3 KiB |
BIN
res/flags/GM.png
Before Width: | Height: | Size: 743 B After Width: | Height: | Size: 709 B |
BIN
res/flags/GN.png
Before Width: | Height: | Size: 699 B After Width: | Height: | Size: 560 B |
BIN
res/flags/GP.png
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
res/flags/GQ.png
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 3 KiB |
BIN
res/flags/GR.png
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2 KiB |
BIN
res/flags/GS.png
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.6 KiB |
BIN
res/flags/GT.png
Before Width: | Height: | Size: 949 B After Width: | Height: | Size: 1.8 KiB |