Merge remote-tracking branch 'upstream/release-7.5.0' into chore/merge-release-into-dev-21-16-12

This commit is contained in:
Taranto 2021-12-16 13:38:43 +00:00
commit e9b2280fc3
33 changed files with 250 additions and 64 deletions

View file

@ -29,8 +29,8 @@ const BINARIES = {
dir: 'bitcoin-22.0/bin' dir: 'bitcoin-22.0/bin'
}, },
ETH: { ETH: {
url: 'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.12-6c4dc6c3.tar.gz', url: 'https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.13-7a0c19f8.tar.gz',
dir: 'geth-linux-amd64-1.10.12-6c4dc6c3' dir: 'geth-linux-amd64-1.10.13-7a0c19f8'
}, },
ZEC: { ZEC: {
url: 'https://z.cash/downloads/zcash-4.5.1-1-linux64-debian-stretch.tar.gz', url: 'https://z.cash/downloads/zcash-4.5.1-1-linux64-debian-stretch.tar.gz',
@ -45,8 +45,8 @@ const BINARIES = {
dir: 'litecoin-0.18.1/bin' dir: 'litecoin-0.18.1/bin'
}, },
BCH: { BCH: {
url: 'https://github.com/bitcoin-cash-node/bitcoin-cash-node/releases/download/v23.1.0/bitcoin-cash-node-23.1.0-x86_64-linux-gnu.tar.gz', url: 'https://github.com/bitcoin-cash-node/bitcoin-cash-node/releases/download/v24.0.0/bitcoin-cash-node-24.0.0-x86_64-linux-gnu.tar.gz',
dir: 'bitcoin-cash-node-23.1.0/bin', dir: 'bitcoin-cash-node-24.0.0/bin',
files: [['bitcoind', 'bitcoincashd'], ['bitcoin-cli', 'bitcoincash-cli']] files: [['bitcoind', 'bitcoincashd'], ['bitcoin-cli', 'bitcoincash-cli']]
}, },
XMR: { XMR: {

View file

@ -1,5 +1,8 @@
const T = require('./time') const T = require('./time')
const CASH_OUT_MINIMUM_AMOUNT_OF_CASSETTES = 2
const CASH_OUT_MAXIMUM_AMOUNT_OF_CASSETTES = 4
const anonymousCustomer = { const anonymousCustomer = {
uuid: '47ac1184-8102-11e7-9079-8f13a7117867', uuid: '47ac1184-8102-11e7-9079-8f13a7117867',
name: 'anonymous' name: 'anonymous'

View file

@ -61,7 +61,7 @@ function addName (pings, events, config) {
const statuses = [ const statuses = [
getStatus( getStatus(
_.first(pings[machine.deviceId]), _.first(pings[machine.deviceId]),
_.first(checkStuckScreen(events, machine.name)) _.first(checkStuckScreen(events, machine))
) )
] ]

View file

@ -85,12 +85,8 @@ function buildAlerts (pings, balances, events, devices) {
alerts.general = _.filter(r => !r.deviceId, balances) alerts.general = _.filter(r => !r.deviceId, balances)
_.forEach(device => { _.forEach(device => {
const deviceId = device.deviceId const deviceId = device.deviceId
const deviceName = device.name
const deviceEvents = events.filter(function (eventRow) {
return eventRow.device_id === deviceId
})
const ping = pings[deviceId] || [] const ping = pings[deviceId] || []
const stuckScreen = checkStuckScreen(deviceEvents, deviceName) const stuckScreen = checkStuckScreen(events, device)
alerts.devices = _.set([deviceId, 'balanceAlerts'], _.filter( alerts.devices = _.set([deviceId, 'balanceAlerts'], _.filter(
['deviceId', deviceId], ['deviceId', deviceId],
@ -98,7 +94,7 @@ function buildAlerts (pings, balances, events, devices) {
), alerts.devices) ), alerts.devices)
alerts.devices[deviceId].deviceAlerts = _.isEmpty(ping) ? stuckScreen : ping alerts.devices[deviceId].deviceAlerts = _.isEmpty(ping) ? stuckScreen : ping
alerts.deviceNames[deviceId] = deviceName alerts.deviceNames[deviceId] = device.name
}, devices) }, devices)
return alerts return alerts
@ -110,12 +106,13 @@ function checkPings (devices) {
return _.zipObject(deviceIds)(pings) return _.zipObject(deviceIds)(pings)
} }
function checkStuckScreen (deviceEvents, machineName) { function checkStuckScreen (deviceEvents, machine) {
const sortedEvents = _.sortBy( const lastEvent = _.pipe(
utils.getDeviceTime, _.filter(e => e.device_id === machine.deviceId),
_.map(utils.parseEventNote, deviceEvents) _.sortBy(utils.getDeviceTime),
) _.map(utils.parseEventNote),
const lastEvent = _.last(sortedEvents) _.last
)(deviceEvents)
if (!lastEvent) return [] if (!lastEvent) return []
@ -125,6 +122,7 @@ function checkStuckScreen (deviceEvents, machineName) {
if (isIdle) return [] if (isIdle) return []
const age = Math.floor(lastEvent.age) const age = Math.floor(lastEvent.age)
const machineName = machine.name
if (age > STALE_STATE) return [{ code: STALE, state, age, machineName }] if (age > STALE_STATE) return [{ code: STALE, state, age, machineName }]
return [] return []

View file

@ -22,7 +22,7 @@ function unpair (deviceId) {
return db.tx(t => return db.tx(t =>
t.none(`INSERT INTO unpaired_devices(id, device_id, name, model, paired, unpaired) t.none(`INSERT INTO unpaired_devices(id, device_id, name, model, paired, unpaired)
SELECT $1, $2, d.name, d.model, d.created, now() SELECT $1, $2, d.name, d.model, d.created, now()
FROM devices d FROM devices d
WHERE device_id=$2` WHERE device_id=$2`
, [uuid.v4(), deviceId]) , [uuid.v4(), deviceId])
.then(() => { .then(() => {

View file

@ -18,27 +18,10 @@ module.exports.up = function (next) {
} }
loadLatest(OLD_SETTINGS_LOADER_SCHEMA_VERSION) loadLatest(OLD_SETTINGS_LOADER_SCHEMA_VERSION)
.then(async settings => { .then(settings => _.isEmpty(settings.config)
if (_.isEmpty(settings.config)) { ? next()
return { : migrateConfig(settings)
settings, )
machines: []
}
}
return {
settings,
machines: await machineLoader.getMachineNames(settings.config)
}
})
.then(({ settings, machines }) => {
if (_.isEmpty(settings.config)) {
return next()
}
const sql = machines
? machines.map(m => `update devices set name = '${m.name}' where device_id = '${m.deviceId}'`)
: []
return db.multi(sql, () => migrateConfig(settings))
})
.catch(err => { .catch(err => {
if (err.message === 'lamassu-server is not configured') { if (err.message === 'lamassu-server is not configured') {
return next() return next()

View file

@ -176,7 +176,7 @@ const CashboxHistory = ({ machines, currency }) => {
{ {
name: 'total', name: 'total',
header: 'Total', header: 'Total',
width: 100, width: 180,
textAlign: 'right', textAlign: 'right',
view: it => ( view: it => (
<span> <span>
@ -219,7 +219,7 @@ const CashboxHistory = ({ machines, currency }) => {
{ {
name: '', name: '',
header: 'Edit', header: 'Edit',
width: 150, width: 80,
textAlign: 'right', textAlign: 'right',
view: it => { view: it => {
if (notEditing(it.id)) if (notEditing(it.id))

View file

@ -47,7 +47,6 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => {
const onContinue = it => { const onContinue = it => {
const newConfig = R.merge(config, it) const newConfig = R.merge(config, it)
if (isLastStep) { if (isLastStep) {
const wasCashboxEmptied = [ const wasCashboxEmptied = [
config?.wasCashboxEmptied, config?.wasCashboxEmptied,

View file

@ -115,7 +115,8 @@ const WizardStep = ({
lastStep, lastStep,
steps, steps,
fiatCurrency, fiatCurrency,
onContinue onContinue,
initialValues
}) => { }) => {
const classes = useStyles() const classes = useStyles()
@ -219,12 +220,7 @@ const WizardStep = ({
validateOnBlur={false} validateOnBlur={false}
validateOnChange={false} validateOnChange={false}
onSubmit={onContinue} onSubmit={onContinue}
initialValues={{ initialValues={initialValues}
cassette1: '',
cassette2: '',
cassette3: '',
cassette4: ''
}}
enableReinitialize enableReinitialize
validationSchema={steps[step - 1].schema}> validationSchema={steps[step - 1].schema}>
{({ values, errors }) => ( {({ values, errors }) => (

View file

@ -1,13 +1,13 @@
{ {
"files": { "files": {
"main.js": "/static/js/main.e8258f08.chunk.js", "main.js": "/static/js/main.af6b9292.chunk.js",
"main.js.map": "/static/js/main.e8258f08.chunk.js.map", "main.js.map": "/static/js/main.af6b9292.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.5b925903.js", "runtime-main.js": "/static/js/runtime-main.5b925903.js",
"runtime-main.js.map": "/static/js/runtime-main.5b925903.js.map", "runtime-main.js.map": "/static/js/runtime-main.5b925903.js.map",
"static/js/2.0ff6530c.chunk.js": "/static/js/2.0ff6530c.chunk.js", "static/js/2.cbbac6fe.chunk.js": "/static/js/2.cbbac6fe.chunk.js",
"static/js/2.0ff6530c.chunk.js.map": "/static/js/2.0ff6530c.chunk.js.map", "static/js/2.cbbac6fe.chunk.js.map": "/static/js/2.cbbac6fe.chunk.js.map",
"index.html": "/index.html", "index.html": "/index.html",
"static/js/2.0ff6530c.chunk.js.LICENSE.txt": "/static/js/2.0ff6530c.chunk.js.LICENSE.txt", "static/js/2.cbbac6fe.chunk.js.LICENSE.txt": "/static/js/2.cbbac6fe.chunk.js.LICENSE.txt",
"static/media/3-cassettes-open-1-left.d6d9aa73.svg": "/static/media/3-cassettes-open-1-left.d6d9aa73.svg", "static/media/3-cassettes-open-1-left.d6d9aa73.svg": "/static/media/3-cassettes-open-1-left.d6d9aa73.svg",
"static/media/3-cassettes-open-2-left.a9ee8d4c.svg": "/static/media/3-cassettes-open-2-left.a9ee8d4c.svg", "static/media/3-cassettes-open-2-left.a9ee8d4c.svg": "/static/media/3-cassettes-open-2-left.a9ee8d4c.svg",
"static/media/3-cassettes-open-3-left.08fed660.svg": "/static/media/3-cassettes-open-3-left.08fed660.svg", "static/media/3-cassettes-open-3-left.08fed660.svg": "/static/media/3-cassettes-open-3-left.08fed660.svg",
@ -25,8 +25,11 @@
"static/media/cashout-cassette-1.fac6c691.svg": "/static/media/cashout-cassette-1.fac6c691.svg", "static/media/cashout-cassette-1.fac6c691.svg": "/static/media/cashout-cassette-1.fac6c691.svg",
"static/media/cashout-cassette-2.34a98cfa.svg": "/static/media/cashout-cassette-2.34a98cfa.svg", "static/media/cashout-cassette-2.34a98cfa.svg": "/static/media/cashout-cassette-2.34a98cfa.svg",
"static/media/closed.b853a619.svg": "/static/media/closed.b853a619.svg", "static/media/closed.b853a619.svg": "/static/media/closed.b853a619.svg",
"static/media/comet.0a722656.svg": "/static/media/comet.0a722656.svg",
"static/media/comet.431ab3d7.svg": "/static/media/comet.431ab3d7.svg",
"static/media/comet.56af080c.svg": "/static/media/comet.56af080c.svg", "static/media/comet.56af080c.svg": "/static/media/comet.56af080c.svg",
"static/media/comet.77ebaba5.svg": "/static/media/comet.77ebaba5.svg", "static/media/comet.77ebaba5.svg": "/static/media/comet.77ebaba5.svg",
"static/media/comet.8877f6c3.svg": "/static/media/comet.8877f6c3.svg",
"static/media/comet.8aef4281.svg": "/static/media/comet.8aef4281.svg", "static/media/comet.8aef4281.svg": "/static/media/comet.8aef4281.svg",
"static/media/comet.9dc291f2.svg": "/static/media/comet.9dc291f2.svg", "static/media/comet.9dc291f2.svg": "/static/media/comet.9dc291f2.svg",
"static/media/comet.aaf93613.svg": "/static/media/comet.aaf93613.svg", "static/media/comet.aaf93613.svg": "/static/media/comet.aaf93613.svg",
@ -37,6 +40,7 @@
"static/media/crossed-camera.28e8f7eb.svg": "/static/media/crossed-camera.28e8f7eb.svg", "static/media/crossed-camera.28e8f7eb.svg": "/static/media/crossed-camera.28e8f7eb.svg",
"static/media/current.68045777.svg": "/static/media/current.68045777.svg", "static/media/current.68045777.svg": "/static/media/current.68045777.svg",
"static/media/current.9bbfa93f.svg": "/static/media/current.9bbfa93f.svg", "static/media/current.9bbfa93f.svg": "/static/media/current.9bbfa93f.svg",
"static/media/custom-requirement.38819635.svg": "/static/media/custom-requirement.38819635.svg",
"static/media/disabled.347e2b5e.svg": "/static/media/disabled.347e2b5e.svg", "static/media/disabled.347e2b5e.svg": "/static/media/disabled.347e2b5e.svg",
"static/media/disabled.aede2073.svg": "/static/media/disabled.aede2073.svg", "static/media/disabled.aede2073.svg": "/static/media/disabled.aede2073.svg",
"static/media/dispenser-1.e4200f4e.svg": "/static/media/dispenser-1.e4200f4e.svg", "static/media/dispenser-1.e4200f4e.svg": "/static/media/dispenser-1.e4200f4e.svg",
@ -58,6 +62,9 @@
"static/media/icon-litecoin-colour.bd861b5e.svg": "/static/media/icon-litecoin-colour.bd861b5e.svg", "static/media/icon-litecoin-colour.bd861b5e.svg": "/static/media/icon-litecoin-colour.bd861b5e.svg",
"static/media/icon-tether-colour.92d7fda4.svg": "/static/media/icon-tether-colour.92d7fda4.svg", "static/media/icon-tether-colour.92d7fda4.svg": "/static/media/icon-tether-colour.92d7fda4.svg",
"static/media/icon-zcash-colour.68b1c20b.svg": "/static/media/icon-zcash-colour.68b1c20b.svg", "static/media/icon-zcash-colour.68b1c20b.svg": "/static/media/icon-zcash-colour.68b1c20b.svg",
"static/media/keyboard.cc22b859.svg": "/static/media/keyboard.cc22b859.svg",
"static/media/keypad.dfb6094e.svg": "/static/media/keypad.dfb6094e.svg",
"static/media/list.65e6f8cb.svg": "/static/media/list.65e6f8cb.svg",
"static/media/logo.8ee79eab.svg": "/static/media/logo.8ee79eab.svg", "static/media/logo.8ee79eab.svg": "/static/media/logo.8ee79eab.svg",
"static/media/month_change.58940268.svg": "/static/media/month_change.58940268.svg", "static/media/month_change.58940268.svg": "/static/media/month_change.58940268.svg",
"static/media/month_change_right.0c3eb9a1.svg": "/static/media/month_change_right.0c3eb9a1.svg", "static/media/month_change_right.0c3eb9a1.svg": "/static/media/month_change_right.0c3eb9a1.svg",
@ -67,6 +74,7 @@
"static/media/pumpkin.877c3432.svg": "/static/media/pumpkin.877c3432.svg", "static/media/pumpkin.877c3432.svg": "/static/media/pumpkin.877c3432.svg",
"static/media/regular.3140e691.svg": "/static/media/regular.3140e691.svg", "static/media/regular.3140e691.svg": "/static/media/regular.3140e691.svg",
"static/media/right.d3dd4af6.svg": "/static/media/right.d3dd4af6.svg", "static/media/right.d3dd4af6.svg": "/static/media/right.d3dd4af6.svg",
"static/media/right_white.3e1a2119.svg": "/static/media/right_white.3e1a2119.svg",
"static/media/spring2.9f3bb2f7.svg": "/static/media/spring2.9f3bb2f7.svg", "static/media/spring2.9f3bb2f7.svg": "/static/media/spring2.9f3bb2f7.svg",
"static/media/stripes.876e4081.svg": "/static/media/stripes.876e4081.svg", "static/media/stripes.876e4081.svg": "/static/media/stripes.876e4081.svg",
"static/media/tomato.4b561f6f.svg": "/static/media/tomato.4b561f6f.svg", "static/media/tomato.4b561f6f.svg": "/static/media/tomato.4b561f6f.svg",
@ -74,7 +82,9 @@
"static/media/transaction.d1309f34.svg": "/static/media/transaction.d1309f34.svg", "static/media/transaction.d1309f34.svg": "/static/media/transaction.d1309f34.svg",
"static/media/true.b3b76849.svg": "/static/media/true.b3b76849.svg", "static/media/true.b3b76849.svg": "/static/media/true.b3b76849.svg",
"static/media/up.bcdf0fc7.svg": "/static/media/up.bcdf0fc7.svg", "static/media/up.bcdf0fc7.svg": "/static/media/up.bcdf0fc7.svg",
"static/media/white.144118ff.svg": "/static/media/white.144118ff.svg",
"static/media/white.158a991b.svg": "/static/media/white.158a991b.svg", "static/media/white.158a991b.svg": "/static/media/white.158a991b.svg",
"static/media/white.16f4b162.svg": "/static/media/white.16f4b162.svg",
"static/media/white.1ca0dea7.svg": "/static/media/white.1ca0dea7.svg", "static/media/white.1ca0dea7.svg": "/static/media/white.1ca0dea7.svg",
"static/media/white.20ca66ec.svg": "/static/media/white.20ca66ec.svg", "static/media/white.20ca66ec.svg": "/static/media/white.20ca66ec.svg",
"static/media/white.341f0eae.svg": "/static/media/white.341f0eae.svg", "static/media/white.341f0eae.svg": "/static/media/white.341f0eae.svg",
@ -85,8 +95,11 @@
"static/media/white.5750bfd1.svg": "/static/media/white.5750bfd1.svg", "static/media/white.5750bfd1.svg": "/static/media/white.5750bfd1.svg",
"static/media/white.5a37327b.svg": "/static/media/white.5a37327b.svg", "static/media/white.5a37327b.svg": "/static/media/white.5a37327b.svg",
"static/media/white.5f161f2c.svg": "/static/media/white.5f161f2c.svg", "static/media/white.5f161f2c.svg": "/static/media/white.5f161f2c.svg",
"static/media/white.636f4cd1.svg": "/static/media/white.636f4cd1.svg",
"static/media/white.6dd4c28a.svg": "/static/media/white.6dd4c28a.svg", "static/media/white.6dd4c28a.svg": "/static/media/white.6dd4c28a.svg",
"static/media/white.81edd31f.svg": "/static/media/white.81edd31f.svg", "static/media/white.81edd31f.svg": "/static/media/white.81edd31f.svg",
"static/media/white.8406a3ba.svg": "/static/media/white.8406a3ba.svg",
"static/media/white.87f75e06.svg": "/static/media/white.87f75e06.svg",
"static/media/white.8ccc4767.svg": "/static/media/white.8ccc4767.svg", "static/media/white.8ccc4767.svg": "/static/media/white.8ccc4767.svg",
"static/media/white.958fe55d.svg": "/static/media/white.958fe55d.svg", "static/media/white.958fe55d.svg": "/static/media/white.958fe55d.svg",
"static/media/white.9814829c.svg": "/static/media/white.9814829c.svg", "static/media/white.9814829c.svg": "/static/media/white.9814829c.svg",
@ -114,6 +127,7 @@
"static/media/zodiac.74570495.svg": "/static/media/zodiac.74570495.svg", "static/media/zodiac.74570495.svg": "/static/media/zodiac.74570495.svg",
"static/media/zodiac.779a5bbc.svg": "/static/media/zodiac.779a5bbc.svg", "static/media/zodiac.779a5bbc.svg": "/static/media/zodiac.779a5bbc.svg",
"static/media/zodiac.84e03611.svg": "/static/media/zodiac.84e03611.svg", "static/media/zodiac.84e03611.svg": "/static/media/zodiac.84e03611.svg",
"static/media/zodiac.8bc58042.svg": "/static/media/zodiac.8bc58042.svg",
"static/media/zodiac.8c3f113c.svg": "/static/media/zodiac.8c3f113c.svg", "static/media/zodiac.8c3f113c.svg": "/static/media/zodiac.8c3f113c.svg",
"static/media/zodiac.8c7b512b.svg": "/static/media/zodiac.8c7b512b.svg", "static/media/zodiac.8c7b512b.svg": "/static/media/zodiac.8c7b512b.svg",
"static/media/zodiac.9be6e999.svg": "/static/media/zodiac.9be6e999.svg", "static/media/zodiac.9be6e999.svg": "/static/media/zodiac.9be6e999.svg",
@ -132,7 +146,7 @@
}, },
"entrypoints": [ "entrypoints": [
"static/js/runtime-main.5b925903.js", "static/js/runtime-main.5b925903.js",
"static/js/2.0ff6530c.chunk.js", "static/js/2.cbbac6fe.chunk.js",
"static/js/main.e8258f08.chunk.js" "static/js/main.af6b9292.chunk.js"
] ]
} }

View file

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="robots" content="noindex"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Lamassu Admin</title></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root" class="root"></div><script>!function(e){function r(r){for(var n,a,l=r[0],i=r[1],f=r[2],c=0,s=[];c<l.length;c++)a=l[c],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,f||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var i=t[l];0!==o[i]&&(n=!1)}n&&(u.splice(r--,1),e=a(a.s=t[0]))}return e}var n={},o={1:0},u=[];function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.m=e,a.c=n,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)a.d(t,n,function(r){return e[r]}.bind(null,n));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="/";var l=this["webpackJsonplamassu-admin"]=this["webpackJsonplamassu-admin"]||[],i=l.push.bind(l);l.push=r,l=l.slice();for(var f=0;f<l.length;f++)r(l[f]);var p=i;t()}([])</script><script src="/static/js/2.0ff6530c.chunk.js"></script><script src="/static/js/main.e8258f08.chunk.js"></script></body></html> <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="robots" content="noindex"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Lamassu Admin</title></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root" class="root"></div><script>!function(e){function r(r){for(var n,a,l=r[0],i=r[1],f=r[2],c=0,s=[];c<l.length;c++)a=l[c],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,f||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var i=t[l];0!==o[i]&&(n=!1)}n&&(u.splice(r--,1),e=a(a.s=t[0]))}return e}var n={},o={1:0},u=[];function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.m=e,a.c=n,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)a.d(t,n,function(r){return e[r]}.bind(null,n));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="/";var l=this["webpackJsonplamassu-admin"]=this["webpackJsonplamassu-admin"]||[],i=l.push.bind(l);l.push=r,l=l.slice();for(var f=0;f<l.length;f++)r(l[f]);var p=i;t()}([])</script><script src="/static/js/2.cbbac6fe.chunk.js"></script><script src="/static/js/main.af6b9292.chunk.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="icon/customer-nav/note/comet" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M18,1 C18.2761424,1 18.5261424,1.11192881 18.7071068,1.29289322 C18.8880712,1.47385763 19,1.72385763 19,2 L19,2 L19,18 C19,18.2761424 18.8880712,18.5261424 18.7071068,18.7071068 C18.5261424,18.8880712 18.2761424,19 18,19 L18,19 L2,19 C1.72385763,19 1.47385763,18.8880712 1.29289322,18.7071068 C1.11192881,18.5261424 1,18.2761424 1,18 L1,18 L1,2 C1,1.72385763 1.11192881,1.47385763 1.29289322,1.29289322 C1.47385763,1.11192881 1.72385763,1 2,1 L2,1 Z" id="Rectangle" stroke="#5F668A" stroke-width="2"></path>
<line x1="5" y1="5" x2="15" y2="5" id="Line-4" stroke="#5F668A" stroke-width="2" stroke-linecap="round"></line>
<line x1="5" y1="13" x2="10" y2="13" id="Line-4-Copy" stroke="#5F668A" stroke-width="2" stroke-linecap="round"></line>
<line x1="5" y1="9" x2="15" y2="9" id="Line-4" stroke="#5F668A" stroke-width="2" stroke-linecap="round"></line>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon/customer-nav/photos/comet</title>
<g id="icon/customer-nav/photos/comet" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle" stroke="#5F668A" stroke-width="2" x="1" y="1" width="18" height="18" rx="1"></rect>
<circle id="Oval" stroke="#5F668A" stroke-width="2" cx="15" cy="5" r="1"></circle>
<polyline id="Path" stroke="#5F668A" stroke-width="2" stroke-linejoin="round" points="1 19 7 13 13 19"></polyline>
<path d="M13.3333333,14 L18,19 L13.3333333,19 L11,16.5 L13.3333333,14 Z" id="Combined-Shape" stroke="#5F668A" stroke-width="2" stroke-linejoin="round"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 850 B

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="18px" viewBox="0 0 24 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon/ID/photo/new/comet</title>
<g id="icon/ID/photo/new/comet" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<path d="M12,14 C9.7912,14 8,12.2088 8,10 C8,7.7912 9.7912,6 12,6 C14.2088,6 16,7.7912 16,10 C16,12.2088 14.2088,14 12,14 Z M16.7142857,3.4 L14.3571429,1 L9.64285714,1 L7.28571429,3.4 L1,3.4 L1,17 L23,17 L23,3.4 L16.7142857,3.4 Z" id="Stroke-1" stroke="#5F668A" stroke-width="1.6"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 686 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="72px" height="44px" viewBox="0 0 72 44" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>entry-icon/keyboard</title>
<g id="entry-icon/keyboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group-2-Copy-2" transform="translate(0.000000, 6.000000)" fill="#1B2559">
<rect id="Rectangle" x="0" y="0" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-5" x="0" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-8" x="0" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-3" x="12" y="1.13686838e-13" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-6" x="12" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-9" x="12" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-11" x="64" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-32" x="52" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-4" x="24" y="1.13686838e-13" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-26" x="36" y="1.13686838e-13" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-27" x="48" y="1.13686838e-13" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-28" x="60" y="1.13686838e-13" width="12" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-7" x="24" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-29" x="36" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-30" x="48" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-31" x="60" y="12" width="12" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-10" x="24" y="24" width="24" height="8" rx="2"></rect>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="72px" height="44px" viewBox="0 0 72 44" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>entry-icon/keypad</title>
<g id="entry-icon/keypad" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group" transform="translate(20.000000, 0.000000)" fill="#1B2559">
<rect id="Rectangle" x="0" y="0" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-5" x="0" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-8" x="0" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-3" x="12" y="0" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-6" x="12" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-9" x="12" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-11" x="12" y="36" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-4" x="24" y="0" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-7" x="24" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-10" x="24" y="24" width="8" height="8" rx="2"></rect>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="72px" height="44px" viewBox="0 0 72 44" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>entry-icon/list</title>
<g id="entry-icon/list" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group-4" transform="translate(8.000000, 0.000000)" fill="#1B2559">
<rect id="Rectangle-Copy-33" x="0" y="0" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-35" x="0" y="12" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-37" x="0" y="24" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-39" x="0" y="36" width="8" height="8" rx="2"></rect>
<rect id="Rectangle-Copy-34" x="12" y="2" width="44" height="4" rx="1"></rect>
<rect id="Rectangle-Copy-36" x="12" y="14" width="44" height="4" rx="1"></rect>
<rect id="Rectangle-Copy-38" x="12" y="26" width="44" height="4" rx="1"></rect>
<rect id="Rectangle-Copy-40" x="12" y="38" width="44" height="4" rx="1"></rect>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<circle id="path-1-right" cx="10" cy="10" r="10"></circle>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="pop-up/action/download-logs/date-range-copy-2" transform="translate(-232.000000, -187.000000)">
<g id="icon/sf-contain-b-copy-4" transform="translate(242.000000, 197.000000) scale(-1, 1) rotate(-270.000000) translate(-242.000000, -197.000000) translate(232.000000, 187.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1-right"></use>
</mask>
<use id="Mask" fill="#FFFFFF" fill-rule="nonzero" xlink:href="#path-1-right"></use>
<g id="icon/sf-small/wizzard" mask="url(#mask-2)" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(6.666667, 6.000000)" id="Group">
<g>
<polyline id="Path-3" stroke="#1B2559" stroke-width="2" points="0 4.83333333 3.33333333 8.16666667 6.66666667 4.83333333"></polyline>
<line x1="3.33333333" y1="0.25" x2="3.33333333" y2="6.5" id="Path-4" stroke="#1B2559" stroke-width="2"></line>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
<desc>Created with Sketch.</desc>
<defs>
<rect id="path-1" x="0" y="0" width="22" height="22"></rect>
</defs>
<g id="icon/action/delete/white" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="Background"></g>
<line x1="9" y1="9" x2="9" y2="18" id="Stroke-1" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></line>
<line x1="13" y1="9" x2="13" y2="18" id="Stroke-2" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" mask="url(#mask-2)"></line>
<g id="Group-9" mask="url(#mask-2)" stroke="#FFFFFF" stroke-linecap="round" stroke-width="2">
<g transform="translate(1.000000, 1.000000)">
<polyline id="Stroke-3" stroke-linejoin="round" points="2 5 4 20 16 20 18 5"></polyline>
<line x1="0" y1="4" x2="20" y2="4" id="Stroke-5"></line>
<path d="M13,3 C13,1.343 11.657,0 10,0 C8.343,0 7,1.343 7,3" id="Stroke-7"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="icon/button/replace/white" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Group-3" transform="translate(0.500000, 0.500000)" stroke="#FFFFFF">
<g id="Group-2">
<path d="M3.27636475,10.2264084 C2.67216087,9.96069246 2.10487152,9.58126145 1.60869691,9.087544 C-0.521488181,6.9675304 -0.538316861,3.54693703 1.57123953,1.44692357 C1.86137314,1.15837428 2.17625375,0.909794042 2.50930653,0.701182852" id="Stroke-1"></path>
<polyline id="Stroke-3" points="3.0943493 1.69429658 3.08837783 0.545717786 1.99994228 0"></polyline>
</g>
<g id="Group-2" transform="translate(8.999987, 5.500035) scale(-1, -1) translate(-8.999987, -5.500035) translate(6.999974, 0.000000)">
<path d="M3.27636475,10.2264084 C2.67216087,9.96069246 2.10487152,9.58126145 1.60869691,9.087544 C-0.521488181,6.9675304 -0.538316861,3.54693703 1.57123953,1.44692357 C1.86137314,1.15837428 2.17625375,0.909794042 2.50930653,0.701182852" id="Stroke-1"></path>
<polyline id="Stroke-3" points="3.0943493 1.69429658 3.08837783 0.545717786 1.99994228 3.80623901e-14"></polyline>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon/customer-nav/photos/white</title>
<g id="icon/customer-nav/photos/white" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle" stroke="#FFFFFF" stroke-width="2" x="1" y="1" width="18" height="18" rx="1"></rect>
<circle id="Oval" stroke="#FFFFFF" stroke-width="2" cx="15" cy="5" r="1"></circle>
<polyline id="Path" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round" points="1 19 7 13 13 19"></polyline>
<path d="M13.3333333,14 L18,19 L13.3333333,19 L11,16.5 L13.3333333,14 Z" id="Combined-Shape" stroke="#FFFFFF" stroke-width="2" stroke-linejoin="round"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 850 B

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
<desc>Created with Sketch.</desc>
<g id="icon/sf-small/filter/white" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M19,2.5 C19,1.11909091 17.8809091,0 16.5,0 C15.1190909,0 14,1.11909091 14,2.5 C14,3.88090909 15.1190909,5 16.5,5 C17.8809091,5 19,3.88090909 19,2.5 Z" id="Stroke-1" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M5,9.5 C5,8.11909091 3.88090909,7 2.5,7 C1.11909091,7 0,8.11909091 0,9.5 C0,10.8818182 1.11909091,12 2.5,12 C3.88090909,12 5,10.8818182 5,9.5 Z" id="Stroke-7" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M19,17.5 C19,16.1190909 17.8809091,15 16.5,15 C15.1190909,15 14,16.1190909 14,17.5 C14,18.8809091 15.1190909,20 16.5,20 C17.8809091,20 19,18.8809091 19,17.5 Z" id="Stroke-9" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<line x1="14" y1="2.5" x2="0.498999482" y2="2.5" id="Line-3" stroke="#FFFFFF" stroke-width="2" stroke-linecap="square"></line>
<line x1="20" y1="9.5" x2="6.49899948" y2="9.5" id="Line-3-Copy" stroke="#FFFFFF" stroke-width="2" stroke-linecap="square"></line>
<line x1="14" y1="17.5" x2="0.498999482" y2="17.5" id="Line-3-Copy-2" stroke="#FFFFFF" stroke-width="2" stroke-linecap="square"></line>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="icon/customer-nav/note/white" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M18,1 C18.2761424,1 18.5261424,1.11192881 18.7071068,1.29289322 C18.8880712,1.47385763 19,1.72385763 19,2 L19,2 L19,18 C19,18.2761424 18.8880712,18.5261424 18.7071068,18.7071068 C18.5261424,18.8880712 18.2761424,19 18,19 L18,19 L2,19 C1.72385763,19 1.47385763,18.8880712 1.29289322,18.7071068 C1.11192881,18.5261424 1,18.2761424 1,18 L1,18 L1,2 C1,1.72385763 1.11192881,1.47385763 1.29289322,1.29289322 C1.47385763,1.11192881 1.72385763,1 2,1 L2,1 Z" id="Rectangle" stroke="#FFFFFF" stroke-width="2"></path>
<line x1="5" y1="5" x2="15" y2="5" id="Line-4" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"></line>
<line x1="5" y1="13" x2="10" y2="13" id="Line-4-Copy" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"></line>
<line x1="5" y1="9" x2="15" y2="9" id="Line-4" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round"></line>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 60.1 (88133) - https://sketch.com -->
<desc>Created with Sketch.</desc>
<g id="icon/sf-small/filter/zodiac" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M19,2.5 C19,1.11909091 17.8809091,0 16.5,0 C15.1190909,0 14,1.11909091 14,2.5 C14,3.88090909 15.1190909,5 16.5,5 C17.8809091,5 19,3.88090909 19,2.5 Z" id="Stroke-1" stroke="#1B2559" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M5,9.5 C5,8.11909091 3.88090909,7 2.5,7 C1.11909091,7 0,8.11909091 0,9.5 C0,10.8818182 1.11909091,12 2.5,12 C3.88090909,12 5,10.8818182 5,9.5 Z" id="Stroke-7" stroke="#1B2559" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M19,17.5 C19,16.1190909 17.8809091,15 16.5,15 C15.1190909,15 14,16.1190909 14,17.5 C14,18.8809091 15.1190909,20 16.5,20 C17.8809091,20 19,18.8809091 19,17.5 Z" id="Stroke-9" stroke="#1B2559" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<line x1="14" y1="2.5" x2="0.498999482" y2="2.5" id="Line-3" stroke="#1B2559" stroke-width="2" stroke-linecap="square"></line>
<line x1="20" y1="9.5" x2="6.49899948" y2="9.5" id="Line-3-Copy" stroke="#1B2559" stroke-width="2" stroke-linecap="square"></line>
<line x1="14" y1="17.5" x2="0.498999482" y2="17.5" id="Line-3-Copy-2" stroke="#1B2559" stroke-width="2" stroke-linecap="square"></line>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB