From b078394450f19f4fbfe820acfb990d51a15f8587 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 7 Jan 2021 14:43:53 +0200 Subject: [PATCH 001/129] * Bump version to 14.1.1 * Allow reducing timer length in delays for security tests --- lib/authorization/delaylist.js | 6 ++++-- lib/authorization/index.js | 10 ++++++---- lib/settings.js | 2 ++ npm-shrinkwrap.json | 2 +- package.json | 2 +- swagger.json | 2 +- swagger.yaml | 2 +- tests/verifyauth.test.js | 3 +-- 8 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/authorization/delaylist.js b/lib/authorization/delaylist.js index cfc0509e6ab3..19e45985baa1 100644 --- a/lib/authorization/delaylist.js +++ b/lib/authorization/delaylist.js @@ -1,10 +1,12 @@ 'use strict'; -function init () { +const _ = require('lodash'); + +function init (env) { const ipDelayList = {}; - const DELAY_ON_FAIL = 5000; + const DELAY_ON_FAIL = _.get(env, 'settings.authFailDelay') || 5000; const FAIL_AGE = 60000; const sleep = require('util').promisify(setTimeout); diff --git a/lib/authorization/index.js b/lib/authorization/index.js index e5ea3f47871e..5935a2332d3a 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -4,20 +4,22 @@ const _ = require('lodash'); const jwt = require('jsonwebtoken'); const shiroTrie = require('shiro-trie'); -const ipdelaylist = require('./delaylist')(); const consts = require('./../constants'); const sleep = require('util').promisify(setTimeout); -const addFailedRequest = ipdelaylist.addFailedRequest; -const shouldDelayRequest = ipdelaylist.shouldDelayRequest; -const requestSucceeded = ipdelaylist.requestSucceeded; function getRemoteIP (req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress; } function init (env, ctx) { + + const ipdelaylist = require('./delaylist')(env, ctx); + const addFailedRequest = ipdelaylist.addFailedRequest; + const shouldDelayRequest = ipdelaylist.shouldDelayRequest; + const requestSucceeded = ipdelaylist.requestSucceeded; + var authorization = {}; var storage = authorization.storage = require('./storage')(env, ctx); var defaultRoles = (env.settings.authDefaultRoles || '').split(/[, :]/); diff --git a/lib/settings.js b/lib/settings.js index 837dceffe457..9b220ec746b4 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -67,6 +67,7 @@ function init () { , frameName6: '' , frameName7: '' , frameName8: '' + , authFailDelay: 5000 }; var secureSettings = [ @@ -102,6 +103,7 @@ function init () { , bgLow: mapNumber , bgTargetTop: mapNumber , bgTargetBottom: mapNumber + , authFailDelay: mapNumber }; function filterObj(obj, secureKeys) { diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 3cd7c452eefe..018c970c18de 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.1.0", + "version": "14.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b5bb73dcf213..56adf27c4f4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nightscout", - "version": "14.1.0", + "version": "14.1.1", "description": "Nightscout acts as a web-based CGM (Continuous Glucose Montinor) to allow multiple caregivers to remotely view a patients glucose data in realtime.", "license": "AGPL-3.0", "author": "Nightscout Team", diff --git a/swagger.json b/swagger.json index cf8844996574..8e2c30da288f 100755 --- a/swagger.json +++ b/swagger.json @@ -8,7 +8,7 @@ "info": { "title": "Nightscout API", "description": "Own your DData with the Nightscout API", - "version": "14.1.0", + "version": "14.1.1", "license": { "name": "AGPL 3", "url": "https://www.gnu.org/licenses/agpl.txt" diff --git a/swagger.yaml b/swagger.yaml index 29fabdcafd82..8cc72542c5ce 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -4,7 +4,7 @@ servers: info: title: Nightscout API description: Own your DData with the Nightscout API - version: 14.1.0 + version: 14.1.1 license: name: AGPL 3 url: 'https://www.gnu.org/licenses/agpl.txt' diff --git a/tests/verifyauth.test.js b/tests/verifyauth.test.js index ce970f26babf..c03b51573caa 100644 --- a/tests/verifyauth.test.js +++ b/tests/verifyauth.test.js @@ -1,6 +1,5 @@ 'use strict'; -const { geoNaturalEarth1 } = require('d3'); var request = require('supertest'); var language = require('../lib/language')(); require('should'); @@ -70,7 +69,7 @@ describe('verifyauth', function ( ) { function checkTimer(res) { res.body.message.message.should.equal('UNAUTHORIZED'); const delta = Date.now() - time; - delta.should.be.greaterThan(1000); + delta.should.be.greaterThan(49); done(); } From df6d9aadc3eed2afd6f12ff3e75538ab8440466f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 7 Jan 2021 14:45:13 +0200 Subject: [PATCH 002/129] Re-enable partial report test --- tests/reports.test.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/reports.test.js b/tests/reports.test.js index 602ed658e67f..3029b32a9e24 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -202,7 +202,7 @@ describe('reports', function ( ) { done( ); }); -/* + it ('should produce some html', function (done) { var client = window.Nightscout.client; @@ -258,6 +258,7 @@ describe('reports', function ( ) { $('img.editTreatment:first').click(); $('.ui-button:contains("Save")').click(); + /* var result = $('body').html(); var filesys = require('fs'); var logfile = filesys.createWriteStream('out.txt', { flags: 'a'} ) @@ -273,7 +274,7 @@ describe('reports', function ( ) { result.indexOf('
').should.be.greaterThan(-1); //success result.indexOf('CAL: Scale: 1.10 Intercept: 31102 Slope: 776.91').should.be.greaterThan(-1); //calibrations result.indexOf('Correction Bolus250 (Sensor)0.75').should.be.greaterThan(-1); //treatments - +*/ done(); }); }); @@ -333,5 +334,5 @@ describe('reports', function ( ) { }); }); - */ + }); From 914ba78f363d5c6e94c5522d7b0343ecdbe74761 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 7 Jan 2021 22:46:55 +0200 Subject: [PATCH 003/129] Security improvement batch (#6622) * Adds a new method for the server to push notifies to the client, which require administration privileges from the user. If there are messages in queue but user is not privileged, she is notified of pending messages * Fix unit tests * Increase timeouts on tests * Add translations * * Aggregate admin messages * Send admin message on auth fail * Sending messages over bus * XSS filtering of objects sent over the REST API * Warn users if their instance is world readable * Fix adminnotifies init() * Fix couple issues from Codacy --- .gitignore | 1 - assets/fonts/Nightscout Plugin Icons.json | 11434 +++++++++++++++++++- bin/testdatarunner.js | 117 + env.js | 39 +- lib/adminnotifies.js | 52 + lib/api/adminnotifiesapi.js | 35 + lib/api/devicestatus/index.js | 3 + lib/api/entries/index.js | 5 + lib/api/index.js | 3 + lib/api/profile/index.js | 1 + lib/api/treatments/index.js | 2 + lib/authorization/delaylist.js | 2 - lib/authorization/index.js | 10 +- lib/client/adminnotifiesclient.js | 100 + lib/client/index.js | 4 + lib/server/bootevent.js | 36 +- lib/server/purifier.js | 36 + npm-shrinkwrap.json | 147 +- package.json | 15 +- static/css/drawer.css | 15 +- static/css/main.css | 9 +- tests/XX_clean.test.js | 39 + tests/adminnotifies.test.js | 30 + tests/admintools.test.js | 2 +- tests/api.devicestatus.test.js | 1 + tests/api.treatments.test.js | 4 +- tests/api3.create.test.js | 1 - tests/careportal.test.js | 3 +- tests/pebble.test.js | 3 + tests/reports.test.js | 13 +- tests/security.test.js | 2 +- translations/en/en.json | 8 + views/index.html | 3 + views/partials/toolbar.ejs | 1 + 34 files changed, 12059 insertions(+), 117 deletions(-) create mode 100644 bin/testdatarunner.js create mode 100644 lib/adminnotifies.js create mode 100644 lib/api/adminnotifiesapi.js create mode 100644 lib/client/adminnotifiesclient.js create mode 100644 lib/server/purifier.js create mode 100644 tests/XX_clean.test.js create mode 100644 tests/adminnotifies.test.js diff --git a/.gitignore b/.gitignore index 1cf7ab06f2f9..834d6f3e5a79 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,4 @@ npm-debug.log /cgm-remote-monitor.njsproj /cgm-remote-monitor.sln /obj/Debug -/bin /*.bat diff --git a/assets/fonts/Nightscout Plugin Icons.json b/assets/fonts/Nightscout Plugin Icons.json index 65874c15679b..f1ff8306de0e 100644 --- a/assets/fonts/Nightscout Plugin Icons.json +++ b/assets/fonts/Nightscout Plugin Icons.json @@ -2,9 +2,11439 @@ "metadata": { "name": "Nightscout Plugin Icons", "lastOpened": 0, - "created": 1580075608590 + "created": 1607277376360 }, "iconSets": [ + { + "selection": [ + { + "ligatures": "home, house", + "name": "home", + "id": 0, + "order": 0 + }, + { + "ligatures": "home2, house2", + "name": "home2", + "id": 1, + "order": 0 + }, + { + "ligatures": "home3, house3", + "name": "home3", + "id": 2, + "order": 0 + }, + { + "ligatures": "office, buildings", + "name": "office", + "id": 3, + "order": 0 + }, + { + "ligatures": "newspaper, news", + "name": "newspaper", + "id": 4, + "order": 0 + }, + { + "ligatures": "pencil, write", + "name": "pencil", + "id": 5, + "order": 0 + }, + { + "ligatures": "pencil2, write2", + "name": "pencil2", + "id": 6, + "order": 0 + }, + { + "ligatures": "quill, feather", + "name": "quill", + "id": 7, + "order": 0 + }, + { + "ligatures": "pen, write3", + "name": "pen", + "id": 8, + "order": 0 + }, + { + "ligatures": "blog, pen2", + "name": "blog", + "id": 9, + "order": 0 + }, + { + "ligatures": "eyedropper, color", + "name": "eyedropper", + "id": 10, + "order": 0 + }, + { + "ligatures": "droplet, color2", + "name": "droplet", + "id": 11, + "order": 0 + }, + { + "ligatures": "paint-format, format", + "name": "paint-format", + "id": 12, + "order": 0 + }, + { + "ligatures": "image, picture", + "name": "image", + "id": 13, + "order": 0 + }, + { + "ligatures": "images, pictures", + "name": "images", + "id": 14, + "order": 0 + }, + { + "ligatures": "camera, photo", + "name": "camera", + "id": 15, + "order": 0 + }, + { + "ligatures": "headphones, headset", + "name": "headphones", + "id": 16, + "order": 0 + }, + { + "ligatures": "music, song", + "name": "music", + "id": 17, + "order": 0 + }, + { + "ligatures": "play, video", + "name": "play", + "id": 18, + "order": 0 + }, + { + "ligatures": "film, video2", + "name": "film", + "id": 19, + "order": 0 + }, + { + "ligatures": "video-camera, video3", + "name": "video-camera", + "id": 20, + "order": 0 + }, + { + "ligatures": "dice, game", + "name": "dice", + "id": 21, + "order": 0 + }, + { + "ligatures": "pacman, game2", + "name": "pacman", + "id": 22, + "order": 0 + }, + { + "ligatures": "spades, cards", + "name": "spades", + "id": 23, + "order": 0 + }, + { + "ligatures": "clubs, cards2", + "name": "clubs", + "id": 24, + "order": 0 + }, + { + "ligatures": "diamonds, cards3", + "name": "diamonds", + "id": 25, + "order": 0 + }, + { + "ligatures": "bullhorn, megaphone", + "name": "bullhorn", + "id": 26, + "order": 3, + "prevSize": 32, + "code": 59674, + "tempChar": "" + }, + { + "ligatures": "connection, wifi", + "name": "connection", + "id": 27, + "order": 0 + }, + { + "ligatures": "podcast, broadcast", + "name": "podcast", + "id": 28, + "order": 0 + }, + { + "ligatures": "feed, wave", + "name": "feed", + "id": 29, + "order": 0 + }, + { + "ligatures": "mic, microphone", + "name": "mic", + "id": 30, + "order": 0 + }, + { + "ligatures": "book, read", + "name": "book", + "id": 31, + "order": 0 + }, + { + "ligatures": "books, library", + "name": "books", + "id": 32, + "order": 0 + }, + { + "ligatures": "library2, bank", + "name": "library", + "id": 33, + "order": 0 + }, + { + "ligatures": "file-text, file", + "name": "file-text", + "id": 34, + "order": 0 + }, + { + "ligatures": "profile, file2", + "name": "profile", + "id": 35, + "order": 0 + }, + { + "ligatures": "file-empty, file3", + "name": "file-empty", + "id": 36, + "order": 0 + }, + { + "ligatures": "files-empty, files", + "name": "files-empty", + "id": 37, + "order": 0 + }, + { + "ligatures": "file-text2, file4", + "name": "file-text2", + "id": 38, + "order": 0 + }, + { + "ligatures": "file-picture, file5", + "name": "file-picture", + "id": 39, + "order": 0 + }, + { + "ligatures": "file-music, file6", + "name": "file-music", + "id": 40, + "order": 0 + }, + { + "ligatures": "file-play, file7", + "name": "file-play", + "id": 41, + "order": 0 + }, + { + "ligatures": "file-video, file8", + "name": "file-video", + "id": 42, + "order": 0 + }, + { + "ligatures": "file-zip, file9", + "name": "file-zip", + "id": 43, + "order": 0 + }, + { + "ligatures": "copy, duplicate", + "name": "copy", + "id": 44, + "order": 0 + }, + { + "ligatures": "paste, clipboard-file", + "name": "paste", + "id": 45, + "order": 0 + }, + { + "ligatures": "stack, layers", + "name": "stack", + "id": 46, + "order": 0 + }, + { + "ligatures": "folder, directory", + "name": "folder", + "id": 47, + "order": 0 + }, + { + "ligatures": "folder-open, directory2", + "name": "folder-open", + "id": 48, + "order": 0 + }, + { + "ligatures": "folder-plus, directory3", + "name": "folder-plus", + "id": 49, + "order": 0 + }, + { + "ligatures": "folder-minus, directory4", + "name": "folder-minus", + "id": 50, + "order": 0 + }, + { + "ligatures": "folder-download, directory5", + "name": "folder-download", + "id": 51, + "order": 0 + }, + { + "ligatures": "folder-upload, directory6", + "name": "folder-upload", + "id": 52, + "order": 0 + }, + { + "ligatures": "price-tag", + "name": "price-tag", + "id": 53, + "order": 0 + }, + { + "ligatures": "price-tags", + "name": "price-tags", + "id": 54, + "order": 0 + }, + { + "ligatures": "barcode", + "name": "barcode", + "id": 55, + "order": 0 + }, + { + "ligatures": "qrcode", + "name": "qrcode", + "id": 56, + "order": 0 + }, + { + "ligatures": "ticket, theater", + "name": "ticket", + "id": 57, + "order": 0 + }, + { + "ligatures": "cart, purchase", + "name": "cart", + "id": 58, + "order": 0 + }, + { + "ligatures": "coin-dollar, money", + "name": "coin-dollar", + "id": 59, + "order": 0 + }, + { + "ligatures": "coin-euro, money2", + "name": "coin-euro", + "id": 60, + "order": 0 + }, + { + "ligatures": "coin-pound, money3", + "name": "coin-pound", + "id": 61, + "order": 0 + }, + { + "ligatures": "coin-yen, money4", + "name": "coin-yen", + "id": 62, + "order": 0 + }, + { + "ligatures": "credit-card, money5", + "name": "credit-card", + "id": 63, + "order": 0 + }, + { + "ligatures": "calculator, compute", + "name": "calculator", + "id": 64, + "order": 0 + }, + { + "ligatures": "lifebuoy, support", + "name": "lifebuoy", + "id": 65, + "order": 0 + }, + { + "ligatures": "phone, telephone", + "name": "phone", + "id": 66, + "order": 0 + }, + { + "ligatures": "phone-hang-up, telephone2", + "name": "phone-hang-up", + "id": 67, + "order": 0 + }, + { + "ligatures": "address-book, contact", + "name": "address-book", + "id": 68, + "order": 0 + }, + { + "ligatures": "envelop, mail", + "name": "envelop", + "id": 69, + "order": 0 + }, + { + "ligatures": "pushpin, pin", + "name": "pushpin", + "id": 70, + "order": 0 + }, + { + "ligatures": "location, map-marker", + "name": "location", + "id": 71, + "order": 0 + }, + { + "ligatures": "location2, map-marker2", + "name": "location2", + "id": 72, + "order": 0 + }, + { + "ligatures": "compass, direction", + "name": "compass", + "id": 73, + "order": 0 + }, + { + "ligatures": "compass2, direction2", + "name": "compass2", + "id": 74, + "order": 0 + }, + { + "ligatures": "map, guide", + "name": "map", + "id": 75, + "order": 0 + }, + { + "ligatures": "map2, guide2", + "name": "map2", + "id": 76, + "order": 0 + }, + { + "ligatures": "history, time", + "name": "history", + "id": 77, + "order": 0 + }, + { + "ligatures": "clock, time2", + "name": "clock", + "id": 78, + "order": 0 + }, + { + "ligatures": "clock2, time3", + "name": "clock2", + "id": 79, + "order": 0 + }, + { + "ligatures": "alarm, time4", + "name": "alarm", + "id": 80, + "order": 0 + }, + { + "ligatures": "bell, alarm2", + "name": "bell", + "id": 81, + "order": 0 + }, + { + "ligatures": "stopwatch, time5", + "name": "stopwatch", + "id": 82, + "order": 0 + }, + { + "ligatures": "calendar, date", + "name": "calendar", + "id": 83, + "order": 0 + }, + { + "ligatures": "printer, print", + "name": "printer", + "id": 84, + "order": 0 + }, + { + "ligatures": "keyboard, typing", + "name": "keyboard", + "id": 85, + "order": 0 + }, + { + "ligatures": "display, screen", + "name": "display", + "id": 86, + "order": 0 + }, + { + "ligatures": "laptop, computer", + "name": "laptop", + "id": 87, + "order": 0 + }, + { + "ligatures": "mobile, cell-phone", + "name": "mobile", + "id": 88, + "order": 0 + }, + { + "ligatures": "mobile2, cell-phone2", + "name": "mobile2", + "id": 89, + "order": 0 + }, + { + "ligatures": "tablet, mobile3", + "name": "tablet", + "id": 90, + "order": 0 + }, + { + "ligatures": "tv, television", + "name": "tv", + "id": 91, + "order": 0 + }, + { + "ligatures": "drawer, box", + "name": "drawer", + "id": 92, + "order": 0 + }, + { + "ligatures": "drawer2, box2", + "name": "drawer2", + "id": 93, + "order": 0 + }, + { + "ligatures": "box-add, box3", + "name": "box-add", + "id": 94, + "order": 0 + }, + { + "ligatures": "box-remove, box4", + "name": "box-remove", + "id": 95, + "order": 0 + }, + { + "ligatures": "download, save", + "name": "download", + "id": 96, + "order": 0 + }, + { + "ligatures": "upload, load", + "name": "upload", + "id": 97, + "order": 0 + }, + { + "ligatures": "floppy-disk, save2", + "name": "floppy-disk", + "id": 98, + "order": 0 + }, + { + "ligatures": "drive, save3", + "name": "drive", + "id": 99, + "order": 0 + }, + { + "ligatures": "database, db", + "name": "database", + "id": 100, + "order": 0 + }, + { + "ligatures": "undo, ccw", + "name": "undo", + "id": 101, + "order": 0 + }, + { + "ligatures": "redo, cw", + "name": "redo", + "id": 102, + "order": 0 + }, + { + "ligatures": "undo2, left", + "name": "undo2", + "id": 103, + "order": 0 + }, + { + "ligatures": "redo2, right", + "name": "redo2", + "id": 104, + "order": 0 + }, + { + "ligatures": "forward, right2", + "name": "forward", + "id": 105, + "order": 0 + }, + { + "ligatures": "reply, left2", + "name": "reply", + "id": 106, + "order": 0 + }, + { + "ligatures": "bubble, comment", + "name": "bubble", + "id": 107, + "order": 0 + }, + { + "ligatures": "bubbles, comments", + "name": "bubbles", + "id": 108, + "order": 0 + }, + { + "ligatures": "bubbles2, comments2", + "name": "bubbles2", + "id": 109, + "order": 0 + }, + { + "ligatures": "bubble2, comment2", + "name": "bubble2", + "id": 110, + "order": 0 + }, + { + "ligatures": "bubbles3, comments3", + "name": "bubbles3", + "id": 111, + "order": 0 + }, + { + "ligatures": "bubbles4, comments4", + "name": "bubbles4", + "id": 112, + "order": 0 + }, + { + "ligatures": "user, profile2", + "name": "user", + "id": 113, + "order": 0 + }, + { + "ligatures": "users, group", + "name": "users", + "id": 114, + "order": 0 + }, + { + "ligatures": "user-plus, user2", + "name": "user-plus", + "id": 115, + "order": 0 + }, + { + "ligatures": "user-minus, user3", + "name": "user-minus", + "id": 116, + "order": 0 + }, + { + "ligatures": "user-check, user4", + "name": "user-check", + "id": 117, + "order": 0 + }, + { + "ligatures": "user-tie, user5", + "name": "user-tie", + "id": 118, + "order": 0 + }, + { + "ligatures": "quotes-left, ldquo", + "name": "quotes-left", + "id": 119, + "order": 0 + }, + { + "ligatures": "quotes-right, rdquo", + "name": "quotes-right", + "id": 120, + "order": 0 + }, + { + "ligatures": "hour-glass, loading", + "name": "hour-glass", + "id": 121, + "order": 0 + }, + { + "ligatures": "spinner, loading2", + "name": "spinner", + "id": 122, + "order": 0 + }, + { + "ligatures": "spinner2, loading3", + "name": "spinner2", + "id": 123, + "order": 0 + }, + { + "ligatures": "spinner3, loading4", + "name": "spinner3", + "id": 124, + "order": 0 + }, + { + "ligatures": "spinner4, loading5", + "name": "spinner4", + "id": 125, + "order": 0 + }, + { + "ligatures": "spinner5, loading6", + "name": "spinner5", + "id": 126, + "order": 0 + }, + { + "ligatures": "spinner6, loading7", + "name": "spinner6", + "id": 127, + "order": 0 + }, + { + "ligatures": "spinner7, loading8", + "name": "spinner7", + "id": 128, + "order": 0 + }, + { + "ligatures": "spinner8, loading9", + "name": "spinner8", + "id": 129, + "order": 0 + }, + { + "ligatures": "spinner9, loading10", + "name": "spinner9", + "id": 130, + "order": 0 + }, + { + "ligatures": "spinner10, loading11", + "name": "spinner10", + "id": 131, + "order": 0 + }, + { + "ligatures": "spinner11, loading12", + "name": "spinner11", + "id": 132, + "order": 0 + }, + { + "ligatures": "binoculars, lookup", + "name": "binoculars", + "id": 133, + "order": 0 + }, + { + "ligatures": "search, magnifier", + "name": "search", + "id": 134, + "order": 0 + }, + { + "ligatures": "zoom-in, magnifier2", + "name": "zoom-in", + "id": 135, + "order": 0 + }, + { + "ligatures": "zoom-out, magnifier3", + "name": "zoom-out", + "id": 136, + "order": 0 + }, + { + "ligatures": "enlarge, expand", + "name": "enlarge", + "id": 137, + "order": 0 + }, + { + "ligatures": "shrink, collapse", + "name": "shrink", + "id": 138, + "order": 0 + }, + { + "ligatures": "enlarge2, expand2", + "name": "enlarge2", + "id": 139, + "order": 0 + }, + { + "ligatures": "shrink2, collapse2", + "name": "shrink2", + "id": 140, + "order": 0 + }, + { + "ligatures": "key, password", + "name": "key", + "id": 141, + "order": 0 + }, + { + "ligatures": "key2, password2", + "name": "key2", + "id": 142, + "order": 0 + }, + { + "ligatures": "lock, secure", + "name": "lock", + "id": 143, + "order": 0 + }, + { + "ligatures": "unlocked, lock-open", + "name": "unlocked", + "id": 144, + "order": 0 + }, + { + "ligatures": "wrench, tool", + "name": "wrench", + "id": 145, + "order": 0 + }, + { + "ligatures": "equalizer, sliders", + "name": "equalizer", + "id": 146, + "order": 0 + }, + { + "ligatures": "equalizer2, sliders2", + "name": "equalizer2", + "id": 147, + "order": 0 + }, + { + "ligatures": "cog, gear", + "name": "cog", + "id": 148, + "order": 0 + }, + { + "ligatures": "cogs, gears", + "name": "cogs", + "id": 149, + "order": 0 + }, + { + "ligatures": "hammer, tool2", + "name": "hammer", + "id": 150, + "order": 0 + }, + { + "ligatures": "magic-wand, wizard", + "name": "magic-wand", + "id": 151, + "order": 0 + }, + { + "ligatures": "aid-kit, health", + "name": "aid-kit", + "id": 152, + "order": 0 + }, + { + "ligatures": "bug, virus", + "name": "bug", + "id": 153, + "order": 0 + }, + { + "ligatures": "pie-chart, stats", + "name": "pie-chart", + "id": 154, + "order": 0 + }, + { + "ligatures": "stats-dots, stats2", + "name": "stats-dots", + "id": 155, + "order": 0 + }, + { + "ligatures": "stats-bars, stats3", + "name": "stats-bars", + "id": 156, + "order": 0 + }, + { + "ligatures": "stats-bars2, stats4", + "name": "stats-bars2", + "id": 157, + "order": 0 + }, + { + "ligatures": "trophy, cup", + "name": "trophy", + "id": 158, + "order": 0 + }, + { + "ligatures": "gift, present", + "name": "gift", + "id": 159, + "order": 0 + }, + { + "ligatures": "glass, drink", + "name": "glass", + "id": 160, + "order": 0 + }, + { + "ligatures": "glass2, drink2", + "name": "glass2", + "id": 161, + "order": 0 + }, + { + "ligatures": "mug, drink3", + "name": "mug", + "id": 162, + "order": 0 + }, + { + "ligatures": "spoon-knife, food", + "name": "spoon-knife", + "id": 163, + "order": 0 + }, + { + "ligatures": "leaf, nature", + "name": "leaf", + "id": 164, + "order": 0 + }, + { + "ligatures": "rocket, jet", + "name": "rocket", + "id": 165, + "order": 0 + }, + { + "ligatures": "meter, gauge", + "name": "meter", + "id": 166, + "order": 0 + }, + { + "ligatures": "meter2, gauge2", + "name": "meter2", + "id": 167, + "order": 0 + }, + { + "ligatures": "hammer2, gavel", + "name": "hammer2", + "id": 168, + "order": 0 + }, + { + "ligatures": "fire, flame", + "name": "fire", + "id": 169, + "order": 0 + }, + { + "ligatures": "lab, beta", + "name": "lab", + "id": 170, + "order": 0 + }, + { + "ligatures": "magnet, attract", + "name": "magnet", + "id": 171, + "order": 0 + }, + { + "ligatures": "bin, trashcan", + "name": "bin", + "id": 172, + "order": 0 + }, + { + "ligatures": "bin2, trashcan2", + "name": "bin2", + "id": 173, + "order": 0 + }, + { + "ligatures": "briefcase, portfolio", + "name": "briefcase", + "id": 174, + "order": 0 + }, + { + "ligatures": "airplane, travel", + "name": "airplane", + "id": 175, + "order": 0 + }, + { + "ligatures": "truck, transit", + "name": "truck", + "id": 176, + "order": 0 + }, + { + "ligatures": "road, asphalt", + "name": "road", + "id": 177, + "order": 0 + }, + { + "ligatures": "accessibility", + "name": "accessibility", + "id": 178, + "order": 0 + }, + { + "ligatures": "target, goal", + "name": "target", + "id": 179, + "order": 0 + }, + { + "ligatures": "shield, security", + "name": "shield", + "id": 180, + "order": 0 + }, + { + "ligatures": "power, lightning", + "name": "power", + "id": 181, + "order": 0 + }, + { + "ligatures": "switch", + "name": "switch", + "id": 182, + "order": 0 + }, + { + "ligatures": "power-cord, plugin", + "name": "power-cord", + "id": 183, + "order": 0 + }, + { + "ligatures": "clipboard, board", + "name": "clipboard", + "id": 184, + "order": 0 + }, + { + "ligatures": "list-numbered, options", + "name": "list-numbered", + "id": 185, + "order": 0 + }, + { + "ligatures": "list, todo", + "name": "list", + "id": 186, + "order": 0 + }, + { + "ligatures": "list2, todo2", + "name": "list2", + "id": 187, + "order": 0 + }, + { + "ligatures": "tree, branches", + "name": "tree", + "id": 188, + "order": 0 + }, + { + "ligatures": "menu, list3", + "name": "menu", + "id": 189, + "order": 0 + }, + { + "ligatures": "menu2, options2", + "name": "menu2", + "id": 190, + "order": 0 + }, + { + "ligatures": "menu3, options3", + "name": "menu3", + "id": 191, + "order": 0 + }, + { + "ligatures": "menu4, options4", + "name": "menu4", + "id": 192, + "order": 0 + }, + { + "ligatures": "cloud, weather", + "name": "cloud", + "id": 193, + "order": 0 + }, + { + "ligatures": "cloud-download, cloud2", + "name": "cloud-download", + "id": 194, + "order": 0 + }, + { + "ligatures": "cloud-upload, cloud3", + "name": "cloud-upload", + "id": 195, + "order": 0 + }, + { + "ligatures": "cloud-check, cloud4", + "name": "cloud-check", + "id": 196, + "order": 0 + }, + { + "ligatures": "download2, save4", + "name": "download2", + "id": 197, + "order": 0 + }, + { + "ligatures": "upload2, load2", + "name": "upload2", + "id": 198, + "order": 0 + }, + { + "ligatures": "download3, save5", + "name": "download3", + "id": 199, + "order": 0 + }, + { + "ligatures": "upload3, load3", + "name": "upload3", + "id": 200, + "order": 0 + }, + { + "ligatures": "sphere, globe", + "name": "sphere", + "id": 201, + "order": 0 + }, + { + "ligatures": "earth, globe2", + "name": "earth", + "id": 202, + "order": 0 + }, + { + "ligatures": "link, chain", + "name": "link", + "id": 203, + "order": 0 + }, + { + "ligatures": "flag, report", + "name": "flag", + "id": 204, + "order": 0 + }, + { + "ligatures": "attachment, paperclip", + "name": "attachment", + "id": 205, + "order": 0 + }, + { + "ligatures": "eye, views", + "name": "eye", + "id": 206, + "order": 0 + }, + { + "ligatures": "eye-plus, views2", + "name": "eye-plus", + "id": 207, + "order": 0 + }, + { + "ligatures": "eye-minus, views3", + "name": "eye-minus", + "id": 208, + "order": 0 + }, + { + "ligatures": "eye-blocked, views4", + "name": "eye-blocked", + "id": 209, + "order": 0 + }, + { + "ligatures": "bookmark, ribbon", + "name": "bookmark", + "id": 210, + "order": 0 + }, + { + "ligatures": "bookmarks, ribbons", + "name": "bookmarks", + "id": 211, + "order": 0 + }, + { + "ligatures": "sun, weather2", + "name": "sun", + "id": 212, + "order": 0 + }, + { + "ligatures": "contrast", + "name": "contrast", + "id": 213, + "order": 0 + }, + { + "ligatures": "brightness-contrast", + "name": "brightness-contrast", + "id": 214, + "order": 0 + }, + { + "ligatures": "star-empty, rate", + "name": "star-empty", + "id": 215, + "order": 0 + }, + { + "ligatures": "star-half, rate2", + "name": "star-half", + "id": 216, + "order": 0 + }, + { + "ligatures": "star-full, rate3", + "name": "star-full", + "id": 217, + "order": 0 + }, + { + "ligatures": "heart, like", + "name": "heart", + "id": 218, + "order": 0 + }, + { + "ligatures": "heart-broken, heart2", + "name": "heart-broken", + "id": 219, + "order": 0 + }, + { + "ligatures": "man, male", + "name": "man", + "id": 220, + "order": 0 + }, + { + "ligatures": "woman, female", + "name": "woman", + "id": 221, + "order": 0 + }, + { + "ligatures": "man-woman, toilet", + "name": "man-woman", + "id": 222, + "order": 0 + }, + { + "ligatures": "happy, emoticon", + "name": "happy", + "id": 223, + "order": 0 + }, + { + "ligatures": "happy2, emoticon2", + "name": "happy2", + "id": 224, + "order": 0 + }, + { + "ligatures": "smile, emoticon3", + "name": "smile", + "id": 225, + "order": 0 + }, + { + "ligatures": "smile2, emoticon4", + "name": "smile2", + "id": 226, + "order": 0 + }, + { + "ligatures": "tongue, emoticon5", + "name": "tongue", + "id": 227, + "order": 0 + }, + { + "ligatures": "tongue2, emoticon6", + "name": "tongue2", + "id": 228, + "order": 0 + }, + { + "ligatures": "sad, emoticon7", + "name": "sad", + "id": 229, + "order": 0 + }, + { + "ligatures": "sad2, emoticon8", + "name": "sad2", + "id": 230, + "order": 0 + }, + { + "ligatures": "wink, emoticon9", + "name": "wink", + "id": 231, + "order": 0 + }, + { + "ligatures": "wink2, emoticon10", + "name": "wink2", + "id": 232, + "order": 0 + }, + { + "ligatures": "grin, emoticon11", + "name": "grin", + "id": 233, + "order": 0 + }, + { + "ligatures": "grin2, emoticon12", + "name": "grin2", + "id": 234, + "order": 0 + }, + { + "ligatures": "cool, emoticon13", + "name": "cool", + "id": 235, + "order": 0 + }, + { + "ligatures": "cool2, emoticon14", + "name": "cool2", + "id": 236, + "order": 0 + }, + { + "ligatures": "angry, emoticon15", + "name": "angry", + "id": 237, + "order": 0 + }, + { + "ligatures": "angry2, emoticon16", + "name": "angry2", + "id": 238, + "order": 0 + }, + { + "ligatures": "evil, emoticon17", + "name": "evil", + "id": 239, + "order": 0 + }, + { + "ligatures": "evil2, emoticon18", + "name": "evil2", + "id": 240, + "order": 0 + }, + { + "ligatures": "shocked, emoticon19", + "name": "shocked", + "id": 241, + "order": 0 + }, + { + "ligatures": "shocked2, emoticon20", + "name": "shocked2", + "id": 242, + "order": 0 + }, + { + "ligatures": "baffled, emoticon21", + "name": "baffled", + "id": 243, + "order": 0 + }, + { + "ligatures": "baffled2, emoticon22", + "name": "baffled2", + "id": 244, + "order": 0 + }, + { + "ligatures": "confused, emoticon23", + "name": "confused", + "id": 245, + "order": 0 + }, + { + "ligatures": "confused2, emoticon24", + "name": "confused2", + "id": 246, + "order": 0 + }, + { + "ligatures": "neutral, emoticon25", + "name": "neutral", + "id": 247, + "order": 0 + }, + { + "ligatures": "neutral2, emoticon26", + "name": "neutral2", + "id": 248, + "order": 0 + }, + { + "ligatures": "hipster, emoticon27", + "name": "hipster", + "id": 249, + "order": 0 + }, + { + "ligatures": "hipster2, emoticon28", + "name": "hipster2", + "id": 250, + "order": 0 + }, + { + "ligatures": "wondering, emoticon29", + "name": "wondering", + "id": 251, + "order": 0 + }, + { + "ligatures": "wondering2, emoticon30", + "name": "wondering2", + "id": 252, + "order": 0 + }, + { + "ligatures": "sleepy, emoticon31", + "name": "sleepy", + "id": 253, + "order": 0 + }, + { + "ligatures": "sleepy2, emoticon32", + "name": "sleepy2", + "id": 254, + "order": 0 + }, + { + "ligatures": "frustrated, emoticon33", + "name": "frustrated", + "id": 255, + "order": 0 + }, + { + "ligatures": "frustrated2, emoticon34", + "name": "frustrated2", + "id": 256, + "order": 0 + }, + { + "ligatures": "crying, emoticon35", + "name": "crying", + "id": 257, + "order": 0 + }, + { + "ligatures": "crying2, emoticon36", + "name": "crying2", + "id": 258, + "order": 0 + }, + { + "ligatures": "point-up, finger", + "name": "point-up", + "id": 259, + "order": 0 + }, + { + "ligatures": "point-right, finger2", + "name": "point-right", + "id": 260, + "order": 0 + }, + { + "ligatures": "point-down, finger3", + "name": "point-down", + "id": 261, + "order": 0 + }, + { + "ligatures": "point-left, finger4", + "name": "point-left", + "id": 262, + "order": 0 + }, + { + "ligatures": "warning, sign", + "name": "warning", + "id": 263, + "order": 0 + }, + { + "ligatures": "notification, warning2", + "name": "notification", + "id": 264, + "order": 0 + }, + { + "ligatures": "question, help", + "name": "question", + "id": 265, + "order": 0 + }, + { + "ligatures": "plus, add", + "name": "plus", + "id": 266, + "order": 0 + }, + { + "ligatures": "minus, subtract", + "name": "minus", + "id": 267, + "order": 0 + }, + { + "ligatures": "info, information", + "name": "info", + "id": 268, + "order": 0 + }, + { + "ligatures": "cancel-circle, close", + "name": "cancel-circle", + "id": 269, + "order": 0 + }, + { + "ligatures": "blocked, forbidden", + "name": "blocked", + "id": 270, + "order": 0 + }, + { + "ligatures": "cross, cancel", + "name": "cross", + "id": 271, + "order": 0 + }, + { + "ligatures": "checkmark, tick", + "name": "checkmark", + "id": 272, + "order": 0 + }, + { + "ligatures": "checkmark2, tick2", + "name": "checkmark2", + "id": 273, + "order": 0 + }, + { + "ligatures": "spell-check, spelling", + "name": "spell-check", + "id": 274, + "order": 0 + }, + { + "ligatures": "enter, signin", + "name": "enter", + "id": 275, + "order": 0 + }, + { + "ligatures": "exit, signout", + "name": "exit", + "id": 276, + "order": 0 + }, + { + "ligatures": "play2, player", + "name": "play2", + "id": 277, + "order": 0 + }, + { + "ligatures": "pause, player2", + "name": "pause", + "id": 278, + "order": 0 + }, + { + "ligatures": "stop, player3", + "name": "stop", + "id": 279, + "order": 0 + }, + { + "ligatures": "previous, player4", + "name": "previous", + "id": 280, + "order": 0 + }, + { + "ligatures": "next, player5", + "name": "next", + "id": 281, + "order": 0 + }, + { + "ligatures": "backward, player6", + "name": "backward", + "id": 282, + "order": 0 + }, + { + "ligatures": "forward2, player7", + "name": "forward2", + "id": 283, + "order": 0 + }, + { + "ligatures": "play3, player8", + "name": "play3", + "id": 284, + "order": 0 + }, + { + "ligatures": "pause2, player9", + "name": "pause2", + "id": 285, + "order": 0 + }, + { + "ligatures": "stop2, player10", + "name": "stop2", + "id": 286, + "order": 0 + }, + { + "ligatures": "backward2, player11", + "name": "backward2", + "id": 287, + "order": 0 + }, + { + "ligatures": "forward3, player12", + "name": "forward3", + "id": 288, + "order": 0 + }, + { + "ligatures": "first, player13", + "name": "first", + "id": 289, + "order": 0 + }, + { + "ligatures": "last, player14", + "name": "last", + "id": 290, + "order": 0 + }, + { + "ligatures": "previous2, player15", + "name": "previous2", + "id": 291, + "order": 0 + }, + { + "ligatures": "next2, player16", + "name": "next2", + "id": 292, + "order": 0 + }, + { + "ligatures": "eject, player17", + "name": "eject", + "id": 293, + "order": 0 + }, + { + "ligatures": "volume-high, volume", + "name": "volume-high", + "id": 294, + "order": 0 + }, + { + "ligatures": "volume-medium, volume2", + "name": "volume-medium", + "id": 295, + "order": 0 + }, + { + "ligatures": "volume-low, volume3", + "name": "volume-low", + "id": 296, + "order": 0 + }, + { + "ligatures": "volume-mute, volume4", + "name": "volume-mute", + "id": 297, + "order": 0 + }, + { + "ligatures": "volume-mute2, volume5", + "name": "volume-mute2", + "id": 298, + "order": 0 + }, + { + "ligatures": "volume-increase, volume6", + "name": "volume-increase", + "id": 299, + "order": 0 + }, + { + "ligatures": "volume-decrease, volume7", + "name": "volume-decrease", + "id": 300, + "order": 0 + }, + { + "ligatures": "loop, repeat", + "name": "loop", + "id": 301, + "order": 0 + }, + { + "ligatures": "loop2, repeat2", + "name": "loop2", + "id": 302, + "order": 0 + }, + { + "ligatures": "infinite", + "name": "infinite", + "id": 303, + "order": 0 + }, + { + "ligatures": "shuffle, random", + "name": "shuffle", + "id": 304, + "order": 0 + }, + { + "ligatures": "arrow-up-left, up-left", + "name": "arrow-up-left", + "id": 305, + "order": 0 + }, + { + "ligatures": "arrow-up, up", + "name": "arrow-up", + "id": 306, + "order": 0 + }, + { + "ligatures": "arrow-up-right, up-right", + "name": "arrow-up-right", + "id": 307, + "order": 0 + }, + { + "ligatures": "arrow-right, right3", + "name": "arrow-right", + "id": 308, + "order": 0 + }, + { + "ligatures": "arrow-down-right, down-right", + "name": "arrow-down-right", + "id": 309, + "order": 0 + }, + { + "ligatures": "arrow-down, down", + "name": "arrow-down", + "id": 310, + "order": 0 + }, + { + "ligatures": "arrow-down-left, down-left", + "name": "arrow-down-left", + "id": 311, + "order": 0 + }, + { + "ligatures": "arrow-left, left3", + "name": "arrow-left", + "id": 312, + "order": 0 + }, + { + "ligatures": "arrow-up-left2, up-left2", + "name": "arrow-up-left2", + "id": 313, + "order": 0 + }, + { + "ligatures": "arrow-up2, up2", + "name": "arrow-up2", + "id": 314, + "order": 0 + }, + { + "ligatures": "arrow-up-right2, up-right2", + "name": "arrow-up-right2", + "id": 315, + "order": 0 + }, + { + "ligatures": "arrow-right2, right4", + "name": "arrow-right2", + "id": 316, + "order": 0 + }, + { + "ligatures": "arrow-down-right2, down-right2", + "name": "arrow-down-right2", + "id": 317, + "order": 0 + }, + { + "ligatures": "arrow-down2, down2", + "name": "arrow-down2", + "id": 318, + "order": 0 + }, + { + "ligatures": "arrow-down-left2, down-left2", + "name": "arrow-down-left2", + "id": 319, + "order": 0 + }, + { + "ligatures": "arrow-left2, left4", + "name": "arrow-left2", + "id": 320, + "order": 0 + }, + { + "ligatures": "circle-up, up3", + "name": "circle-up", + "id": 321, + "order": 0 + }, + { + "ligatures": "circle-right, right5", + "name": "circle-right", + "id": 322, + "order": 0 + }, + { + "ligatures": "circle-down, down3", + "name": "circle-down", + "id": 323, + "order": 0 + }, + { + "ligatures": "circle-left, left5", + "name": "circle-left", + "id": 324, + "order": 0 + }, + { + "ligatures": "tab, arrows", + "name": "tab", + "id": 325, + "order": 0 + }, + { + "ligatures": "move-up, sort", + "name": "move-up", + "id": 326, + "order": 0 + }, + { + "ligatures": "move-down, sort2", + "name": "move-down", + "id": 327, + "order": 0 + }, + { + "ligatures": "sort-alpha-asc, arrange", + "name": "sort-alpha-asc", + "id": 328, + "order": 0 + }, + { + "ligatures": "sort-alpha-desc, arrange2", + "name": "sort-alpha-desc", + "id": 329, + "order": 0 + }, + { + "ligatures": "sort-numeric-asc, arrange3", + "name": "sort-numeric-asc", + "id": 330, + "order": 0 + }, + { + "ligatures": "sort-numberic-desc, arrange4", + "name": "sort-numberic-desc", + "id": 331, + "order": 0 + }, + { + "ligatures": "sort-amount-asc, arrange5", + "name": "sort-amount-asc", + "id": 332, + "order": 0 + }, + { + "ligatures": "sort-amount-desc, arrange6", + "name": "sort-amount-desc", + "id": 333, + "order": 0 + }, + { + "ligatures": "command, cmd", + "name": "command", + "id": 334, + "order": 0 + }, + { + "ligatures": "shift", + "name": "shift", + "id": 335, + "order": 0 + }, + { + "ligatures": "ctrl, control", + "name": "ctrl", + "id": 336, + "order": 0 + }, + { + "ligatures": "opt, option", + "name": "opt", + "id": 337, + "order": 0 + }, + { + "ligatures": "checkbox-checked, checkbox", + "name": "checkbox-checked", + "id": 338, + "order": 0 + }, + { + "ligatures": "checkbox-unchecked, checkbox2", + "name": "checkbox-unchecked", + "id": 339, + "order": 0 + }, + { + "ligatures": "radio-checked, radio-button", + "name": "radio-checked", + "id": 340, + "order": 0 + }, + { + "ligatures": "radio-checked2, radio-button2", + "name": "radio-checked2", + "id": 341, + "order": 0 + }, + { + "ligatures": "radio-unchecked, radio-button3", + "name": "radio-unchecked", + "id": 342, + "order": 0 + }, + { + "ligatures": "crop, resize", + "name": "crop", + "id": 343, + "order": 0 + }, + { + "ligatures": "make-group", + "name": "make-group", + "id": 344, + "order": 0 + }, + { + "ligatures": "ungroup", + "name": "ungroup", + "id": 345, + "order": 0 + }, + { + "ligatures": "scissors, cut", + "name": "scissors", + "id": 346, + "order": 0 + }, + { + "ligatures": "filter, funnel", + "name": "filter", + "id": 347, + "order": 0 + }, + { + "ligatures": "font, typeface", + "name": "font", + "id": 348, + "order": 0 + }, + { + "ligatures": "ligature, typography", + "name": "ligature", + "id": 349, + "order": 0 + }, + { + "ligatures": "ligature2, typography2", + "name": "ligature2", + "id": 350, + "order": 0 + }, + { + "ligatures": "text-height, wysiwyg", + "name": "text-height", + "id": 351, + "order": 0 + }, + { + "ligatures": "text-width, wysiwyg2", + "name": "text-width", + "id": 352, + "order": 0 + }, + { + "ligatures": "font-size, wysiwyg3", + "name": "font-size", + "id": 353, + "order": 0 + }, + { + "ligatures": "bold, wysiwyg4", + "name": "bold", + "id": 354, + "order": 0 + }, + { + "ligatures": "underline, wysiwyg5", + "name": "underline", + "id": 355, + "order": 0 + }, + { + "ligatures": "italic, wysiwyg6", + "name": "italic", + "id": 356, + "order": 0 + }, + { + "ligatures": "strikethrough, wysiwyg7", + "name": "strikethrough", + "id": 357, + "order": 0 + }, + { + "ligatures": "omega, wysiwyg8", + "name": "omega", + "id": 358, + "order": 0 + }, + { + "ligatures": "sigma, wysiwyg9", + "name": "sigma", + "id": 359, + "order": 0 + }, + { + "ligatures": "page-break, wysiwyg10", + "name": "page-break", + "id": 360, + "order": 0 + }, + { + "ligatures": "superscript, wysiwyg11", + "name": "superscript", + "id": 361, + "order": 0 + }, + { + "ligatures": "subscript, wysiwyg12", + "name": "subscript", + "id": 362, + "order": 0 + }, + { + "ligatures": "superscript2, wysiwyg13", + "name": "superscript2", + "id": 363, + "order": 0 + }, + { + "ligatures": "subscript2, wysiwyg14", + "name": "subscript2", + "id": 364, + "order": 0 + }, + { + "ligatures": "text-color, wysiwyg15", + "name": "text-color", + "id": 365, + "order": 0 + }, + { + "ligatures": "pagebreak, wysiwyg16", + "name": "pagebreak", + "id": 366, + "order": 0 + }, + { + "ligatures": "clear-formatting, wysiwyg17", + "name": "clear-formatting", + "id": 367, + "order": 0 + }, + { + "ligatures": "table, wysiwyg18", + "name": "table", + "id": 368, + "order": 0 + }, + { + "ligatures": "table2, wysiwyg19", + "name": "table2", + "id": 369, + "order": 0 + }, + { + "ligatures": "insert-template, wysiwyg20", + "name": "insert-template", + "id": 370, + "order": 0 + }, + { + "ligatures": "pilcrow, wysiwyg21", + "name": "pilcrow", + "id": 371, + "order": 0 + }, + { + "ligatures": "ltr, wysiwyg22", + "name": "ltr", + "id": 372, + "order": 0 + }, + { + "ligatures": "rtl, wysiwyg23", + "name": "rtl", + "id": 373, + "order": 0 + }, + { + "ligatures": "section, wysiwyg24", + "name": "section", + "id": 374, + "order": 0 + }, + { + "ligatures": "paragraph-left, wysiwyg25", + "name": "paragraph-left", + "id": 375, + "order": 0 + }, + { + "ligatures": "paragraph-center, wysiwyg26", + "name": "paragraph-center", + "id": 376, + "order": 0 + }, + { + "ligatures": "paragraph-right, wysiwyg27", + "name": "paragraph-right", + "id": 377, + "order": 0 + }, + { + "ligatures": "paragraph-justify, wysiwyg28", + "name": "paragraph-justify", + "id": 378, + "order": 0 + }, + { + "ligatures": "indent-increase, wysiwyg29", + "name": "indent-increase", + "id": 379, + "order": 0 + }, + { + "ligatures": "indent-decrease, wysiwyg30", + "name": "indent-decrease", + "id": 380, + "order": 0 + }, + { + "ligatures": "share, out", + "name": "share", + "id": 381, + "order": 0 + }, + { + "ligatures": "new-tab, out2", + "name": "new-tab", + "id": 382, + "order": 0 + }, + { + "ligatures": "embed, code", + "name": "embed", + "id": 383, + "order": 0 + }, + { + "ligatures": "embed2, code2", + "name": "embed2", + "id": 384, + "order": 0 + }, + { + "ligatures": "terminal, console", + "name": "terminal", + "id": 385, + "order": 0 + }, + { + "ligatures": "share2, social", + "name": "share2", + "id": 386, + "order": 0 + }, + { + "ligatures": "mail2, contact2", + "name": "mail", + "id": 387, + "order": 0 + }, + { + "ligatures": "mail3, contact3", + "name": "mail2", + "id": 388, + "order": 0 + }, + { + "ligatures": "mail4, contact4", + "name": "mail3", + "id": 389, + "order": 0 + }, + { + "ligatures": "mail5, contact5", + "name": "mail4", + "id": 390, + "order": 0 + }, + { + "name": "amazon", + "ligatures": "amazon, brand", + "id": 391, + "order": 0 + }, + { + "name": "google", + "ligatures": "google, brand2", + "id": 392, + "order": 0 + }, + { + "name": "google2", + "ligatures": "google2, brand3", + "id": 393, + "order": 0 + }, + { + "name": "google3", + "ligatures": "google3, brand4", + "id": 394, + "order": 0 + }, + { + "ligatures": "google-plus, brand5", + "name": "google-plus", + "id": 395, + "order": 0 + }, + { + "ligatures": "google-plus2, brand6", + "name": "google-plus2", + "id": 396, + "order": 0 + }, + { + "ligatures": "google-plus3, brand7", + "name": "google-plus3", + "id": 397, + "order": 0 + }, + { + "name": "hangouts", + "ligatures": "hangouts, brand8", + "id": 398, + "order": 0 + }, + { + "ligatures": "google-drive, brand9", + "name": "google-drive", + "id": 399, + "order": 0 + }, + { + "ligatures": "facebook, brand10", + "name": "facebook", + "id": 400, + "order": 0 + }, + { + "ligatures": "facebook2, brand11", + "name": "facebook2", + "id": 401, + "order": 0 + }, + { + "ligatures": "instagram, brand12", + "name": "instagram", + "id": 402, + "order": 0 + }, + { + "name": "whatsapp", + "ligatures": "whatsapp, brand13", + "id": 403, + "order": 0 + }, + { + "name": "spotify", + "ligatures": "spotify, brand14", + "id": 404, + "order": 0 + }, + { + "name": "telegram", + "ligatures": "telegram, brand15", + "id": 405, + "order": 0 + }, + { + "ligatures": "twitter, brand16", + "name": "twitter", + "id": 406, + "order": 0 + }, + { + "name": "vine", + "ligatures": "vine, brand17", + "id": 407, + "order": 0 + }, + { + "name": "vk", + "ligatures": "vk, brand18", + "id": 408, + "order": 0 + }, + { + "name": "renren", + "ligatures": "renren, brand19", + "id": 409, + "order": 0 + }, + { + "name": "sina-weibo", + "ligatures": "sina-weibo, brand20", + "id": 410, + "order": 0 + }, + { + "ligatures": "feed2, rss", + "name": "rss", + "id": 411, + "order": 0 + }, + { + "ligatures": "feed3, rss2", + "name": "rss2", + "id": 412, + "order": 0 + }, + { + "ligatures": "youtube, brand21", + "name": "youtube", + "id": 413, + "order": 0 + }, + { + "ligatures": "youtube2, brand22", + "name": "youtube2", + "id": 414, + "order": 0 + }, + { + "ligatures": "twitch, brand23", + "name": "twitch", + "id": 415, + "order": 0 + }, + { + "ligatures": "vimeo, brand24", + "name": "vimeo", + "id": 416, + "order": 0 + }, + { + "ligatures": "vimeo2, brand25", + "name": "vimeo2", + "id": 417, + "order": 0 + }, + { + "ligatures": "lanyrd, brand26", + "name": "lanyrd", + "id": 418, + "order": 0 + }, + { + "ligatures": "flickr, brand27", + "name": "flickr", + "id": 419, + "order": 0 + }, + { + "ligatures": "flickr2, brand28", + "name": "flickr2", + "id": 420, + "order": 0 + }, + { + "ligatures": "flickr3, brand29", + "name": "flickr3", + "id": 421, + "order": 0 + }, + { + "ligatures": "flickr4, brand30", + "name": "flickr4", + "id": 422, + "order": 0 + }, + { + "ligatures": "dribbble, brand31", + "name": "dribbble", + "id": 423, + "order": 0 + }, + { + "name": "behance", + "ligatures": "behance, brand32", + "id": 424, + "order": 0 + }, + { + "name": "behance2", + "ligatures": "behance2, brand33", + "id": 425, + "order": 0 + }, + { + "ligatures": "deviantart, brand34", + "name": "deviantart", + "id": 426, + "order": 0 + }, + { + "name": "500px", + "ligatures": "500px, brand35", + "id": 427, + "order": 0 + }, + { + "ligatures": "steam, brand36", + "name": "steam", + "id": 428, + "order": 0 + }, + { + "ligatures": "steam2, brand37", + "name": "steam2", + "id": 429, + "order": 0 + }, + { + "ligatures": "dropbox, brand38", + "name": "dropbox", + "id": 430, + "order": 0 + }, + { + "ligatures": "onedrive, brand39", + "name": "onedrive", + "id": 431, + "order": 0 + }, + { + "ligatures": "github, brand40", + "name": "github", + "id": 432, + "order": 0 + }, + { + "name": "npm", + "ligatures": "npm, brand41", + "id": 433, + "order": 0 + }, + { + "name": "basecamp", + "ligatures": "basecamp, brand42", + "id": 434, + "order": 0 + }, + { + "name": "trello", + "ligatures": "trello, brand43", + "id": 435, + "order": 0 + }, + { + "ligatures": "wordpress, brand44", + "name": "wordpress", + "id": 436, + "order": 0 + }, + { + "ligatures": "joomla, brand45", + "name": "joomla", + "id": 437, + "order": 0 + }, + { + "ligatures": "ello, brand46", + "name": "ello", + "id": 438, + "order": 0 + }, + { + "ligatures": "blogger, brand47", + "name": "blogger", + "id": 439, + "order": 0 + }, + { + "ligatures": "blogger2, brand48", + "name": "blogger2", + "id": 440, + "order": 0 + }, + { + "ligatures": "tumblr, brand49", + "name": "tumblr", + "id": 441, + "order": 0 + }, + { + "ligatures": "tumblr2, brand50", + "name": "tumblr2", + "id": 442, + "order": 0 + }, + { + "ligatures": "yahoo, brand51", + "name": "yahoo", + "id": 443, + "order": 0 + }, + { + "name": "yahoo2", + "ligatures": "yahoo2", + "id": 444, + "order": 0 + }, + { + "ligatures": "tux, brand52", + "name": "tux", + "id": 445, + "order": 0 + }, + { + "ligatures": "apple, brand53", + "name": "appleinc", + "id": 446, + "order": 0 + }, + { + "ligatures": "finder, brand54", + "name": "finder", + "id": 447, + "order": 0 + }, + { + "ligatures": "android, brand55", + "name": "android", + "id": 448, + "order": 0 + }, + { + "ligatures": "windows, brand56", + "name": "windows", + "id": 449, + "order": 0 + }, + { + "ligatures": "windows8, brand57", + "name": "windows8", + "id": 450, + "order": 0 + }, + { + "ligatures": "soundcloud, brand58", + "name": "soundcloud", + "id": 451, + "order": 0 + }, + { + "ligatures": "soundcloud2, brand59", + "name": "soundcloud2", + "id": 452, + "order": 0 + }, + { + "ligatures": "skype, brand60", + "name": "skype", + "id": 453, + "order": 0 + }, + { + "ligatures": "reddit, brand61", + "name": "reddit", + "id": 454, + "order": 0 + }, + { + "name": "hackernews", + "ligatures": "hackernews, brand62", + "id": 455, + "order": 0 + }, + { + "name": "wikipedia", + "ligatures": "wikipedia, brand63", + "id": 456, + "order": 0 + }, + { + "ligatures": "linkedin, brand64", + "name": "linkedin", + "id": 457, + "order": 0 + }, + { + "ligatures": "linkedin2, brand65", + "name": "linkedin2", + "id": 458, + "order": 0 + }, + { + "ligatures": "lastfm, brand66", + "name": "lastfm", + "id": 459, + "order": 0 + }, + { + "ligatures": "lastfm2, brand67", + "name": "lastfm2", + "id": 460, + "order": 0 + }, + { + "ligatures": "delicious, brand68", + "name": "delicious", + "id": 461, + "order": 0 + }, + { + "name": "stumbleupon", + "ligatures": "stumbleupon, brand69", + "id": 462, + "order": 0 + }, + { + "ligatures": "stumbleupon2, brand70", + "name": "stumbleupon2", + "id": 463, + "order": 0 + }, + { + "ligatures": "stackoverflow, brand71", + "name": "stackoverflow", + "id": 464, + "order": 0 + }, + { + "name": "pinterest", + "ligatures": "pinterest, brand72", + "id": 465, + "order": 0 + }, + { + "ligatures": "pinterest2, brand73", + "name": "pinterest2", + "id": 466, + "order": 0 + }, + { + "ligatures": "xing, brand74", + "name": "xing", + "id": 467, + "order": 0 + }, + { + "ligatures": "xing2, brand75", + "name": "xing2", + "codes": [ + 61231 + ], + "id": 468, + "order": 0 + }, + { + "ligatures": "flattr, brand76", + "name": "flattr", + "id": 469, + "order": 0 + }, + { + "ligatures": "foursquare, brand77", + "name": "foursquare", + "id": 470, + "order": 0 + }, + { + "ligatures": "yelp, brand78", + "name": "yelp", + "id": 471, + "order": 0 + }, + { + "ligatures": "paypal, brand79", + "name": "paypal", + "codes": [ + 61234 + ], + "id": 472, + "order": 0 + }, + { + "ligatures": "chrome, browser", + "name": "chrome", + "id": 473, + "order": 0 + }, + { + "ligatures": "firefox, browser2", + "name": "firefox", + "id": 474, + "order": 0 + }, + { + "ligatures": "IE, browser3", + "name": "IE", + "id": 475, + "order": 0 + }, + { + "name": "edge", + "ligatures": "edge, browser4", + "id": 476, + "order": 0 + }, + { + "ligatures": "safari, browser5", + "name": "safari", + "id": 477, + "order": 0 + }, + { + "ligatures": "opera, browser6", + "name": "opera", + "id": 478, + "order": 0 + }, + { + "ligatures": "file-pdf, file10", + "name": "file-pdf", + "id": 479, + "order": 0 + }, + { + "ligatures": "file-openoffice, file11", + "name": "file-openoffice", + "id": 480, + "order": 0 + }, + { + "ligatures": "file-word, file12", + "name": "file-word", + "id": 481, + "order": 0 + }, + { + "ligatures": "file-excel, file13", + "name": "file-excel", + "id": 482, + "order": 0 + }, + { + "ligatures": "libreoffice, file14", + "name": "libreoffice", + "id": 483, + "order": 0 + }, + { + "ligatures": "html-five, w3c", + "name": "html-five", + "id": 484, + "order": 0 + }, + { + "ligatures": "html-five2, w3c2", + "name": "html-five2", + "id": 485, + "order": 0 + }, + { + "ligatures": "css3, w3c3", + "name": "css3", + "id": 486, + "order": 0 + }, + { + "ligatures": "git, brand80", + "name": "git", + "id": 487, + "order": 0 + }, + { + "ligatures": "codepen, brand81", + "name": "codepen", + "id": 488, + "order": 0 + }, + { + "ligatures": "svg", + "name": "svg", + "id": 489, + "order": 0 + }, + { + "ligatures": "IcoMoon, icomoon", + "name": "IcoMoon", + "id": 490, + "order": 0 + } + ], + "id": 3, + "metadata": { + "name": "IcoMoon - Free", + "licenseURL": "https://icomoon.io/#icons-icomoon", + "license": "GPL or CC BY 4.0", + "designerURL": "http://keyamoon.com", + "designer": "Keyamoon", + "url": "https://icomoon.io/#icons-icomoon" + }, + "height": 1024, + "prevSize": 32, + "icons": [ + { + "id": 0, + "paths": [ + "M1024 590.444l-512-397.426-512 397.428v-162.038l512-397.426 512 397.428zM896 576v384h-256v-256h-256v256h-256v-384l384-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home", + "house" + ], + "defaultCode": 59648, + "grid": 16 + }, + { + "id": 1, + "paths": [ + "M512 32l-512 512 96 96 96-96v416h256v-192h128v192h256v-416l96 96 96-96-512-512zM512 448c-35.346 0-64-28.654-64-64s28.654-64 64-64c35.346 0 64 28.654 64 64s-28.654 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home", + "house" + ], + "defaultCode": 59649, + "grid": 16 + }, + { + "id": 2, + "paths": [ + "M1024 608l-192-192v-288h-128v160l-192-192-512 512v32h128v320h320v-192h128v192h320v-320h128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "home", + "house" + ], + "defaultCode": 59650, + "grid": 16 + }, + { + "id": 3, + "paths": [ + "M0 1024h512v-1024h-512v1024zM320 128h128v128h-128v-128zM320 384h128v128h-128v-128zM320 640h128v128h-128v-128zM64 128h128v128h-128v-128zM64 384h128v128h-128v-128zM64 640h128v128h-128v-128zM576 320h448v64h-448zM576 1024h128v-256h192v256h128v-576h-448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "office", + "buildings", + "work" + ], + "defaultCode": 59651, + "grid": 16 + }, + { + "id": 4, + "paths": [ + "M896 256v-128h-896v704c0 35.346 28.654 64 64 64h864c53.022 0 96-42.978 96-96v-544h-128zM832 832h-768v-640h768v640zM128 320h640v64h-640zM512 448h256v64h-256zM512 576h256v64h-256zM512 704h192v64h-192zM128 448h320v320h-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "newspaper", + "news", + "paper" + ], + "defaultCode": 59652, + "grid": 16 + }, + { + "id": 5, + "paths": [ + "M864 0c88.364 0 160 71.634 160 160 0 36.020-11.91 69.258-32 96l-64 64-224-224 64-64c26.742-20.090 59.978-32 96-32zM64 736l-64 288 288-64 592-592-224-224-592 592zM715.578 363.578l-448 448-55.156-55.156 448-448 55.156 55.156z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 59653, + "grid": 16 + }, + { + "id": 6, + "paths": [ + "M384 640l128-64 448-448-64-64-448 448-64 128zM289.3 867.098c-31.632-66.728-65.666-100.762-132.396-132.394l99.096-272.792 128-77.912 384-384h-192l-384 384-192 640 640-192 384-384v-192l-384 384-77.912 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 59654, + "grid": 16 + }, + { + "id": 7, + "paths": [ + "M0 1024c128-384 463-1024 1024-1024-263 211-384 704-576 704s-192 0-192 0l-192 320h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "quill", + "feather", + "write", + "edit" + ], + "defaultCode": 59655, + "grid": 16 + }, + { + "id": 8, + "paths": [ + "M1018.17 291.89l-286.058-286.058c-9.334-9.334-21.644-7.234-27.356 4.666l-38.354 79.904 267.198 267.198 79.904-38.354c11.9-5.712 14-18.022 4.666-27.356z", + "M615.384 135.384l-263.384 21.95c-17.5 2.166-32.080 5.898-37.090 28.752-0.006 0.024-0.012 0.042-0.018 0.066-71.422 343.070-314.892 677.848-314.892 677.848l57.374 57.374 271.986-271.99c-5.996-12.53-9.36-26.564-9.36-41.384 0-53.020 42.98-96 96-96s96 42.98 96 96-42.98 96-96 96c-14.82 0-28.852-3.364-41.384-9.36l-271.988 271.986 57.372 57.374c0 0 334.778-243.47 677.848-314.892 0.024-0.006 0.042-0.012 0.066-0.018 22.854-5.010 26.586-19.59 28.752-37.090l21.95-263.384-273.232-273.232z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pen", + "write", + "edit" + ], + "defaultCode": 59656, + "grid": 16 + }, + { + "id": 9, + "paths": [ + "M384 0v96c73.482 0 144.712 14.37 211.716 42.71 64.768 27.394 122.958 66.632 172.948 116.624s89.228 108.18 116.624 172.948c28.342 67.004 42.712 138.238 42.712 211.718h96c0-353.46-286.54-640-640-640z", + "M384 192v96c94.022 0 182.418 36.614 248.9 103.098 66.486 66.484 103.1 154.878 103.1 248.902h96c0-247.422-200.576-448-448-448z", + "M480 384l-64 64-224 64-192 416 25.374 25.374 232.804-232.804c-1.412-5.286-2.178-10.84-2.178-16.57 0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64c-5.732 0-11.282-0.764-16.568-2.178l-232.804 232.804 25.372 25.374 416-192 64-224 64-64-160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blog", + "pen", + "feed", + "publish", + "broadcast", + "write" + ], + "defaultCode": 59657, + "grid": 16 + }, + { + "id": 10, + "paths": [ + "M986.51 37.49c-49.988-49.986-131.032-49.986-181.020 0l-172.118 172.118-121.372-121.372-135.764 135.764 106.426 106.426-472.118 472.118c-8.048 8.048-11.468 18.958-10.3 29.456h-0.244v160c0 17.674 14.328 32 32 32h160c0 0 2.664 0 4 0 9.212 0 18.426-3.516 25.456-10.544l472.118-472.118 106.426 106.426 135.764-135.764-121.372-121.372 172.118-172.118c49.986-49.988 49.986-131.032 0-181.020zM173.090 960h-109.090v-109.090l469.574-469.572 109.088 109.088-469.572 469.574z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eyedropper", + "color", + "color-picker", + "sample" + ], + "defaultCode": 59658, + "grid": 16 + }, + { + "id": 11, + "paths": [ + "M864.626 473.162c-65.754-183.44-205.11-348.15-352.626-473.162-147.516 125.012-286.87 289.722-352.626 473.162-40.664 113.436-44.682 236.562 12.584 345.4 65.846 125.14 198.632 205.438 340.042 205.438s274.196-80.298 340.040-205.44c57.27-108.838 53.25-231.962 12.586-345.398zM738.764 758.956c-43.802 83.252-132.812 137.044-226.764 137.044-55.12 0-108.524-18.536-152.112-50.652 13.242 1.724 26.632 2.652 40.112 2.652 117.426 0 228.668-67.214 283.402-171.242 44.878-85.292 40.978-173.848 23.882-244.338 14.558 28.15 26.906 56.198 36.848 83.932 22.606 63.062 40.024 156.34-5.368 242.604z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "droplet", + "color", + "water" + ], + "defaultCode": 59659, + "grid": 16 + }, + { + "id": 12, + "paths": [ + "M1024 576v-384h-192v-64c0-35.2-28.8-64-64-64h-704c-35.2 0-64 28.8-64 64v192c0 35.2 28.8 64 64 64h704c35.2 0 64-28.8 64-64v-64h128v256h-576v128h-32c-17.674 0-32 14.326-32 32v320c0 17.674 14.326 32 32 32h128c17.674 0 32-14.326 32-32v-320c0-17.674-14.326-32-32-32h-32v-64h576zM768 192h-704v-64h704v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paint-format", + "format", + "color" + ], + "defaultCode": 59660, + "grid": 16 + }, + { + "id": 13, + "paths": [ + "M959.884 128c0.040 0.034 0.082 0.076 0.116 0.116v767.77c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.772c0.034-0.040 0.076-0.082 0.114-0.114h895.77zM960 64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64v0z", + "M832 288c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z", + "M896 832h-768v-128l224-384 256 320h64l224-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "image", + "picture", + "photo", + "graphic" + ], + "defaultCode": 59661, + "grid": 16 + }, + { + "id": 14, + "paths": [ + "M1088 128h-64v-64c0-35.2-28.8-64-64-64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h64v64c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64zM128 192v640h-63.886c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v63.884h-768c-35.2 0-64 28.8-64 64v0zM1088 959.884c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v767.768z", + "M960 352c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z", + "M1024 896h-768v-128l224-384 256 320h64l224-192z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "images", + "pictures", + "photos", + "graphics" + ], + "defaultCode": 59662, + "grid": 16 + }, + { + "id": 15, + "paths": [ + "M304 608c0 114.876 93.124 208 208 208s208-93.124 208-208-93.124-208-208-208-208 93.124-208 208zM960 256h-224c-16-64-32-128-96-128h-256c-64 0-80 64-96 128h-224c-35.2 0-64 28.8-64 64v576c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-576c0-35.2-28.8-64-64-64zM512 892c-156.85 0-284-127.148-284-284 0-156.85 127.15-284 284-284 156.852 0 284 127.15 284 284 0 156.852-127.146 284-284 284zM960 448h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "camera", + "photo", + "picture", + "image" + ], + "defaultCode": 59663, + "grid": 16 + }, + { + "id": 16, + "paths": [ + "M288 576h-64v448h64c17.6 0 32-14.4 32-32v-384c0-17.6-14.4-32-32-32z", + "M736 576c-17.602 0-32 14.4-32 32v384c0 17.6 14.398 32 32 32h64v-448h-64z", + "M1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 61.412 10.83 120.29 30.656 174.848-19.478 33.206-30.656 71.87-30.656 113.152 0 112.846 83.448 206.188 192 221.716v-443.418c-31.914 4.566-61.664 15.842-87.754 32.378-5.392-26.718-8.246-54.364-8.246-82.676 0-229.75 186.25-416 416-416s416 186.25 416 416c0 28.314-2.83 55.968-8.22 82.696-26.1-16.546-55.854-27.848-87.78-32.418v443.44c108.548-15.532 192-108.874 192-221.714 0-41.274-11.178-79.934-30.648-113.138 19.828-54.566 30.648-113.452 30.648-174.866z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "headphones", + "headset", + "music", + "audio" + ], + "defaultCode": 59664, + "grid": 16 + }, + { + "id": 17, + "paths": [ + "M960 0h64v736c0 88.366-100.29 160-224 160s-224-71.634-224-160c0-88.368 100.29-160 224-160 62.684 0 119.342 18.4 160 48.040v-368.040l-512 113.778v494.222c0 88.366-100.288 160-224 160s-224-71.634-224-160c0-88.368 100.288-160 224-160 62.684 0 119.342 18.4 160 48.040v-624.040l576-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "music", + "song", + "audio", + "sound", + "note" + ], + "defaultCode": 59665, + "grid": 16 + }, + { + "id": 18, + "paths": [ + "M981.188 160.108c-143.632-20.65-302.332-32.108-469.186-32.108-166.86 0-325.556 11.458-469.194 32.108-27.53 107.726-42.808 226.75-42.808 351.892 0 125.14 15.278 244.166 42.808 351.89 143.638 20.652 302.336 32.11 469.194 32.11 166.854 0 325.552-11.458 469.186-32.11 27.532-107.724 42.812-226.75 42.812-351.89 0-125.142-15.28-244.166-42.812-351.892zM384.002 704v-384l320 192-320 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "play", + "video", + "movie" + ], + "defaultCode": 59666, + "grid": 16 + }, + { + "id": 19, + "paths": [ + "M0 128v768h1024v-768h-1024zM192 832h-128v-128h128v128zM192 576h-128v-128h128v128zM192 320h-128v-128h128v128zM768 832h-512v-640h512v640zM960 832h-128v-128h128v128zM960 576h-128v-128h128v128zM960 320h-128v-128h128v128zM384 320v384l256-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "film", + "video", + "movie", + "tape", + "play" + ], + "defaultCode": 59667, + "grid": 16 + }, + { + "id": 20, + "paths": [ + "M384 288c0-88.366 71.634-160 160-160s160 71.634 160 160c0 88.366-71.634 160-160 160s-160-71.634-160-160zM0 288c0-88.366 71.634-160 160-160s160 71.634 160 160c0 88.366-71.634 160-160 160s-160-71.634-160-160zM768 608v-96c0-35.2-28.8-64-64-64h-640c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-96l256 160v-448l-256 160zM640 768h-512v-192h512v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "video-camera", + "video", + "media", + "film", + "movie" + ], + "defaultCode": 59668, + "grid": 16 + }, + { + "id": 21, + "paths": [ + "M864 192h-512c-88 0-160 72-160 160v512c0 88 72 160 160 160h512c88 0 160-72 160-160v-512c0-88-72-160-160-160zM416 896c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM416 512c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM608 704c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM800 896c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM800 512c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96zM828.76 128c-14.93-72.804-79.71-128-156.76-128h-512c-88 0-160 72-160 160v512c0 77.046 55.196 141.83 128 156.76v-636.76c0-35.2 28.8-64 64-64h636.76z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "dice", + "game", + "chance", + "luck", + "random", + "gample" + ], + "defaultCode": 59669, + "grid": 16 + }, + { + "id": 22, + "paths": [ + "M964.73 178.804c-93.902-109.45-233.21-178.804-388.73-178.804-282.77 0-512 229.23-512 512s229.23 512 512 512c155.52 0 294.828-69.356 388.728-178.804l-324.728-333.196 324.73-333.196zM704 120.602c39.432 0 71.398 31.964 71.398 71.398 0 39.432-31.966 71.398-71.398 71.398s-71.398-31.966-71.398-71.398c0-39.432 31.966-71.398 71.398-71.398z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pacman", + "game", + "arcade" + ], + "defaultCode": 59670, + "grid": 16 + }, + { + "id": 23, + "paths": [ + "M817.57 348.15c-193.566-143.858-260.266-259.018-305.566-348.148v0c-0.004 0-0.004-0.002-0.004-0.002v0.002c-45.296 89.13-112 204.292-305.566 348.148-330.036 245.286-19.376 587.668 253.758 399.224-17.796 116.93-78.53 202.172-140.208 238.882v37.744h384.032v-37.74c-61.682-36.708-122.41-121.954-140.212-238.884 273.136 188.446 583.8-153.94 253.766-399.226z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spades", + "cards", + "poker" + ], + "defaultCode": 59671, + "grid": 16 + }, + { + "id": 24, + "paths": [ + "M786.832 392.772c-59.032 0-112.086 24.596-149.852 64.694-15.996 16.984-43.762 37.112-73.8 54.81 14.11-53.868 58.676-121.7 89.628-151.456 39.64-38.17 63.984-91.83 63.984-151.5 0.006-114.894-91.476-208.096-204.788-209.32-113.32 1.222-204.796 94.426-204.796 209.318 0 59.672 24.344 113.33 63.986 151.5 30.954 29.756 75.52 97.588 89.628 151.456-30.042-17.7-57.806-37.826-73.8-54.81-37.768-40.098-90.82-64.694-149.85-64.694-114.386 0-207.080 93.664-207.080 209.328 0 115.638 92.692 209.338 207.080 209.338 59.042 0 112.082-25.356 149.85-65.452 16.804-17.872 46.444-40.138 78.292-58.632-3.002 147.692-73.532 256.168-145.318 298.906v37.742h384.014v-37.74c-71.792-42.736-142.32-151.216-145.32-298.906 31.852 18.494 61.488 40.768 78.292 58.632 37.766 40.094 90.808 65.452 149.852 65.452 114.386 0 207.078-93.7 207.078-209.338-0.002-115.664-92.692-209.328-207.080-209.328z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clubs", + "cards", + "poker" + ], + "defaultCode": 59672, + "grid": 16 + }, + { + "id": 25, + "paths": [ + "M512 0l-320 512 320 512 320-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "diamonds", + "cards", + "poker" + ], + "defaultCode": 59673, + "grid": 16 + }, + { + "id": 26, + "paths": [ + "M1024 429.256c0-200.926-58.792-363.938-131.482-365.226 0.292-0.006 0.578-0.030 0.872-0.030h-82.942c0 0-194.8 146.336-475.23 203.754-8.56 45.292-14.030 99.274-14.030 161.502s5.466 116.208 14.030 161.5c280.428 57.418 475.23 203.756 475.23 203.756h82.942c-0.292 0-0.578-0.024-0.872-0.032 72.696-1.288 131.482-164.298 131.482-365.224zM864.824 739.252c-9.382 0-19.532-9.742-24.746-15.548-12.63-14.064-24.792-35.96-35.188-63.328-23.256-61.232-36.066-143.31-36.066-231.124 0-87.81 12.81-169.89 36.066-231.122 10.394-27.368 22.562-49.266 35.188-63.328 5.214-5.812 15.364-15.552 24.746-15.552 9.38 0 19.536 9.744 24.744 15.552 12.634 14.064 24.796 35.958 35.188 63.328 23.258 61.23 36.068 143.312 36.068 231.122 0 87.804-12.81 169.888-36.068 231.124-10.39 27.368-22.562 49.264-35.188 63.328-5.208 5.806-15.36 15.548-24.744 15.548zM251.812 429.256c0-51.95 3.81-102.43 11.052-149.094-47.372 6.554-88.942 10.324-140.34 10.324-67.058 0-67.058 0-67.058 0l-55.466 94.686v88.17l55.46 94.686c0 0 0 0 67.060 0 51.398 0 92.968 3.774 140.34 10.324-7.236-46.664-11.048-97.146-11.048-149.096zM368.15 642.172l-127.998-24.51 81.842 321.544c4.236 16.634 20.744 25.038 36.686 18.654l118.556-47.452c15.944-6.376 22.328-23.964 14.196-39.084l-123.282-229.152zM864.824 548.73c-3.618 0-7.528-3.754-9.538-5.992-4.87-5.42-9.556-13.86-13.562-24.408-8.962-23.6-13.9-55.234-13.9-89.078s4.938-65.478 13.9-89.078c4.006-10.548 8.696-18.988 13.562-24.408 2.010-2.24 5.92-5.994 9.538-5.994 3.616 0 7.53 3.756 9.538 5.994 4.87 5.42 9.556 13.858 13.56 24.408 8.964 23.598 13.902 55.234 13.902 89.078 0 33.842-4.938 65.478-13.902 89.078-4.004 10.548-8.696 18.988-13.56 24.408-2.008 2.238-5.92 5.992-9.538 5.992z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bullhorn", + "megaphone", + "announcement", + "advertisement", + "news" + ], + "defaultCode": 59674, + "grid": 16 + }, + { + "id": 27, + "paths": [ + "M640 576c105.87 0 201.87 43.066 271.402 112.598l-90.468 90.468c-46.354-46.356-110.356-75.066-180.934-75.066s-134.578 28.71-180.934 75.066l-90.468-90.468c69.532-69.532 165.532-112.598 271.402-112.598zM187.452 507.452c120.88-120.88 281.598-187.452 452.548-187.452s331.668 66.572 452.55 187.452l-90.51 90.508c-96.706-96.704-225.28-149.96-362.040-149.96-136.762 0-265.334 53.256-362.038 149.962l-90.51-90.51zM988.784 134.438c106.702 45.132 202.516 109.728 284.782 191.996v0l-90.508 90.508c-145.056-145.056-337.92-224.942-543.058-224.942-205.14 0-398 79.886-543.058 224.942l-90.51-90.51c82.268-82.266 178.082-146.862 284.784-191.994 110.504-46.738 227.852-70.438 348.784-70.438s238.278 23.7 348.784 70.438zM576 896c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "connection", + "wifi", + "wave" + ], + "defaultCode": 59675, + "grid": 16 + }, + { + "id": 28, + "paths": [ + "M1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 220.054 138.836 407.664 333.686 480.068l-13.686 31.932h384l-13.686-31.932c194.85-72.404 333.686-260.014 333.686-480.068zM486.79 634.826c-22.808-9.788-38.79-32.436-38.79-58.826 0-35.346 28.654-64 64-64s64 28.654 64 64c0 26.39-15.978 49.044-38.786 58.834l-25.214-58.834-25.21 58.826zM538.268 637.292c58.092-12.118 101.732-63.602 101.732-125.292 0-70.694-57.306-128-128-128-70.692 0-128 57.306-128 128 0 61.692 43.662 113.122 101.76 125.228l-74.624 174.122c-91.23-39.15-155.136-129.784-155.136-235.35 0-141.384 114.616-268 256-268s256 126.616 256 268c0 105.566-63.906 196.2-155.136 235.35l-74.596-174.058zM688.448 987.708l-73.924-172.486c126.446-42.738 217.476-162.346 217.476-303.222 0-176.73-143.268-320-320-320-176.73 0-320 143.27-320 320 0 140.876 91.030 260.484 217.476 303.222l-73.924 172.486c-159.594-68.488-271.386-227.034-271.386-411.708 0-247.332 200.502-459.834 447.834-459.834s447.834 212.502 447.834 459.834c0 184.674-111.792 343.22-271.386 411.708z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "podcast", + "broadcast", + "live", + "radio", + "feed" + ], + "defaultCode": 59676, + "grid": 16 + }, + { + "id": 29, + "paths": [ + "M384 512c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM664.348 230.526c99.852 54.158 167.652 159.898 167.652 281.474s-67.8 227.316-167.652 281.474c44.066-70.126 71.652-170.27 71.652-281.474s-27.586-211.348-71.652-281.474zM288 512c0 111.204 27.584 211.348 71.652 281.474-99.852-54.16-167.652-159.898-167.652-281.474s67.8-227.314 167.652-281.474c-44.068 70.126-71.652 170.27-71.652 281.474zM96 512c0 171.9 54.404 326.184 140.652 431.722-142.302-90.948-236.652-250.314-236.652-431.722s94.35-340.774 236.652-431.722c-86.248 105.538-140.652 259.822-140.652 431.722zM787.352 80.28c142.298 90.946 236.648 250.312 236.648 431.72s-94.35 340.774-236.648 431.72c86.244-105.536 140.648-259.82 140.648-431.72s-54.404-326.184-140.648-431.72z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "wave", + "radio", + "live", + "broadcast" + ], + "defaultCode": 59677, + "grid": 16 + }, + { + "id": 30, + "paths": [ + "M480 704c88.366 0 160-71.634 160-160v-384c0-88.366-71.634-160-160-160s-160 71.634-160 160v384c0 88.366 71.636 160 160 160zM704 448v96c0 123.71-100.29 224-224 224-123.712 0-224-100.29-224-224v-96h-64v96c0 148.238 112.004 270.3 256 286.22v129.78h-128v64h320v-64h-128v-129.78c143.994-15.92 256-137.982 256-286.22v-96h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mic", + "microphone", + "voice", + "audio" + ], + "defaultCode": 59678, + "grid": 16 + }, + { + "id": 31, + "paths": [ + "M896 128v832h-672c-53.026 0-96-42.98-96-96s42.974-96 96-96h608v-768h-640c-70.398 0-128 57.6-128 128v768c0 70.4 57.602 128 128 128h768v-896h-64z", + "M224.056 832v0c-0.018 0.002-0.038 0-0.056 0-17.672 0-32 14.326-32 32s14.328 32 32 32c0.018 0 0.038-0.002 0.056-0.002v0.002h607.89v-64h-607.89z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "book", + "read", + "reading" + ], + "defaultCode": 59679, + "grid": 16 + }, + { + "id": 32, + "paths": [ + "M224 128h-192c-17.6 0-32 14.4-32 32v704c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-704c0-17.6-14.4-32-32-32zM192 320h-128v-64h128v64z", + "M544 128h-192c-17.6 0-32 14.4-32 32v704c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-704c0-17.6-14.4-32-32-32zM512 320h-128v-64h128v64z", + "M765.088 177.48l-171.464 86.394c-15.716 7.918-22.096 27.258-14.178 42.976l287.978 571.548c7.918 15.718 27.258 22.098 42.976 14.178l171.464-86.392c15.716-7.92 22.096-27.26 14.178-42.974l-287.978-571.55c-7.92-15.718-27.26-22.1-42.976-14.18z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "books", + "library", + "archive" + ], + "defaultCode": 59680, + "grid": 16 + }, + { + "id": 33, + "paths": [ + "M1024 960v-64h-64v-384h64v-64h-192v64h64v384h-192v-384h64v-64h-192v64h64v384h-192v-384h64v-64h-192v64h64v384h-192v-384h64v-64h-192v64h64v384h-64v64h-64v64h1088v-64h-64z", + "M512 0h64l512 320v64h-1088v-64l512-320z" + ], + "width": 1088, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "library", + "bank", + "building" + ], + "defaultCode": 59681, + "grid": 16 + }, + { + "id": 34, + "paths": [ + "M864 0h-768c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h768c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM832 896h-704v-768h704v768zM256 448h448v64h-448zM256 576h448v64h-448zM256 704h448v64h-448zM256 320h448v64h-448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-text", + "file", + "document", + "list", + "paper" + ], + "defaultCode": 59682, + "grid": 16 + }, + { + "id": 35, + "paths": [ + "M864 0h-768c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h768c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM832 896h-704v-768h704v768zM256 576h448v64h-448zM256 704h448v64h-448zM320 288c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM480 384h-128c-52.8 0-96 28.8-96 64v64h320v-64c0-35.2-43.2-64-96-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "profile", + "file", + "document", + "page", + "user", + "paper" + ], + "defaultCode": 59683, + "grid": 16 + }, + { + "id": 36, + "paths": [ + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-empty", + "file", + "document", + "paper", + "page", + "new", + "empty", + "blank" + ], + "defaultCode": 59684, + "grid": 16 + }, + { + "id": 37, + "paths": [ + "M917.806 357.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-368c-44.114 0-80 35.888-80 80v736c0 44.112 35.886 80 80 80h608c44.112 0 80-35.888 80-80v-496c0-14.332-4.372-39.35-42.194-90.924zM785.374 302.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-608c-8.672 0-16-7.328-16-16v-736c0-8.672 7.328-16 16-16 0 0 367.956-0.002 368 0v224c0 17.672 14.324 32 32 32h224v496z", + "M602.924 42.196c-51.574-37.822-76.592-42.196-90.924-42.196h-368c-44.112 0-80 35.888-80 80v736c0 38.632 27.528 70.958 64 78.39v-814.39c0-8.672 7.328-16 16-16h486.876c-9.646-7.92-19.028-15.26-27.952-21.804z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "files-empty", + "files", + "documents", + "papers", + "pages" + ], + "defaultCode": 59685, + "grid": 16 + }, + { + "id": 38, + "paths": [ + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z", + "M736 832h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M736 704h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M736 576h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-text", + "file", + "document", + "list", + "paper", + "page" + ], + "defaultCode": 59686, + "grid": 16 + }, + { + "id": 39, + "paths": [ + "M832 896h-640v-128l192-320 263 320 185-128v256z", + "M832 480c0 53.020-42.98 96-96 96-53.022 0-96-42.98-96-96s42.978-96 96-96c53.020 0 96 42.98 96 96z", + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-picture", + "file", + "document", + "file-image" + ], + "defaultCode": 59687, + "grid": 16 + }, + { + "id": 40, + "paths": [ + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z", + "M756.288 391.252c-7.414-6.080-17.164-8.514-26.562-6.632l-320 64c-14.958 2.994-25.726 16.126-25.726 31.38v236.876c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-229.766l256-51.202v133.842c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-319.998c0-9.586-4.298-18.668-11.712-24.748z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-music", + "file", + "document", + "file-song", + "file-audio" + ], + "defaultCode": 59688, + "grid": 16 + }, + { + "id": 41, + "paths": [ + "M384 384l320 224-320 224v-448z", + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-play", + "file", + "document", + "file-media", + "file-video" + ], + "defaultCode": 59689, + "grid": 16 + }, + { + "id": 42, + "paths": [ + "M917.806 229.076c-22.208-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.594-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.882 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0 0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.98 17.78 50.678 41.878 81.374 72.572v0 0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.32 32 32 32h224v624z", + "M256 512h320v320h-320v-320z", + "M576 640l192-128v320l-192-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-video", + "file", + "document", + "file-camera" + ], + "defaultCode": 59690, + "grid": 16 + }, + { + "id": 43, + "paths": [ + "M917.806 229.076c-22.208-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.884 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0 0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.98 17.78 50.678 41.878 81.374 72.572v0 0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.322 32 32 32h224v624z", + "M256 64h128v64h-128v-64z", + "M384 128h128v64h-128v-64z", + "M256 192h128v64h-128v-64z", + "M384 256h128v64h-128v-64z", + "M256 320h128v64h-128v-64z", + "M384 384h128v64h-128v-64z", + "M256 448h128v64h-128v-64z", + "M384 512h128v64h-128v-64z", + "M256 848c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-80v-64h-128v272zM448 768v64h-128v-64h128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-zip", + "file", + "document", + "file-compressed", + "file-type", + "file-format" + ], + "defaultCode": 59691, + "grid": 16 + }, + { + "id": 44, + "paths": [ + "M640 256v-256h-448l-192 192v576h384v256h640v-768h-384zM192 90.51v101.49h-101.49l101.49-101.49zM64 704v-448h192v-192h320v192l-192 192v256h-320zM576 346.51v101.49h-101.49l101.49-101.49zM960 960h-512v-448h192v-192h320v640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "copy", + "duplicate", + "files", + "pages", + "papers", + "documents" + ], + "defaultCode": 59692, + "grid": 16 + }, + { + "id": 45, + "paths": [ + "M704 128h-128v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-128v128h512v-128zM512 128h-128v-63.886c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114v63.886zM832 320v-160c0-17.6-14.4-32-32-32h-64v64h32v128h-192l-192 192v256h-256v-576h32v-64h-64c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h640v-704h-192zM576 410.51v101.49h-101.49l101.49-101.49zM960 960h-512v-384h192v-192h320v576z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paste", + "clipboard-file" + ], + "defaultCode": 59693, + "grid": 16 + }, + { + "id": 46, + "paths": [ + "M1024 320l-512-256-512 256 512 256 512-256zM512 148.97l342.058 171.030-342.058 171.030-342.058-171.030 342.058-171.030zM921.444 460.722l102.556 51.278-512 256-512-256 102.556-51.278 409.444 204.722zM921.444 652.722l102.556 51.278-512 256-512-256 102.556-51.278 409.444 204.722z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stack", + "layers" + ], + "defaultCode": 59694, + "grid": 16 + }, + { + "id": 47, + "paths": [ + "M448 128l128 128h448v704h-1024v-832z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder", + "directory", + "category", + "browse" + ], + "defaultCode": 59695, + "grid": 16 + }, + { + "id": 48, + "paths": [ + "M832 960l192-512h-832l-192 512zM128 384l-128 576v-832h288l128 128h416v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-open", + "directory", + "category", + "browse" + ], + "defaultCode": 59696, + "grid": 16 + }, + { + "id": 49, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM704 704h-128v128h-128v-128h-128v-128h128v-128h128v128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-plus", + "directory", + "folder-add" + ], + "defaultCode": 59697, + "grid": 16 + }, + { + "id": 50, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM704 704h-384v-128h384v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-minus", + "directory", + "folder-remove" + ], + "defaultCode": 59698, + "grid": 16 + }, + { + "id": 51, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM512 864l-224-224h160v-256h128v256h160l-224 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-download", + "directory", + "folder-save" + ], + "defaultCode": 59699, + "grid": 16 + }, + { + "id": 52, + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM512 480l224 224h-160v256h-128v-256h-160l224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "folder-upload", + "directory", + "folder-load" + ], + "defaultCode": 59700, + "grid": 16 + }, + { + "id": 53, + "paths": [ + "M976 0h-384c-26.4 0-63.274 15.274-81.942 33.942l-476.116 476.116c-18.668 18.668-18.668 49.214 0 67.882l412.118 412.118c18.668 18.668 49.214 18.668 67.882 0l476.118-476.118c18.666-18.666 33.94-55.54 33.94-81.94v-384c0-26.4-21.6-48-48-48zM736 384c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "price-tag" + ], + "defaultCode": 59701, + "grid": 16 + }, + { + "id": 54, + "paths": [ + "M1232 0h-384c-26.4 0-63.274 15.274-81.942 33.942l-476.116 476.116c-18.668 18.668-18.668 49.214 0 67.882l412.118 412.118c18.668 18.668 49.214 18.668 67.882 0l476.118-476.118c18.666-18.666 33.94-55.54 33.94-81.94v-384c0-26.4-21.6-48-48-48zM992 384c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z", + "M128 544l544-544h-80c-26.4 0-63.274 15.274-81.942 33.942l-476.116 476.116c-18.668 18.668-18.668 49.214 0 67.882l412.118 412.118c18.668 18.668 49.214 18.668 67.882 0l30.058-30.058-416-416z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "price-tags" + ], + "defaultCode": 59702, + "grid": 16 + }, + { + "id": 55, + "paths": [ + "M0 128h128v640h-128zM192 128h64v640h-64zM320 128h64v640h-64zM512 128h64v640h-64zM768 128h64v640h-64zM960 128h64v640h-64zM640 128h32v640h-32zM448 128h32v640h-32zM864 128h32v640h-32zM0 832h64v64h-64zM192 832h64v64h-64zM320 832h64v64h-64zM640 832h64v64h-64zM960 832h64v64h-64zM768 832h128v64h-128zM448 832h128v64h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "barcode" + ], + "defaultCode": 59703, + "grid": 16 + }, + { + "id": 56, + "paths": [ + "M320 64h-256v256h256v-256zM384 0v0 384h-384v-384h384zM128 128h128v128h-128zM960 64h-256v256h256v-256zM1024 0v0 384h-384v-384h384zM768 128h128v128h-128zM320 704h-256v256h256v-256zM384 640v0 384h-384v-384h384zM128 768h128v128h-128zM448 0h64v64h-64zM512 64h64v64h-64zM448 128h64v64h-64zM512 192h64v64h-64zM448 256h64v64h-64zM512 320h64v64h-64zM448 384h64v64h-64zM448 512h64v64h-64zM512 576h64v64h-64zM448 640h64v64h-64zM512 704h64v64h-64zM448 768h64v64h-64zM512 832h64v64h-64zM448 896h64v64h-64zM512 960h64v64h-64zM960 512h64v64h-64zM64 512h64v64h-64zM128 448h64v64h-64zM0 448h64v64h-64zM256 448h64v64h-64zM320 512h64v64h-64zM384 448h64v64h-64zM576 512h64v64h-64zM640 448h64v64h-64zM704 512h64v64h-64zM768 448h64v64h-64zM832 512h64v64h-64zM896 448h64v64h-64zM960 640h64v64h-64zM576 640h64v64h-64zM640 576h64v64h-64zM704 640h64v64h-64zM832 640h64v64h-64zM896 576h64v64h-64zM960 768h64v64h-64zM576 768h64v64h-64zM640 704h64v64h-64zM768 704h64v64h-64zM832 768h64v64h-64zM896 704h64v64h-64zM960 896h64v64h-64zM640 832h64v64h-64zM704 896h64v64h-64zM768 832h64v64h-64zM832 896h64v64h-64zM640 960h64v64h-64zM768 960h64v64h-64zM896 960h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "qrcode" + ], + "defaultCode": 59704, + "grid": 16 + }, + { + "id": 57, + "paths": [ + "M575.996 320l127.998 127.998-255.994 255.994-127.998-127.998zM1001.526 297.504l-73.516-73.516-32.008 32.008c-16.378 16.38-39.010 26.51-64 26.51-49.988 0-90.514-40.522-90.514-90.51 0-25.002 10.14-47.638 26.534-64.018l31.988-31.986-73.518-73.516c-29.968-29.968-79.008-29.968-108.976 0l-595.040 595.038c-29.966 29.968-29.966 79.010 0 108.976l73.52 73.518 31.962-31.964c16.382-16.406 39.030-26.552 64.044-26.552 49.988 0 90.51 40.524 90.51 90.51 0 25.006-10.14 47.64-26.534 64.022l-31.984 31.986 73.516 73.518c29.966 29.966 79.008 29.966 108.976 0l595.040-595.040c29.964-29.976 29.964-79.016 0-108.984zM448.002 831.996l-256-256 384-384 256 256-384 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ticket", + "theater", + "cinema" + ], + "defaultCode": 59705, + "grid": 16 + }, + { + "id": 58, + "paths": [ + "M384 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M1024 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M1024 512v-384h-768c0-35.346-28.654-64-64-64h-192v64h128l48.074 412.054c-29.294 23.458-48.074 59.5-48.074 99.946 0 70.696 57.308 128 128 128h768v-64h-768c-35.346 0-64-28.654-64-64 0-0.218 0.014-0.436 0.016-0.656l831.984-127.344z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cart", + "purchase", + "ecommerce", + "shopping" + ], + "defaultCode": 59706, + "grid": 16 + }, + { + "id": 59, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480 0 265.098 214.904 480 480 480 265.098 0 480-214.902 480-480 0-265.096-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 512v-128h128v-64h-128v-64h-64v64h-128v256h128v128h-128v64h128v64h64v-64h128.002l-0.002-256h-128zM448 512h-64v-128h64v128zM576.002 704h-64.002v-128h64.002v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-dollar", + "money", + "cash", + "currency-dollar" + ], + "defaultCode": 59707, + "grid": 16 + }, + { + "id": 60, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480s214.904 480 480 480c265.098 0 480-214.902 480-480s-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.076 0 384 171.922 384 384s-171.924 384-384 384z", + "M670.824 644.34c-15.27-8.884-34.862-3.708-43.75 11.57-17.256 29.662-49.088 48.090-83.074 48.090h-128c-41.716 0-77.286-26.754-90.496-64h154.496c17.672 0 32-14.326 32-32s-14.328-32-32-32h-160v-64h160c17.672 0 32-14.328 32-32s-14.328-32-32-32h-154.496c13.21-37.246 48.78-64 90.496-64h128c33.986 0 65.818 18.426 83.074 48.090 8.888 15.276 28.478 20.456 43.752 11.568 15.276-8.888 20.456-28.476 11.568-43.752-28.672-49.288-81.702-79.906-138.394-79.906h-128c-77.268 0-141.914 55.056-156.78 128h-35.22c-17.672 0-32 14.328-32 32s14.328 32 32 32h32v64h-32c-17.672 0-32 14.326-32 32s14.328 32 32 32h35.22c14.866 72.944 79.512 128 156.78 128h128c56.692 0 109.72-30.62 138.394-79.91 8.888-15.276 3.708-34.864-11.57-43.75z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-euro", + "money", + "cash", + "currency-euro" + ], + "defaultCode": 59708, + "grid": 16 + }, + { + "id": 61, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480s214.904 480 480 480c265.098 0 480-214.902 480-480s-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384z", + "M608 704h-224v-128h96c17.672 0 32-14.326 32-32s-14.328-32-32-32h-96v-32c0-52.934 43.066-96 96-96 34.17 0 66.042 18.404 83.18 48.030 8.85 15.298 28.426 20.526 43.722 11.676 15.296-8.848 20.526-28.424 11.676-43.722-28.538-49.336-81.638-79.984-138.578-79.984-88.224 0-160 71.776-160 160v32h-32c-17.672 0-32 14.326-32 32s14.328 32 32 32h32v192h288c17.674 0 32-14.326 32-32s-14.326-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-pound", + "money", + "cash", + "currency-pound" + ], + "defaultCode": 59709, + "grid": 16 + }, + { + "id": 62, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480s214.904 480 480 480c265.098 0 480-214.902 480-480s-214.902-480-480-480zM480 928c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.076 0 384 171.922 384 384s-171.924 384-384 384z", + "M608 576c17.674 0 32-14.326 32-32s-14.326-32-32-32h-68.208l94.832-142.25c9.804-14.704 5.83-34.572-8.876-44.376-14.704-9.802-34.572-5.83-44.376 8.876l-101.372 152.062-101.374-152.062c-9.804-14.706-29.672-18.68-44.376-8.876-14.706 9.804-18.678 29.672-8.876 44.376l94.834 142.25h-68.208c-17.672 0-32 14.326-32 32s14.328 32 32 32h96v64h-96c-17.672 0-32 14.326-32 32s14.328 32 32 32h96v96c0 17.674 14.328 32 32 32s32-14.326 32-32v-96h96c17.674 0 32-14.326 32-32s-14.326-32-32-32h-96v-64h96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "coin-yen", + "money", + "cash", + "currency-yen" + ], + "defaultCode": 59710, + "grid": 16 + }, + { + "id": 63, + "paths": [ + "M928 128h-832c-52.8 0-96 43.2-96 96v576c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-576c0-52.8-43.2-96-96-96zM96 192h832c17.346 0 32 14.654 32 32v96h-896v-96c0-17.346 14.654-32 32-32zM928 832h-832c-17.346 0-32-14.654-32-32v-288h896v288c0 17.346-14.654 32-32 32zM128 640h64v128h-64zM256 640h64v128h-64zM384 640h64v128h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "credit-card", + "money", + "payment", + "ecommerce" + ], + "defaultCode": 59711, + "grid": 16 + }, + { + "id": 64, + "paths": [ + "M384 64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h320c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM384 320h-320v-64h320v64zM896 64h-320c-35.204 0-64 28.8-64 64v832c0 35.2 28.796 64 64 64h320c35.2 0 64-28.8 64-64v-832c0-35.2-28.8-64-64-64zM896 640h-320v-64h320v64zM896 448h-320v-64h320v64zM384 576h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h320c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM384 832h-128v128h-64v-128h-128v-64h128v-128h64v128h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "calculator", + "compute", + "math", + "arithmetic", + "sum" + ], + "defaultCode": 59712, + "grid": 16 + }, + { + "id": 65, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 512c0-106.040 85.96-192 192-192s192 85.96 192 192-85.96 192-192 192-192-85.96-192-192zM925.98 683.476v0l-177.42-73.49c12.518-30.184 19.44-63.276 19.44-97.986s-6.922-67.802-19.44-97.986l177.42-73.49c21.908 52.822 34.020 110.73 34.020 171.476s-12.114 118.654-34.020 171.476v0zM683.478 98.020v0 0l-73.49 177.42c-30.184-12.518-63.276-19.44-97.988-19.44s-67.802 6.922-97.986 19.44l-73.49-177.422c52.822-21.904 110.732-34.018 171.476-34.018 60.746 0 118.654 12.114 171.478 34.020zM98.020 340.524l177.422 73.49c-12.518 30.184-19.442 63.276-19.442 97.986s6.922 67.802 19.44 97.986l-177.42 73.49c-21.906-52.822-34.020-110.73-34.020-171.476s12.114-118.654 34.020-171.476zM340.524 925.98l73.49-177.42c30.184 12.518 63.276 19.44 97.986 19.44s67.802-6.922 97.986-19.44l73.49 177.42c-52.822 21.904-110.73 34.020-171.476 34.020-60.744 0-118.654-12.114-171.476-34.020z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lifebuoy", + "support", + "help" + ], + "defaultCode": 59713, + "grid": 16 + }, + { + "id": 66, + "paths": [ + "M704 640c-64 64-64 128-128 128s-128-64-192-128-128-128-128-192 64-64 128-128-128-256-192-256-192 192-192 192c0 128 131.5 387.5 256 512s384 256 512 256c0 0 192-128 192-192s-192-256-256-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "phone", + "telephone", + "contact", + "support", + "call" + ], + "defaultCode": 59714, + "grid": 16 + }, + { + "id": 67, + "paths": [ + "M1017.378 575.994c8.004 55.482 13.216 131.392-11.664 160.446-41.142 48.044-301.712 48.044-301.712-48.042 0-48.398 42.856-80.134 1.712-128.178-40.472-47.262-113.026-48.030-193.714-48.042-80.686 0.012-153.242 0.78-193.714 48.042-41.142 48.046 1.714 79.78 1.714 128.178 0 96.086-260.57 96.086-301.714 48.044-24.878-29.054-19.668-104.964-11.662-160.446 6.16-37.038 21.724-76.996 71.548-127.994 0-0.002 0.002-0.002 0.002-0.004 74.738-69.742 187.846-126.738 429.826-127.968v-0.030c1.344 0 2.664 0.010 4 0.014 1.338-0.004 2.656-0.014 4-0.014v0.028c241.98 1.23 355.088 58.226 429.826 127.968 0.002 0.002 0.002 0.004 0.002 0.004 49.824 50.996 65.39 90.954 71.55 127.994z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "phone-hang-up", + "telephone", + "contact", + "support", + "call" + ], + "defaultCode": 59715, + "grid": 16 + }, + { + "id": 68, + "paths": [ + "M192 0v1024h768v-1024h-768zM576 256.33c70.51 0 127.67 57.16 127.67 127.67s-57.16 127.67-127.67 127.67-127.67-57.16-127.67-127.67 57.16-127.67 127.67-127.67v0zM768 768h-384v-64c0-70.696 57.306-128 128-128v0h128c70.696 0 128 57.304 128 128v64z", + "M64 64h96v192h-96v-192z", + "M64 320h96v192h-96v-192z", + "M64 576h96v192h-96v-192z", + "M64 832h96v192h-96v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "address-book", + "contact", + "book", + "contacts" + ], + "defaultCode": 59716, + "grid": 16 + }, + { + "id": 69, + "paths": [ + "M928 128h-832c-52.8 0-96 43.2-96 96v640c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-640c0-52.8-43.2-96-96-96zM398.74 550.372l-270.74 210.892v-501.642l270.74 290.75zM176.38 256h671.24l-335.62 252-335.62-252zM409.288 561.698l102.712 110.302 102.71-110.302 210.554 270.302h-626.528l210.552-270.302zM625.26 550.372l270.74-290.75v501.642l-270.74-210.892z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "envelop", + "mail", + "email", + "contact", + "letter" + ], + "defaultCode": 59717, + "grid": 16 + }, + { + "id": 70, + "paths": [ + "M544 0l-96 96 96 96-224 256h-224l176 176-272 360.616v39.384h39.384l360.616-272 176 176v-224l256-224 96 96 96-96-480-480zM448 544l-64-64 224-224 64 64-224 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pushpin", + "pin" + ], + "defaultCode": 59718, + "grid": 16 + }, + { + "id": 71, + "paths": [ + "M512 0c-176.732 0-320 143.268-320 320 0 320 320 704 320 704s320-384 320-704c0-176.732-143.27-320-320-320zM512 512c-106.040 0-192-85.96-192-192s85.96-192 192-192 192 85.96 192 192-85.96 192-192 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "location", + "map-marker", + "pin" + ], + "defaultCode": 59719, + "grid": 16 + }, + { + "id": 72, + "paths": [ + "M512 0c-176.732 0-320 143.268-320 320 0 320 320 704 320 704s320-384 320-704c0-176.732-143.27-320-320-320zM512 516c-108.248 0-196-87.752-196-196s87.752-196 196-196 196 87.752 196 196-87.752 196-196 196zM388 320c0-68.483 55.517-124 124-124s124 55.517 124 124c0 68.483-55.517 124-124 124s-124-55.517-124-124z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "location", + "map-marker", + "pin" + ], + "defaultCode": 59720, + "grid": 16 + }, + { + "id": 73, + "paths": [ + "M544.010 1024.004c-2.296 0-4.622-0.25-6.94-0.764-14.648-3.25-25.070-16.238-25.070-31.24v-480h-480c-15.002 0-27.992-10.422-31.24-25.070-3.25-14.646 4.114-29.584 17.708-35.928l960-448c12.196-5.688 26.644-3.144 36.16 6.372 9.516 9.514 12.060 23.966 6.372 36.16l-448 960c-5.342 11.44-16.772 18.47-28.99 18.47zM176.242 448h367.758c17.674 0 32 14.328 32 32v367.758l349.79-749.546-749.548 349.788z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "compass", + "direction", + "location" + ], + "defaultCode": 59721, + "grid": 16 + }, + { + "id": 74, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM96 512c0-229.75 186.25-416 416-416 109.574 0 209.232 42.386 283.534 111.628l-411.534 176.372-176.372 411.534c-69.242-74.302-111.628-173.96-111.628-283.534zM585.166 585.166l-256.082 109.75 109.75-256.082 146.332 146.332zM512 928c-109.574 0-209.234-42.386-283.532-111.628l411.532-176.372 176.372-411.532c69.242 74.298 111.628 173.958 111.628 283.532 0 229.75-186.25 416-416 416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "compass", + "direction", + "location" + ], + "defaultCode": 59722, + "grid": 16 + }, + { + "id": 75, + "paths": [ + "M0 192l320-128v768l-320 128z", + "M384 32l320 192v736l-320-160z", + "M768 224l256-192v768l-256 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "map", + "guide" + ], + "defaultCode": 59723, + "grid": 16 + }, + { + "id": 76, + "paths": [ + "M672 192l-320-128-352 128v768l352-128 320 128 352-128v-768l-352 128zM384 145.73l256 102.4v630.138l-256-102.398v-630.14zM64 236.828l256-93.090v631.8l-256 93.088v-631.798zM960 787.172l-256 93.092v-631.8l256-93.090v631.798z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "map", + "guide" + ], + "defaultCode": 59724, + "grid": 16 + }, + { + "id": 77, + "paths": [ + "M640 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098s103.098-154.878 103.098-248.902c0-94.022-36.614-182.418-103.098-248.902s-154.878-103.098-248.902-103.098c-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM832 448v128h-256v-320h128v192z" + ], + "width": 1088, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "history", + "time", + "archive", + "past" + ], + "defaultCode": 59725, + "grid": 16 + }, + { + "id": 78, + "paths": [ + "M658.744 749.256l-210.744-210.746v-282.51h128v229.49l173.256 173.254zM512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clock", + "time", + "schedule" + ], + "defaultCode": 59726, + "grid": 16 + }, + { + "id": 79, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM658.744 749.256l-210.744-210.746v-282.51h128v229.49l173.256 173.254-90.512 90.512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clock", + "time", + "schedule" + ], + "defaultCode": 59727, + "grid": 16 + }, + { + "id": 80, + "paths": [ + "M512 128c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448zM512 936c-198.824 0-360-161.178-360-360 0-198.824 161.176-360 360-360 198.822 0 360 161.176 360 360 0 198.822-161.178 360-360 360zM934.784 287.174c16.042-28.052 25.216-60.542 25.216-95.174 0-106.040-85.96-192-192-192-61.818 0-116.802 29.222-151.92 74.596 131.884 27.236 245.206 105.198 318.704 212.578v0zM407.92 74.596c-35.116-45.374-90.102-74.596-151.92-74.596-106.040 0-192 85.96-192 192 0 34.632 9.174 67.122 25.216 95.174 73.5-107.38 186.822-185.342 318.704-212.578z", + "M512 576v-256h-64v320h256v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "alarm", + "time", + "clock" + ], + "defaultCode": 59728, + "grid": 16 + }, + { + "id": 81, + "paths": [ + "M1025.5 800c0-288-256-224-256-448 0-18.56-1.788-34.42-5.048-47.928-16.83-113.018-92.156-203.72-189.772-231.36 0.866-3.948 1.32-8.032 1.32-12.21 0-33.278-28.8-60.502-64-60.502s-64 27.224-64 60.5c0 4.18 0.456 8.264 1.32 12.21-109.47 30.998-190.914 141.298-193.254 273.442-0.040 1.92-0.066 3.864-0.066 5.846 0 224.002-256 160.002-256 448.002 0 76.226 170.59 139.996 398.97 156.080 21.524 40.404 64.056 67.92 113.030 67.92s91.508-27.516 113.030-67.92c228.38-16.084 398.97-79.854 398.97-156.080 0-0.228-0.026-0.456-0.028-0.682l1.528 0.682zM826.246 854.096c-54.23 14.47-118.158 24.876-186.768 30.648-5.704-65.418-60.582-116.744-127.478-116.744s-121.774 51.326-127.478 116.744c-68.608-5.772-132.538-16.178-186.768-30.648-74.63-19.914-110.31-42.19-123.368-54.096 13.058-11.906 48.738-34.182 123.368-54.096 86.772-23.152 198.372-35.904 314.246-35.904s227.474 12.752 314.246 35.904c74.63 19.914 110.31 42.19 123.368 54.096-13.058 11.906-48.738 34.182-123.368 54.096z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bell", + "alarm", + "notification" + ], + "defaultCode": 59729, + "grid": 16 + }, + { + "id": 82, + "paths": [ + "M512.002 193.212v-65.212h128v-64c0-35.346-28.654-64-64.002-64h-191.998c-35.346 0-64 28.654-64 64v64h128v65.212c-214.798 16.338-384 195.802-384 414.788 0 229.75 186.25 416 416 416s416-186.25 416-416c0-218.984-169.202-398.448-384-414.788zM706.276 834.274c-60.442 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c58.040-58.038 134.448-91.018 216.114-93.548l-21.678 314.020c-1.86 26.29 12.464 37.802 31.836 37.802s33.698-11.512 31.836-37.802l-21.676-314.022c81.666 2.532 158.076 35.512 216.116 93.55 60.44 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stopwatch", + "time", + "speed", + "meter", + "chronometer" + ], + "defaultCode": 59730, + "grid": 16 + }, + { + "id": 83, + "paths": [ + "M320 384h128v128h-128zM512 384h128v128h-128zM704 384h128v128h-128zM128 768h128v128h-128zM320 768h128v128h-128zM512 768h128v128h-128zM320 576h128v128h-128zM512 576h128v128h-128zM704 576h128v128h-128zM128 576h128v128h-128zM832 0v64h-128v-64h-448v64h-128v-64h-128v1024h960v-1024h-128zM896 960h-832v-704h832v704z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "calendar", + "date", + "schedule", + "time", + "day" + ], + "defaultCode": 59731, + "grid": 16 + }, + { + "id": 84, + "paths": [ + "M256 64h512v128h-512v-128z", + "M960 256h-896c-35.2 0-64 28.8-64 64v320c0 35.2 28.794 64 64 64h192v256h512v-256h192c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM128 448c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.652 64-64 64zM704 896h-384v-320h384v320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "printer", + "print" + ], + "defaultCode": 59732, + "grid": 16 + }, + { + "id": 85, + "paths": [ + "M1088 128h-1024c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h1024c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM640 256h128v128h-128v-128zM832 448v128h-128v-128h128zM448 256h128v128h-128v-128zM640 448v128h-128v-128h128zM256 256h128v128h-128v-128zM448 448v128h-128v-128h128zM128 256h64v128h-64v-128zM128 448h128v128h-128v-128zM192 768h-64v-128h64v128zM768 768h-512v-128h512v128zM1024 768h-192v-128h192v128zM1024 576h-128v-128h128v128zM1024 384h-192v-128h192v128z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "keyboard", + "typing", + "type" + ], + "defaultCode": 59733, + "grid": 16 + }, + { + "id": 86, + "paths": [ + "M0 64v640h1024v-640h-1024zM960 640h-896v-512h896v512zM672 768h-320l-32 128-64 64h512l-64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "display", + "screen", + "monitor", + "computer", + "desktop", + "pc" + ], + "defaultCode": 59734, + "grid": 16 + }, + { + "id": 87, + "paths": [ + "M896 704v-512c0-35.2-28.8-64-64-64h-640c-35.2 0-64 28.8-64 64v512h-128v192h1024v-192h-128zM640 832h-256v-64h256v64zM832 704h-640v-511.886c0.034-0.040 0.076-0.082 0.114-0.114h639.77c0.040 0.034 0.082 0.076 0.116 0.116v511.884z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "laptop", + "computer", + "pc" + ], + "defaultCode": 59735, + "grid": 16 + }, + { + "id": 88, + "paths": [ + "M736 0h-448c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 48h256v32h-256v-32zM512 960c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64zM768 768h-512v-640h512v640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mobile", + "cell-phone", + "handheld" + ], + "defaultCode": 59736, + "grid": 16 + }, + { + "id": 89, + "paths": [ + "M768 0h-576c-35.2 0-64 28.798-64 64v896c0 35.2 28.798 64 64 64h576c35.2 0 64-28.8 64-64v-896c0-35.202-28.8-64-64-64zM480 977.782c-27.492 0-49.782-22.29-49.782-49.782s22.29-49.782 49.782-49.782 49.782 22.29 49.782 49.782-22.29 49.782-49.782 49.782zM768 832h-576v-704h576v704z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mobile", + "cell-phone", + "handheld", + "tablet", + "phablet" + ], + "defaultCode": 59737, + "grid": 16 + }, + { + "id": 90, + "paths": [ + "M800 0h-640c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h640c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM480 992c-17.672 0-32-14.326-32-32s14.328-32 32-32 32 14.326 32 32-14.328 32-32 32zM768 896h-576v-768h576v768z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tablet", + "mobile" + ], + "defaultCode": 59738, + "grid": 16 + }, + { + "id": 91, + "paths": [ + "M981.188 288.108c-88.808-12.768-183.382-22.016-282.076-27.22l164.888-164.888-64-64-224.558 224.556c-21.006-0.368-42.156-0.556-63.442-0.556v0l-256-256-64 64 194.196 194.196c-120.922 4.242-236.338 14.524-343.386 29.912-27.532 107.726-42.81 226.752-42.81 351.892s15.278 244.166 42.804 351.89c143.642 20.652 302.34 32.11 469.196 32.11s325.55-11.458 469.188-32.11c27.534-107.724 42.812-226.75 42.812-351.89s-15.278-244.166-42.812-351.892zM863.892 874.594c-107.73 13.766-226.75 21.406-351.892 21.406s-244.166-7.64-351.892-21.406c-20.648-71.816-32.108-151.166-32.108-234.594 0-83.43 11.458-162.78 32.108-234.596 107.726-13.766 226.75-21.404 351.892-21.404 125.136 0 244.162 7.638 351.886 21.404 20.656 71.816 32.114 151.166 32.114 234.596 0 83.428-11.458 162.778-32.108 234.594z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tv", + "television", + "show" + ], + "defaultCode": 59739, + "grid": 16 + }, + { + "id": 92, + "paths": [ + "M1016.988 652.010l-256-320c-6.074-7.592-15.266-12.010-24.988-12.010h-448c-9.72 0-18.916 4.418-24.988 12.010l-256 320c-4.538 5.674-7.012 12.724-7.012 19.99v288c0 35.346 28.654 64 64 64h896c35.348 0 64-28.654 64-64v-288c0-7.266-2.472-14.316-7.012-19.99zM960 704h-224l-128 128h-192l-128-128h-224v-20.776l239.38-299.224h417.24l239.38 299.224v20.776z", + "M736 512h-448c-17.672 0-32-14.328-32-32s14.328-32 32-32h448c17.674 0 32 14.328 32 32s-14.326 32-32 32z", + "M800 640h-576c-17.672 0-32-14.326-32-32s14.328-32 32-32h576c17.674 0 32 14.326 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "drawer", + "box", + "inbox", + "archive", + "category" + ], + "defaultCode": 59740, + "grid": 16 + }, + { + "id": 93, + "paths": [ + "M1016.988 652.010l-256-320c-6.074-7.592-15.266-12.010-24.988-12.010h-448c-9.72 0-18.916 4.418-24.988 12.010l-256 320c-4.538 5.674-7.012 12.724-7.012 19.99v288c0 35.346 28.654 64 64 64h896c35.348 0 64-28.654 64-64v-288c0-7.266-2.472-14.316-7.012-19.99zM960 704h-224l-128 128h-192l-128-128h-224v-20.776l239.38-299.224h417.24l239.38 299.224v20.776z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "drawer", + "box", + "inbox", + "archive", + "category" + ], + "defaultCode": 59741, + "grid": 16 + }, + { + "id": 94, + "paths": [ + "M832 64h-640l-192 192v672c0 17.674 14.326 32 32 32h960c17.672 0 32-14.326 32-32v-672l-192-192zM512 832l-320-256h192v-192h256v192h192l-320 256zM154.51 192l64-64h586.978l64 64h-714.978z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "box-add", + "box", + "download", + "storage", + "inbox", + "archive" + ], + "defaultCode": 59742, + "grid": 16 + }, + { + "id": 95, + "paths": [ + "M832 64h-640l-192 192v672c0 17.674 14.326 32 32 32h960c17.672 0 32-14.326 32-32v-672l-192-192zM640 640v192h-256v-192h-192l320-256 320 256h-192zM154.51 192l64-64h586.976l64 64h-714.976z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "box-remove", + "box", + "upload", + "storage", + "outbox", + "archive" + ], + "defaultCode": 59743, + "grid": 16 + }, + { + "id": 96, + "paths": [ + "M512 576l256-256h-192v-256h-128v256h-192zM744.726 471.272l-71.74 71.742 260.080 96.986-421.066 157.018-421.066-157.018 260.080-96.986-71.742-71.742-279.272 104.728v256l512 192 512-192v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download", + "save", + "store", + "arrow" + ], + "defaultCode": 59744, + "grid": 16 + }, + { + "id": 97, + "paths": [ + "M448 576h128v-256h192l-256-256-256 256h192zM640 432v98.712l293.066 109.288-421.066 157.018-421.066-157.018 293.066-109.288v-98.712l-384 144v256l512 192 512-192v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "upload", + "load", + "arrow" + ], + "defaultCode": 59745, + "grid": 16 + }, + { + "id": 98, + "paths": [ + "M896 0h-896v1024h1024v-896l-128-128zM512 128h128v256h-128v-256zM896 896h-768v-768h64v320h576v-320h74.978l53.022 53.018v714.982z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "floppy-disk", + "save" + ], + "defaultCode": 59746, + "grid": 16 + }, + { + "id": 99, + "paths": [ + "M192 896h640c106.038 0 192-85.96 192-192h-1024c0 106.040 85.962 192 192 192zM832 768h64v64h-64v-64zM960 128h-896l-64 512h1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "drive", + "save", + "hdd", + "hard-disk" + ], + "defaultCode": 59747, + "grid": 16 + }, + { + "id": 100, + "paths": [ + "M512 0c-282.77 0-512 71.634-512 160v128c0 88.366 229.23 160 512 160s512-71.634 512-160v-128c0-88.366-229.23-160-512-160z", + "M512 544c-282.77 0-512-71.634-512-160v192c0 88.366 229.23 160 512 160s512-71.634 512-160v-192c0 88.366-229.23 160-512 160z", + "M512 832c-282.77 0-512-71.634-512-160v192c0 88.366 229.23 160 512 160s512-71.634 512-160v-192c0 88.366-229.23 160-512 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "database", + "db", + "server", + "host", + "storage", + "save", + "datecenter" + ], + "defaultCode": 59748, + "grid": 16 + }, + { + "id": 101, + "paths": [ + "M512 64c-141.384 0-269.376 57.32-362.032 149.978l-149.968-149.978v384h384l-143.532-143.522c69.496-69.492 165.492-112.478 271.532-112.478 212.068 0 384 171.924 384 384 0 114.696-50.292 217.636-130.018 288l84.666 96c106.302-93.816 173.352-231.076 173.352-384 0-282.77-229.23-512-512-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "undo", + "ccw", + "arrow" + ], + "defaultCode": 59749, + "grid": 16 + }, + { + "id": 102, + "paths": [ + "M0 576c0 152.924 67.048 290.184 173.35 384l84.666-96c-79.726-70.364-130.016-173.304-130.016-288 0-212.076 171.93-384 384-384 106.042 0 202.038 42.986 271.53 112.478l-143.53 143.522h384v-384l-149.97 149.978c-92.654-92.658-220.644-149.978-362.030-149.978-282.77 0-512 229.23-512 512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "redo", + "cw", + "arrow" + ], + "defaultCode": 59750, + "grid": 16 + }, + { + "id": 103, + "paths": [ + "M761.862 1024c113.726-206.032 132.888-520.306-313.862-509.824v253.824l-384-384 384-384v248.372c534.962-13.942 594.57 472.214 313.862 775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "undo", + "left", + "arrow-left" + ], + "defaultCode": 59751, + "grid": 16 + }, + { + "id": 104, + "paths": [ + "M576 248.372v-248.372l384 384-384 384v-253.824c-446.75-10.482-427.588 303.792-313.86 509.824-280.712-303.414-221.1-789.57 313.86-775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "redo", + "right", + "arrow-right" + ], + "defaultCode": 59752, + "grid": 16 + }, + { + "id": 105, + "paths": [ + "M262.14 0c-113.728 206.032-132.89 520.304 313.86 509.824v-253.824l384 384-384 384v-248.372c-534.96 13.942-594.572-472.214-313.86-775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "forward", + "right", + "arrow-right" + ], + "defaultCode": 59753, + "grid": 16 + }, + { + "id": 106, + "paths": [ + "M448 775.628v248.372l-384-384 384-384v253.824c446.75 10.48 427.588-303.792 313.862-509.824 280.71 303.414 221.1 789.57-313.862 775.628z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "reply", + "left", + "arrow-left" + ], + "defaultCode": 59754, + "grid": 16 + }, + { + "id": 107, + "paths": [ + "M512 64c282.77 0 512 186.25 512 416 0 229.752-229.23 416-512 416-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubble", + "comment", + "chat", + "talk" + ], + "defaultCode": 59755, + "grid": 16 + }, + { + "id": 108, + "paths": [ + "M1088 901.166c0 45.5 26.028 84.908 64 104.184v15.938c-10.626 1.454-21.472 2.224-32.5 2.224-68.008 0-129.348-28.528-172.722-74.264-26.222 6.982-54.002 10.752-82.778 10.752-159.058 0-288-114.616-288-256s128.942-256 288-256c159.058 0 288 114.616 288 256 0 55.348-19.764 106.592-53.356 148.466-6.824 14.824-10.644 31.312-10.644 48.7zM512 0c278.458 0 504.992 180.614 511.836 405.52-49.182-21.92-103.586-33.52-159.836-33.52-95.56 0-185.816 33.446-254.138 94.178-70.846 62.972-109.862 147.434-109.862 237.822 0 44.672 9.544 87.888 27.736 127.788-5.228 0.126-10.468 0.212-15.736 0.212-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59756, + "grid": 16 + }, + { + "id": 109, + "paths": [ + "M480 0v0c265.096 0 480 173.914 480 388.448s-214.904 388.448-480 388.448c-25.458 0-50.446-1.62-74.834-4.71-103.106 102.694-222.172 121.108-341.166 123.814v-25.134c64.252-31.354 116-88.466 116-153.734 0-9.106-0.712-18.048-2.030-26.794-108.558-71.214-177.97-179.988-177.97-301.89 0-214.534 214.904-388.448 480-388.448zM996 870.686c0 55.942 36.314 104.898 92 131.772v21.542c-103.126-2.318-197.786-18.102-287.142-106.126-21.14 2.65-42.794 4.040-64.858 4.040-95.47 0-183.408-25.758-253.614-69.040 144.674-0.506 281.26-46.854 384.834-130.672 52.208-42.252 93.394-91.826 122.414-147.348 30.766-58.866 46.366-121.582 46.366-186.406 0-10.448-0.45-20.836-1.258-31.168 72.57 59.934 117.258 141.622 117.258 231.676 0 104.488-60.158 197.722-154.24 258.764-1.142 7.496-1.76 15.16-1.76 22.966z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59757, + "grid": 16 + }, + { + "id": 110, + "paths": [ + "M512 192c-54.932 0-107.988 8.662-157.694 25.742-46.712 16.054-88.306 38.744-123.628 67.444-66.214 53.798-102.678 122.984-102.678 194.814 0 40.298 11.188 79.378 33.252 116.152 22.752 37.92 56.982 72.586 98.988 100.252 30.356 19.992 50.78 51.948 56.176 87.894 1.8 11.984 2.928 24.088 3.37 36.124 7.47-6.194 14.75-12.846 21.88-19.976 24.154-24.152 56.78-37.49 90.502-37.49 5.368 0 10.762 0.336 16.156 1.024 20.974 2.666 42.398 4.020 63.676 4.020 54.934 0 107.988-8.66 157.694-25.742 46.712-16.054 88.306-38.744 123.628-67.444 66.214-53.796 102.678-122.984 102.678-194.814s-36.464-141.016-102.678-194.814c-35.322-28.698-76.916-51.39-123.628-67.444-49.706-17.080-102.76-25.742-157.694-25.742zM512 64v0c282.77 0 512 186.25 512 416 0 229.752-229.23 416-512 416-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubble", + "comment", + "chat", + "talk" + ], + "defaultCode": 59758, + "grid": 16 + }, + { + "id": 111, + "paths": [ + "M1088 901.166c0 45.5 26.028 84.908 64 104.184v15.938c-10.626 1.454-21.472 2.224-32.5 2.224-68.008 0-129.348-28.528-172.722-74.264-26.222 6.982-54.002 10.752-82.778 10.752-159.058 0-288-114.616-288-256s128.942-256 288-256c159.058 0 288 114.616 288 256 0 55.348-19.764 106.592-53.356 148.466-6.824 14.824-10.644 31.312-10.644 48.7zM230.678 221.186c-66.214 53.798-102.678 122.984-102.678 194.814 0 40.298 11.188 79.378 33.252 116.15 22.752 37.92 56.982 72.586 98.988 100.252 30.356 19.992 50.78 51.948 56.176 87.894 1.8 11.984 2.928 24.088 3.37 36.124 7.47-6.194 14.75-12.846 21.88-19.976 24.154-24.152 56.78-37.49 90.502-37.49 5.368 0 10.762 0.336 16.156 1.024 20.948 2.662 42.344 4.016 63.594 4.020v128c-27.128-0.002-53.754-1.738-79.742-5.042-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416 278.458 0 504.992 180.614 511.836 405.52-41.096-18.316-85.84-29.422-132.262-32.578-11.53-56.068-45.402-108.816-98.252-151.756-35.322-28.698-76.916-51.39-123.628-67.444-49.706-17.080-102.76-25.742-157.694-25.742-54.932 0-107.988 8.662-157.694 25.742-46.712 16.054-88.306 38.744-123.628 67.444z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59759, + "grid": 16 + }, + { + "id": 112, + "paths": [ + "M480 128c-50.666 0-99.582 7.95-145.386 23.628-42.924 14.694-81.114 35.436-113.502 61.646-60.044 48.59-93.112 110.802-93.112 175.174 0 35.99 10.066 70.948 29.92 103.898 20.686 34.34 51.898 65.794 90.26 90.958 30.44 19.968 50.936 51.952 56.362 87.95 0.902 5.99 1.63 12.006 2.18 18.032 2.722-2.52 5.424-5.114 8.114-7.794 24.138-24.040 56.688-37.312 90.322-37.312 5.348 0 10.718 0.336 16.094 1.018 19.36 2.452 39.124 3.696 58.748 3.696 50.666 0 99.58-7.948 145.384-23.628 42.926-14.692 81.116-35.434 113.504-61.644 60.046-48.59 93.112-110.802 93.112-175.174s-33.066-126.582-93.112-175.174c-32.388-26.212-70.578-46.952-113.504-61.646-45.804-15.678-94.718-23.628-145.384-23.628zM480 0v0c265.096 0 480 173.914 480 388.448s-214.904 388.448-480 388.448c-25.458 0-50.446-1.62-74.834-4.71-103.106 102.694-222.172 121.108-341.166 123.814v-25.134c64.252-31.354 116-88.466 116-153.734 0-9.106-0.712-18.048-2.030-26.794-108.558-71.214-177.97-179.988-177.97-301.89 0-214.534 214.904-388.448 480-388.448zM996 870.686c0 55.942 36.314 104.898 92 131.772v21.542c-103.126-2.318-197.786-18.102-287.142-106.126-21.14 2.65-42.794 4.040-64.858 4.040-95.47 0-183.408-25.758-253.614-69.040 144.674-0.506 281.26-46.854 384.834-130.672 52.208-42.252 93.394-91.826 122.414-147.348 30.766-58.866 46.366-121.582 46.366-186.406 0-10.448-0.45-20.836-1.258-31.168 72.57 59.934 117.258 141.622 117.258 231.676 0 104.488-60.158 197.722-154.24 258.764-1.142 7.496-1.76 15.16-1.76 22.966z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bubbles", + "comments", + "chat", + "talk" + ], + "defaultCode": 59760, + "grid": 16 + }, + { + "id": 113, + "paths": [ + "M576 706.612v-52.78c70.498-39.728 128-138.772 128-237.832 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h896c0-128.968-166.898-235.64-384-253.388z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59761, + "grid": 16 + }, + { + "id": 114, + "paths": [ + "M768 770.612v-52.78c70.498-39.728 128-138.772 128-237.832 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h896c0-128.968-166.898-235.64-384-253.388z", + "M327.196 795.328c55.31-36.15 124.080-63.636 199.788-80.414-15.054-17.784-28.708-37.622-40.492-59.020-30.414-55.234-46.492-116.058-46.492-175.894 0-86.042 0-167.31 30.6-233.762 29.706-64.504 83.128-104.496 159.222-119.488-16.914-76.48-61.94-126.75-181.822-126.75-192 0-192 128.942-192 288 0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h279.006c14.518-12.91 30.596-25.172 48.19-36.672z" + ], + "width": 1152, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "users", + "group", + "team", + "members", + "community", + "collaborate" + ], + "defaultCode": 59762, + "grid": 16 + }, + { + "id": 115, + "paths": [ + "M384 736c0-151.234 95.874-280.486 230.032-330.2 16.28-36.538 25.968-77.164 25.968-117.8 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h397.306c-8.664-30.53-13.306-62.732-13.306-96z", + "M736 448c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.056 0 288-128.942 288-288s-128.942-288-288-288zM896 768h-128v128h-64v-128h-128v-64h128v-128h64v128h128v64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-plus", + "user", + "user-add", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59763, + "grid": 16 + }, + { + "id": 116, + "paths": [ + "M384 736c0-151.234 95.874-280.486 230.032-330.2 16.28-36.538 25.968-77.164 25.968-117.8 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h397.306c-8.664-30.53-13.306-62.732-13.306-96z", + "M736 448c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.056 0 288-128.942 288-288s-128.942-288-288-288zM896 768h-320v-64h320v64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-minus", + "user", + "user-remove", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59764, + "grid": 16 + }, + { + "id": 117, + "paths": [ + "M960 608l-288 288-96-96-64 64 160 160 352-352z", + "M448 768h320v-115.128c-67.22-39.2-156.308-66.11-256-74.26v-52.78c70.498-39.728 128-138.772 128-237.832 0-159.058 0-288-192-288s-192 128.942-192 288c0 99.060 57.502 198.104 128 237.832v52.78c-217.102 17.748-384 124.42-384 253.388h448v-64z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-check", + "user", + "user-tick", + "profile", + "avatar", + "person", + "member" + ], + "defaultCode": 59765, + "grid": 16 + }, + { + "id": 118, + "paths": [ + "M320 192c0-106.039 85.961-192 192-192s192 85.961 192 192c0 106.039-85.961 192-192 192s-192-85.961-192-192zM768.078 448h-35.424l-199.104 404.244 74.45-372.244-96-96-96 96 74.45 372.244-199.102-404.244h-35.424c-127.924 0-127.924 85.986-127.924 192v320h768v-320c0-106.014 0-192-127.922-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "user-tie", + "user", + "user-employee", + "profile", + "avatar", + "person", + "member", + "job", + "official" + ], + "defaultCode": 59766, + "grid": 16 + }, + { + "id": 119, + "paths": [ + "M225 448c123.712 0 224 100.29 224 224 0 123.712-100.288 224-224 224s-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.634 11.636-22.252 24.016-31.83 37.020 11.438-1.8 23.16-2.746 35.104-2.746zM801 448c123.71 0 224 100.29 224 224 0 123.712-100.29 224-224 224s-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.636 11.636-22.254 24.016-31.832 37.020 11.44-1.8 23.16-2.746 35.106-2.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "quotes-left", + "ldquo" + ], + "defaultCode": 59767, + "grid": 16 + }, + { + "id": 120, + "paths": [ + "M800 640c-123.712 0-224-100.29-224-224 0-123.712 100.288-224 224-224s224 100.288 224 224l1 32c0 247.424-200.576 448-448 448v-128c85.474 0 165.834-33.286 226.274-93.726 11.634-11.636 22.252-24.016 31.83-37.020-11.438 1.8-23.16 2.746-35.104 2.746zM224 640c-123.71 0-224-100.29-224-224 0-123.712 100.29-224 224-224s224 100.288 224 224l1 32c0 247.424-200.576 448-448 448v-128c85.474 0 165.834-33.286 226.274-93.726 11.636-11.636 22.254-24.016 31.832-37.020-11.44 1.8-23.16 2.746-35.106 2.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "quotes-right", + "rdquo" + ], + "defaultCode": 59768, + "grid": 16 + }, + { + "id": 121, + "paths": [ + "M728.992 512c137.754-87.334 231.008-255.208 231.008-448 0-21.676-1.192-43.034-3.478-64h-889.042c-2.29 20.968-3.48 42.326-3.48 64 0 192.792 93.254 360.666 231.006 448-137.752 87.334-231.006 255.208-231.006 448 0 21.676 1.19 43.034 3.478 64h889.042c2.288-20.966 3.478-42.324 3.478-64 0.002-192.792-93.252-360.666-231.006-448zM160 960c0-186.912 80.162-345.414 224-397.708v-100.586c-143.838-52.29-224-210.792-224-397.706v0h704c0 186.914-80.162 345.416-224 397.706v100.586c143.838 52.294 224 210.796 224 397.708h-704zM619.626 669.594c-71.654-40.644-75.608-93.368-75.626-125.366v-64.228c0-31.994 3.804-84.914 75.744-125.664 38.504-22.364 71.808-56.348 97.048-98.336h-409.582c25.266 42.032 58.612 76.042 97.166 98.406 71.654 40.644 75.606 93.366 75.626 125.366v64.228c0 31.992-3.804 84.914-75.744 125.664-72.622 42.18-126.738 125.684-143.090 226.336h501.67c-16.364-100.708-70.53-184.248-143.212-226.406z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hour-glass", + "loading", + "busy", + "wait" + ], + "defaultCode": 59769, + "grid": 16 + }, + { + "id": 122, + "paths": [ + "M384 128c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM655.53 240.47c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM832 512c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM719.53 783.53c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM448.002 896c0 0 0 0 0 0 0-35.346 28.654-64 64-64s64 28.654 64 64c0 0 0 0 0 0 0 35.346-28.654 64-64 64s-64-28.654-64-64zM176.472 783.53c0 0 0 0 0 0 0-35.346 28.654-64 64-64s64 28.654 64 64c0 0 0 0 0 0 0 35.346-28.654 64-64 64s-64-28.654-64-64zM144.472 240.47c0 0 0 0 0 0 0-53.019 42.981-96 96-96s96 42.981 96 96c0 0 0 0 0 0 0 53.019-42.981 96-96 96s-96-42.981-96-96zM56 512c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.765-32.235 72-72 72s-72-32.235-72-72z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59770, + "grid": 16 + }, + { + "id": 123, + "paths": [ + "M1024 512c-1.278-66.862-15.784-133.516-42.576-194.462-26.704-61-65.462-116.258-113.042-161.92-47.552-45.696-103.944-81.82-164.984-105.652-61.004-23.924-126.596-35.352-191.398-33.966-64.81 1.282-129.332 15.374-188.334 41.356-59.048 25.896-112.542 63.47-156.734 109.576-44.224 46.082-79.16 100.708-102.186 159.798-23.114 59.062-34.128 122.52-32.746 185.27 1.286 62.76 14.964 125.148 40.134 182.206 25.088 57.1 61.476 108.828 106.11 151.548 44.61 42.754 97.472 76.504 154.614 98.72 57.118 22.304 118.446 32.902 179.142 31.526 60.708-1.29 120.962-14.554 176.076-38.914 55.15-24.282 105.116-59.48 146.366-102.644 41.282-43.14 73.844-94.236 95.254-149.43 13.034-33.458 21.88-68.4 26.542-103.798 1.246 0.072 2.498 0.12 3.762 0.12 35.346 0 64-28.652 64-64 0-1.796-0.094-3.572-0.238-5.332h0.238zM922.306 681.948c-23.472 53.202-57.484 101.4-99.178 141.18-41.67 39.81-91 71.186-144.244 91.79-53.228 20.678-110.29 30.452-166.884 29.082-56.604-1.298-112.596-13.736-163.82-36.474-51.25-22.666-97.684-55.49-135.994-95.712-38.338-40.198-68.528-87.764-88.322-139.058-19.87-51.284-29.228-106.214-27.864-160.756 1.302-54.552 13.328-108.412 35.254-157.69 21.858-49.3 53.498-93.97 92.246-130.81 38.73-36.868 84.53-65.87 133.874-84.856 49.338-19.060 102.136-28.006 154.626-26.644 52.5 1.306 104.228 12.918 151.562 34.034 47.352 21.050 90.256 51.502 125.624 88.782 35.396 37.258 63.21 81.294 81.39 128.688 18.248 47.392 26.782 98.058 25.424 148.496h0.238c-0.144 1.76-0.238 3.536-0.238 5.332 0 33.012 24.992 60.174 57.086 63.624-6.224 34.822-16.53 68.818-30.78 100.992z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59771, + "grid": 16 + }, + { + "id": 124, + "paths": [ + "M512 303.096c-32.964 0-59.686-26.724-59.686-59.686v-179.060c0-32.964 26.722-59.686 59.686-59.686 32.962 0 59.688 26.722 59.688 59.686v179.060c0 32.964-26.726 59.686-59.688 59.686z", + "M512 996.956c-20.602 0-37.304-16.702-37.304-37.304v-179.060c0-20.602 16.702-37.304 37.304-37.304 20.604 0 37.304 16.704 37.304 37.304v179.060c0 20.602-16.7 37.304-37.304 37.304z", + "M377.756 335.36c-19.34 0-38.146-10.034-48.512-27.988l-89.53-155.070c-15.452-26.764-6.282-60.986 20.482-76.438 26.762-15.45 60.986-6.284 76.438 20.482l89.53 155.072c15.452 26.764 6.282 60.986-20.482 76.438-8.81 5.084-18.432 7.504-27.926 7.504z", + "M735.856 933.256c-11.602 0-22.886-6.022-29.108-16.792l-89.53-155.070c-9.27-16.056-3.77-36.592 12.29-45.864 16.056-9.264 36.59-3.77 45.864 12.292l89.532 155.068c9.27 16.058 3.768 36.592-12.292 45.864-5.286 3.048-11.060 4.502-16.756 4.502z", + "M279.344 429.94c-8.86 0-17.838-2.256-26.064-7.006l-155.072-89.53c-24.978-14.422-33.538-46.362-19.116-71.342 14.42-24.978 46.364-33.538 71.342-19.116l155.070 89.53c24.98 14.422 33.538 46.362 19.116 71.34-9.668 16.756-27.226 26.124-45.276 26.124z", + "M899.648 765.674c-5.064 0-10.196-1.29-14.894-4.004l-155.068-89.53c-14.274-8.24-19.164-26.494-10.924-40.768 8.242-14.276 26.496-19.166 40.766-10.924l155.070 89.532c14.274 8.24 19.164 26.492 10.924 40.766-5.53 9.574-15.562 14.928-25.874 14.928z", + "M243.41 560.496h-179.060c-26.784 0-48.496-21.712-48.496-48.496s21.712-48.496 48.496-48.496h179.060c26.784 0 48.496 21.712 48.496 48.496s-21.712 48.496-48.496 48.496z", + "M959.65 541.844c-0.002 0 0 0 0 0h-179.060c-16.482-0.002-29.844-13.364-29.844-29.844s13.364-29.844 29.844-29.844c0.002 0 0 0 0 0h179.060c16.482 0 29.844 13.362 29.844 29.844 0 16.48-13.364 29.844-29.844 29.844z", + "M124.366 780.598c-15.472 0-30.518-8.028-38.81-22.39-12.362-21.41-5.026-48.79 16.384-61.148l155.072-89.532c21.41-12.368 48.79-5.028 61.15 16.384 12.362 21.412 5.026 48.79-16.384 61.15l-155.072 89.53c-7.050 4.070-14.748 6.006-22.34 6.006z", + "M744.632 407.552c-10.314 0-20.346-5.352-25.874-14.926-8.24-14.274-3.35-32.526 10.924-40.768l155.070-89.528c14.272-8.236 32.526-3.352 40.768 10.922 8.24 14.274 3.35 32.526-10.924 40.768l-155.070 89.528c-4.7 2.714-9.83 4.004-14.894 4.004z", + "M288.136 940.716c-6.962 0-14.016-1.774-20.48-5.504-19.626-11.332-26.35-36.428-15.020-56.054l89.53-155.070c11.33-19.628 36.426-26.352 56.054-15.022 19.626 11.332 26.35 36.43 15.020 56.054l-89.53 155.072c-7.598 13.166-21.392 20.524-35.574 20.524z", + "M646.266 309.242c-5.062 0-10.196-1.29-14.894-4.002-14.274-8.242-19.164-26.494-10.924-40.766l89.534-155.070c8.24-14.274 26.492-19.166 40.766-10.922 14.274 8.242 19.164 26.494 10.924 40.766l-89.532 155.070c-5.53 9.57-15.56 14.924-25.874 14.924z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59772, + "grid": 16 + }, + { + "id": 125, + "paths": [ + "M192 512c0-12.18 0.704-24.196 2.030-36.022l-184.98-60.104c-5.916 31.14-9.050 63.264-9.050 96.126 0 147.23 62.166 279.922 161.654 373.324l114.284-157.296c-52.124-56.926-83.938-132.758-83.938-216.028zM832 512c0 83.268-31.812 159.102-83.938 216.028l114.284 157.296c99.488-93.402 161.654-226.094 161.654-373.324 0-32.862-3.132-64.986-9.048-96.126l-184.98 60.104c1.324 11.828 2.028 23.842 2.028 36.022zM576 198.408c91.934 18.662 169.544 76.742 214.45 155.826l184.978-60.102c-73.196-155.42-222.24-268.060-399.428-290.156v194.432zM233.55 354.232c44.906-79.084 122.516-137.164 214.45-155.826v-194.43c-177.188 22.096-326.23 134.736-399.426 290.154l184.976 60.102zM644.556 803.328c-40.39 18.408-85.272 28.672-132.556 28.672s-92.166-10.264-132.554-28.67l-114.292 157.31c73.206 40.366 157.336 63.36 246.846 63.36s173.64-22.994 246.848-63.36l-114.292-157.312z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59773, + "grid": 16 + }, + { + "id": 126, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 256c141.384 0 256 114.616 256 256s-114.616 256-256 256-256-114.616-256-256 114.616-256 256-256zM817.47 817.47c-81.594 81.594-190.080 126.53-305.47 126.53-115.392 0-223.876-44.936-305.47-126.53s-126.53-190.078-126.53-305.47c0-115.39 44.936-223.876 126.53-305.47l67.882 67.882c0 0 0 0 0 0-131.006 131.006-131.006 344.17 0 475.176 63.462 63.462 147.838 98.412 237.588 98.412 89.748 0 174.124-34.95 237.588-98.412 131.006-131.006 131.006-344.168 0-475.176l67.882-67.882c81.594 81.594 126.53 190.080 126.53 305.47 0 115.392-44.936 223.876-126.53 305.47z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59774, + "grid": 16 + }, + { + "id": 127, + "paths": [ + "M384 128c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM790.994 512c0 0 0 0 0 0 0-57.993 47.013-105.006 105.006-105.006s105.006 47.013 105.006 105.006c0 0 0 0 0 0 0 57.993-47.013 105.006-105.006 105.006s-105.006-47.013-105.006-105.006zM688.424 783.53c0-52.526 42.58-95.106 95.106-95.106s95.106 42.58 95.106 95.106c0 52.526-42.58 95.106-95.106 95.106s-95.106-42.58-95.106-95.106zM425.862 896c0-47.573 38.565-86.138 86.138-86.138s86.138 38.565 86.138 86.138c0 47.573-38.565 86.138-86.138 86.138s-86.138-38.565-86.138-86.138zM162.454 783.53c0-43.088 34.93-78.018 78.018-78.018s78.018 34.93 78.018 78.018c0 43.088-34.93 78.018-78.018 78.018s-78.018-34.93-78.018-78.018zM57.338 512c0-39.026 31.636-70.662 70.662-70.662s70.662 31.636 70.662 70.662c0 39.026-31.636 70.662-70.662 70.662s-70.662-31.636-70.662-70.662zM176.472 240.472c0 0 0 0 0 0 0-35.346 28.654-64 64-64s64 28.654 64 64c0 0 0 0 0 0 0 35.346-28.654 64-64 64s-64-28.654-64-64zM899.464 240.472c0 64.024-51.906 115.934-115.936 115.934-64.024 0-115.936-51.91-115.936-115.934 0-64.032 51.912-115.934 115.936-115.934 64.030 0 115.936 51.902 115.936 115.934z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59775, + "grid": 16 + }, + { + "id": 128, + "paths": [ + "M416 928c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM0 512c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM832 512c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM121.844 217.844c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM710.156 806.156c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM121.844 806.156c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM710.156 217.844c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59776, + "grid": 16 + }, + { + "id": 129, + "paths": [ + "M512 1024c-136.76 0-265.334-53.258-362.040-149.96-96.702-96.706-149.96-225.28-149.96-362.040 0-96.838 27.182-191.134 78.606-272.692 50-79.296 120.664-143.372 204.356-185.3l43 85.832c-68.038 34.084-125.492 86.186-166.15 150.67-41.746 66.208-63.812 142.798-63.812 221.49 0 229.382 186.618 416 416 416s416-186.618 416-416c0-78.692-22.066-155.282-63.81-221.49-40.66-64.484-98.114-116.584-166.15-150.67l43-85.832c83.692 41.928 154.358 106.004 204.356 185.3 51.422 81.558 78.604 175.854 78.604 272.692 0 136.76-53.258 265.334-149.96 362.040-96.706 96.702-225.28 149.96-362.040 149.96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59777, + "grid": 16 + }, + { + "id": 130, + "paths": [ + "M512 0c-278.748 0-505.458 222.762-511.848 499.974 5.92-241.864 189.832-435.974 415.848-435.974 229.75 0 416 200.576 416 448 0 53.020 42.98 96 96 96s96-42.98 96-96c0-282.77-229.23-512-512-512zM512 1024c278.748 0 505.458-222.762 511.848-499.974-5.92 241.864-189.832 435.974-415.848 435.974-229.75 0-416-200.576-416-448 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 282.77 229.23 512 512 512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59778, + "grid": 16 + }, + { + "id": 131, + "paths": [ + "M0.042 513.618l-0.022 0.004c0 0 0.012 0.090 0.028 0.222 0.11 3.878 0.55 7.676 1.322 11.352 0.204 1.746 0.428 3.66 0.674 5.774 0.222 1.886 0.46 3.914 0.718 6.078 0.374 2.566 0.77 5.292 1.19 8.176 0.856 5.746 1.8 12.124 2.908 18.958 1.348 6.446 2.804 13.414 4.364 20.864 0.71 3.718 1.776 7.504 2.786 11.406 1.024 3.89 2.078 7.894 3.16 12.004 0.566 2.042 1.040 4.132 1.708 6.208 0.656 2.074 1.32 4.176 1.988 6.3 1.348 4.234 2.726 8.566 4.136 12.988 0.352 1.106 0.708 2.21 1.064 3.324 0.408 1.102 0.814 2.208 1.226 3.316 0.826 2.218 1.658 4.458 2.502 6.714 1.696 4.496 3.422 9.078 5.18 13.742 1.968 4.566 3.97 9.214 6.004 13.934 1.018 2.348 2.044 4.714 3.078 7.098 1.048 2.376 2.27 4.704 3.408 7.074 2.322 4.714 4.678 9.496 7.062 14.332 2.47 4.786 5.208 9.512 7.846 14.328 1.336 2.398 2.68 4.808 4.028 7.23 1.368 2.41 2.902 4.75 4.356 7.14 2.95 4.738 5.93 9.524 8.934 14.348 12.64 18.894 26.676 37.566 42.21 55.278 15.712 17.578 32.726 34.25 50.692 49.602 18.18 15.136 37.264 28.902 56.726 41.114 19.604 12.036 39.644 22.312 59.376 31.144 5.004 2.040 9.964 4.062 14.878 6.066 2.462 0.972 4.868 2.032 7.336 2.918 2.47 0.868 4.93 1.734 7.376 2.594 4.898 1.684 9.678 3.468 14.484 4.992 4.832 1.43 9.604 2.844 14.312 4.242 2.356 0.672 4.66 1.426 7.004 2.012 2.346 0.574 4.676 1.14 6.986 1.704 4.606 1.118 9.142 2.214 13.604 3.296 4.5 0.868 8.926 1.722 13.27 2.558 2.166 0.41 4.31 0.82 6.434 1.222 1.062 0.2 2.118 0.398 3.166 0.598 1.060 0.148 2.118 0.292 3.166 0.442 4.192 0.582 8.292 1.152 12.3 1.71 1.998 0.274 3.972 0.546 5.922 0.816 1.946 0.286 3.904 0.378 5.814 0.57 3.822 0.336 7.544 0.664 11.164 0.98 3.616 0.304 7.104 0.688 10.526 0.738 0.23 0.008 0.452 0.016 0.682 0.026 0.614 34.812 29.008 62.846 63.968 62.846 0.542 0 1.080-0.028 1.62-0.042v0.022c0 0 0.090-0.012 0.224-0.028 3.878-0.11 7.674-0.55 11.35-1.322 1.748-0.204 3.662-0.426 5.776-0.672 1.884-0.222 3.912-0.462 6.076-0.718 2.566-0.376 5.292-0.772 8.176-1.192 5.746-0.856 12.124-1.8 18.958-2.908 6.446-1.348 13.414-2.804 20.864-4.362 3.718-0.712 7.504-1.778 11.406-2.786 3.892-1.026 7.894-2.080 12.004-3.162 2.044-0.566 4.132-1.040 6.208-1.708 2.074-0.656 4.174-1.318 6.3-1.988 4.232-1.348 8.564-2.726 12.988-4.134 1.104-0.354 2.21-0.708 3.324-1.066 1.1-0.406 2.206-0.814 3.316-1.226 2.216-0.824 4.456-1.658 6.714-2.5 4.496-1.698 9.078-3.424 13.74-5.182 4.568-1.968 9.216-3.97 13.936-6.004 2.348-1.018 4.714-2.044 7.098-3.078 2.376-1.048 4.702-2.27 7.074-3.408 4.714-2.322 9.494-4.678 14.33-7.062 4.786-2.47 9.512-5.208 14.328-7.846 2.398-1.336 4.808-2.678 7.23-4.028 2.41-1.366 4.75-2.9 7.14-4.354 4.738-2.952 9.524-5.93 14.35-8.936 18.89-12.64 37.564-26.674 55.278-42.21 17.574-15.712 34.248-32.726 49.602-50.69 15.136-18.182 28.902-37.264 41.112-56.728 12.036-19.602 22.314-39.644 31.142-59.376 2.042-5.002 4.062-9.964 6.068-14.878 0.974-2.462 2.032-4.868 2.918-7.334 0.87-2.472 1.732-4.932 2.592-7.376 1.686-4.898 3.468-9.678 4.994-14.484 1.432-4.832 2.846-9.604 4.24-14.31 0.674-2.358 1.43-4.66 2.016-7.004 0.57-2.348 1.138-4.676 1.702-6.988 1.118-4.606 2.216-9.14 3.296-13.602 0.868-4.502 1.72-8.928 2.558-13.272 0.41-2.164 0.818-4.308 1.222-6.434 0.2-1.060 0.398-2.116 0.596-3.164 0.148-1.062 0.296-2.118 0.444-3.168 0.582-4.19 1.152-8.292 1.708-12.3 0.278-1.996 0.55-3.97 0.82-5.922 0.284-1.946 0.376-3.902 0.568-5.812 0.336-3.822 0.664-7.546 0.98-11.164 0.304-3.616 0.686-7.106 0.738-10.528 0.020-0.534 0.040-1.044 0.058-1.574 35.224-0.146 63.732-28.738 63.732-63.992 0-0.542-0.028-1.080-0.042-1.62h0.022c0 0-0.012-0.090-0.028-0.224-0.11-3.878-0.55-7.674-1.322-11.35-0.204-1.748-0.428-3.662-0.674-5.776-0.222-1.886-0.46-3.914-0.718-6.076-0.374-2.566-0.77-5.294-1.19-8.176-0.856-5.746-1.8-12.124-2.908-18.958-1.348-6.444-2.804-13.414-4.364-20.862-0.71-3.72-1.776-7.506-2.786-11.408-1.024-3.892-2.078-7.894-3.16-12.002-0.566-2.044-1.040-4.134-1.708-6.208-0.656-2.076-1.32-4.174-1.988-6.3-1.348-4.234-2.726-8.566-4.136-12.99-0.352-1.102-0.708-2.21-1.064-3.324-0.408-1.1-0.814-2.206-1.226-3.316-0.826-2.216-1.658-4.454-2.502-6.714-1.696-4.498-3.422-9.080-5.18-13.74-1.968-4.57-3.97-9.216-6.004-13.936-1.020-2.348-2.044-4.714-3.078-7.098-1.048-2.376-2.27-4.702-3.408-7.076-2.322-4.714-4.678-9.494-7.062-14.33-2.47-4.786-5.208-9.512-7.846-14.328-1.336-2.398-2.68-4.808-4.028-7.23-1.368-2.41-2.902-4.75-4.356-7.14-2.95-4.74-5.93-9.524-8.934-14.35-12.64-18.892-26.676-37.564-42.21-55.278-15.712-17.576-32.726-34.25-50.692-49.602-18.18-15.136-37.264-28.902-56.726-41.112-19.604-12.036-39.644-22.314-59.376-31.142-5.004-2.040-9.964-4.062-14.878-6.068-2.462-0.974-4.868-2.032-7.336-2.918-2.47-0.87-4.93-1.734-7.376-2.592-4.898-1.684-9.678-3.468-14.484-4.994-4.832-1.432-9.604-2.846-14.312-4.242-2.356-0.672-4.66-1.428-7.004-2.014-2.346-0.572-4.676-1.138-6.986-1.702-4.606-1.118-9.142-2.216-13.604-3.298-4.5-0.868-8.926-1.72-13.27-2.558-2.166-0.412-4.31-0.82-6.434-1.222-1.062-0.2-2.118-0.398-3.166-0.596-1.060-0.148-2.118-0.296-3.166-0.442-4.192-0.584-8.292-1.154-12.3-1.71-1.998-0.276-3.972-0.55-5.922-0.82-1.946-0.284-3.904-0.376-5.814-0.57-3.822-0.336-7.544-0.664-11.164-0.98-3.616-0.304-7.104-0.686-10.526-0.738-0.852-0.032-1.674-0.062-2.512-0.092-0.65-34.78-29.028-62.778-63.966-62.778-0.542 0-1.080 0.028-1.62 0.042l-0.002-0.022c0 0-0.090 0.012-0.222 0.028-3.878 0.11-7.676 0.55-11.352 1.322-1.748 0.204-3.662 0.426-5.776 0.672-1.884 0.222-3.912 0.462-6.076 0.718-2.566 0.376-5.292 0.772-8.176 1.192-5.746 0.856-12.124 1.8-18.958 2.908-6.446 1.348-13.414 2.804-20.864 4.362-3.718 0.712-7.504 1.778-11.406 2.786-3.892 1.026-7.894 2.080-12.004 3.162-2.044 0.566-4.132 1.040-6.208 1.708-2.074 0.656-4.174 1.318-6.3 1.988-4.232 1.348-8.564 2.726-12.988 4.134-1.104 0.354-2.21 0.708-3.324 1.066-1.1 0.406-2.206 0.814-3.316 1.226-2.216 0.824-4.456 1.658-6.714 2.5-4.496 1.698-9.078 3.424-13.74 5.182-4.568 1.968-9.216 3.97-13.936 6.004-2.348 1.018-4.714 2.044-7.098 3.078-2.376 1.048-4.702 2.27-7.074 3.408-4.714 2.322-9.494 4.678-14.33 7.062-4.786 2.47-9.512 5.208-14.328 7.846-2.398 1.336-4.808 2.678-7.23 4.028-2.41 1.366-4.75 2.9-7.14 4.354-4.738 2.952-9.524 5.93-14.35 8.936-18.89 12.64-37.564 26.674-55.278 42.21-17.574 15.712-34.248 32.726-49.602 50.69-15.136 18.182-28.902 37.264-41.112 56.728-12.036 19.602-22.314 39.644-31.142 59.376-2.042 5.002-4.062 9.964-6.068 14.878-0.974 2.462-2.032 4.868-2.918 7.334-0.87 2.472-1.732 4.932-2.592 7.376-1.686 4.898-3.468 9.678-4.994 14.484-1.432 4.832-2.846 9.604-4.24 14.31-0.674 2.358-1.43 4.66-2.016 7.004-0.57 2.348-1.138 4.676-1.702 6.988-1.118 4.606-2.216 9.14-3.296 13.602-0.868 4.502-1.72 8.928-2.558 13.272-0.41 2.164-0.818 4.308-1.222 6.434-0.2 1.060-0.398 2.116-0.596 3.164-0.148 1.062-0.296 2.118-0.444 3.168-0.582 4.19-1.152 8.292-1.708 12.3-0.278 1.996-0.55 3.97-0.82 5.922-0.284 1.946-0.376 3.902-0.568 5.812-0.336 3.822-0.664 7.546-0.98 11.164-0.304 3.616-0.686 7.106-0.738 10.528-0.020 0.548-0.040 1.076-0.058 1.62-34.376 1.112-61.902 29.304-61.902 63.946 0 0.542 0.028 1.078 0.042 1.618zM73.518 448.706c0.042-0.196 0.086-0.384 0.128-0.58 0.644-3.248 1.632-6.542 2.556-9.942 0.934-3.388 1.894-6.876 2.88-10.454 0.516-1.78 0.934-3.602 1.546-5.406 0.596-1.802 1.202-3.628 1.81-5.476 1.218-3.682 2.464-7.45 3.736-11.294 0.316-0.958 0.634-1.924 0.956-2.892 0.37-0.954 0.74-1.914 1.114-2.876 0.746-1.924 1.5-3.868 2.26-5.83 1.52-3.904 3.070-7.882 4.646-11.93 1.768-3.96 3.566-7.99 5.392-12.080 0.908-2.038 1.824-4.090 2.746-6.156 0.932-2.060 2.036-4.072 3.052-6.126 2.070-4.084 4.17-8.222 6.294-12.412 2.202-4.142 4.654-8.224 6.998-12.392 1.184-2.074 2.374-4.16 3.57-6.256 1.21-2.086 2.586-4.102 3.876-6.166 2.616-4.098 5.256-8.232 7.918-12.402 11.234-16.298 23.632-32.398 37.33-47.638 13.874-15.104 28.842-29.404 44.598-42.548 15.974-12.928 32.686-24.65 49.676-35.022 17.13-10.194 34.6-18.838 51.734-26.258 4.35-1.7 8.662-3.382 12.934-5.050 2.136-0.812 4.216-1.71 6.36-2.444 2.146-0.714 4.28-1.428 6.404-2.136 4.25-1.386 8.382-2.888 12.548-4.142 4.184-1.174 8.314-2.332 12.392-3.474 2.038-0.55 4.026-1.19 6.054-1.662 2.030-0.458 4.044-0.914 6.044-1.368 3.978-0.91 7.896-1.806 11.748-2.688 3.888-0.686 7.71-1.36 11.462-2.022 1.868-0.33 3.716-0.658 5.546-0.98 0.914-0.162 1.824-0.324 2.728-0.484 0.916-0.112 1.828-0.222 2.734-0.332 3.612-0.448 7.148-0.882 10.604-1.31 1.72-0.216 3.422-0.432 5.102-0.644 1.674-0.226 3.364-0.266 5.010-0.408 3.292-0.238 6.498-0.472 9.616-0.7 3.11-0.218 6.11-0.524 9.058-0.508 5.848-0.132 11.32-0.256 16.38-0.372 4.664 0.168 8.948 0.324 12.818 0.462 1.914 0.054 3.726 0.108 5.432 0.156 2.122 0.134 4.108 0.26 5.958 0.378 2.13 0.138 4.060 0.266 5.82 0.38 3.256 0.51 6.592 0.782 9.99 0.782 0.466 0 0.93-0.026 1.396-0.036 0.132 0.008 0.224 0.014 0.224 0.014v-0.020c31.14-0.778 56.75-23.784 61.556-53.754 0.542 0.12 1.064 0.236 1.612 0.356 3.246 0.644 6.542 1.632 9.942 2.556 3.386 0.934 6.876 1.894 10.454 2.88 1.778 0.516 3.602 0.934 5.404 1.546 1.802 0.596 3.63 1.202 5.478 1.812 3.68 1.218 7.448 2.464 11.292 3.736 0.96 0.316 1.924 0.634 2.892 0.956 0.956 0.37 1.914 0.74 2.876 1.112 1.926 0.746 3.868 1.5 5.83 2.26 3.904 1.52 7.884 3.070 11.932 4.646 3.96 1.768 7.988 3.566 12.080 5.392 2.038 0.908 4.088 1.824 6.156 2.746 2.060 0.932 4.072 2.036 6.126 3.054 4.082 2.070 8.222 4.17 12.41 6.294 4.144 2.202 8.226 4.654 12.394 6.998 2.074 1.184 4.16 2.374 6.256 3.572 2.086 1.21 4.102 2.586 6.166 3.876 4.098 2.616 8.23 5.256 12.402 7.918 16.296 11.234 32.398 23.632 47.636 37.33 15.104 13.874 29.406 28.842 42.55 44.598 12.928 15.974 24.648 32.686 35.020 49.676 10.196 17.13 18.84 34.6 26.26 51.736 1.698 4.348 3.382 8.662 5.050 12.932 0.812 2.136 1.71 4.216 2.444 6.36 0.714 2.146 1.428 4.28 2.136 6.404 1.386 4.25 2.888 8.384 4.142 12.548 1.174 4.184 2.33 8.316 3.474 12.392 0.55 2.038 1.19 4.026 1.66 6.054 0.46 2.030 0.916 4.046 1.368 6.046 0.91 3.978 1.808 7.896 2.688 11.748 0.688 3.888 1.362 7.71 2.024 11.462 0.33 1.868 0.656 3.716 0.98 5.548 0.162 0.914 0.324 1.824 0.484 2.728 0.11 0.916 0.222 1.828 0.332 2.734 0.446 3.612 0.882 7.148 1.31 10.604 0.216 1.72 0.432 3.42 0.642 5.1 0.226 1.674 0.268 3.364 0.41 5.010 0.238 3.292 0.472 6.498 0.7 9.616 0.218 3.11 0.524 6.11 0.508 9.058 0.132 5.848 0.256 11.32 0.372 16.38-0.168 4.664-0.324 8.948-0.462 12.818-0.054 1.914-0.108 3.726-0.156 5.432-0.134 2.122-0.26 4.108-0.378 5.958-0.138 2.13-0.266 4.060-0.38 5.82-0.498 3.256-0.768 6.592-0.768 9.99 0 0.468 0.026 0.93 0.036 1.396-0.008 0.132-0.016 0.224-0.016 0.224h0.022c0.768 30.766 23.236 56.128 52.682 61.37-0.066 0.296-0.13 0.584-0.198 0.884-0.644 3.248-1.632 6.542-2.556 9.942-0.934 3.388-1.894 6.876-2.88 10.454-0.516 1.78-0.934 3.602-1.546 5.406-0.596 1.802-1.202 3.628-1.81 5.476-1.218 3.682-2.464 7.45-3.736 11.294-0.316 0.958-0.634 1.924-0.956 2.892-0.37 0.954-0.74 1.914-1.114 2.876-0.746 1.924-1.5 3.868-2.26 5.83-1.52 3.904-3.070 7.882-4.646 11.93-1.768 3.96-3.566 7.99-5.392 12.080-0.908 2.038-1.824 4.090-2.746 6.156-0.932 2.060-2.036 4.072-3.052 6.126-2.070 4.084-4.17 8.222-6.294 12.412-2.202 4.142-4.654 8.224-6.998 12.392-1.184 2.074-2.374 4.16-3.57 6.256-1.21 2.086-2.586 4.102-3.876 6.166-2.616 4.098-5.256 8.232-7.918 12.402-11.234 16.298-23.632 32.398-37.33 47.638-13.874 15.104-28.842 29.404-44.598 42.548-15.974 12.928-32.686 24.65-49.676 35.022-17.13 10.194-34.6 18.838-51.734 26.258-4.35 1.7-8.662 3.382-12.934 5.050-2.136 0.812-4.216 1.71-6.36 2.444-2.146 0.714-4.28 1.428-6.404 2.136-4.25 1.386-8.382 2.888-12.548 4.142-4.184 1.174-8.314 2.332-12.392 3.474-2.038 0.55-4.026 1.19-6.054 1.662-2.030 0.458-4.044 0.914-6.044 1.368-3.978 0.91-7.896 1.806-11.748 2.688-3.888 0.686-7.71 1.36-11.462 2.022-1.868 0.33-3.716 0.658-5.546 0.98-0.914 0.162-1.824 0.324-2.728 0.484-0.916 0.112-1.828 0.222-2.734 0.332-3.612 0.448-7.148 0.882-10.604 1.31-1.72 0.216-3.422 0.432-5.102 0.644-1.674 0.226-3.364 0.266-5.010 0.408-3.292 0.238-6.498 0.472-9.616 0.7-3.11 0.218-6.11 0.524-9.058 0.508-5.848 0.132-11.32 0.256-16.38 0.372-4.664-0.168-8.948-0.324-12.818-0.462-1.914-0.054-3.726-0.108-5.432-0.156-2.122-0.134-4.108-0.26-5.958-0.378-2.13-0.138-4.060-0.266-5.82-0.38-3.256-0.51-6.592-0.782-9.99-0.782-0.466 0-0.93 0.026-1.396 0.036-0.132-0.008-0.224-0.014-0.224-0.014v0.020c-31.004 0.774-56.524 23.586-61.488 53.364-3.2-0.64-6.446-1.61-9.792-2.522-3.386-0.934-6.876-1.894-10.454-2.878-1.778-0.516-3.602-0.938-5.404-1.546-1.802-0.598-3.63-1.204-5.478-1.812-3.68-1.218-7.448-2.464-11.292-3.738-0.96-0.316-1.924-0.632-2.892-0.954-0.956-0.372-1.914-0.742-2.876-1.114-1.926-0.746-3.868-1.5-5.83-2.258-3.904-1.524-7.884-3.070-11.932-4.648-3.96-1.77-7.988-3.566-12.080-5.39-2.038-0.91-4.088-1.824-6.156-2.746-2.060-0.934-4.072-2.036-6.126-3.054-4.082-2.070-8.222-4.172-12.41-6.296-4.144-2.2-8.226-4.652-12.394-6.996-2.074-1.184-4.16-2.376-6.256-3.57-2.086-1.21-4.102-2.586-6.166-3.878-4.098-2.614-8.23-5.254-12.402-7.918-16.296-11.23-32.398-23.632-47.636-37.328-15.104-13.876-29.406-28.84-42.55-44.598-12.928-15.972-24.648-32.684-35.020-49.676-10.196-17.128-18.84-34.602-26.26-51.734-1.698-4.352-3.382-8.664-5.050-12.934-0.812-2.136-1.71-4.218-2.444-6.36-0.714-2.148-1.428-4.282-2.136-6.406-1.386-4.25-2.888-8.382-4.142-12.546-1.174-4.184-2.33-8.316-3.474-12.394-0.55-2.036-1.19-4.024-1.66-6.054-0.46-2.028-0.916-4.042-1.368-6.042-0.91-3.98-1.808-7.898-2.688-11.75-0.688-3.886-1.362-7.71-2.024-11.46-0.33-1.868-0.656-3.718-0.98-5.546-0.162-0.914-0.324-1.824-0.484-2.73-0.11-0.914-0.222-1.828-0.332-2.734-0.446-3.61-0.882-7.148-1.31-10.602-0.216-1.722-0.432-3.422-0.642-5.102-0.226-1.676-0.268-3.364-0.41-5.012-0.238-3.29-0.472-6.496-0.7-9.614-0.218-3.11-0.524-6.11-0.508-9.058-0.132-5.848-0.256-11.32-0.372-16.382 0.168-4.664 0.324-8.946 0.462-12.816 0.054-1.914 0.108-3.726 0.156-5.434 0.134-2.122 0.26-4.106 0.378-5.958 0.138-2.128 0.266-4.058 0.38-5.82 0.496-3.26 0.766-6.596 0.766-9.994 0-0.466-0.026-0.93-0.036-1.396 0.008-0.132 0.016-0.224 0.016-0.224h-0.022c-0.78-31.38-24.134-57.154-54.44-61.674z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "busy", + "wait" + ], + "defaultCode": 59779, + "grid": 16 + }, + { + "id": 132, + "paths": [ + "M1024 384h-384l143.53-143.53c-72.53-72.526-168.96-112.47-271.53-112.47s-199 39.944-271.53 112.47c-72.526 72.53-112.47 168.96-112.47 271.53s39.944 199 112.47 271.53c72.53 72.526 168.96 112.47 271.53 112.47s199-39.944 271.528-112.472c6.056-6.054 11.86-12.292 17.456-18.668l96.32 84.282c-93.846 107.166-231.664 174.858-385.304 174.858-282.77 0-512-229.23-512-512s229.23-512 512-512c141.386 0 269.368 57.326 362.016 149.984l149.984-149.984v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spinner", + "loading", + "loading-wheel", + "refresh", + "repeat", + "busy", + "wait", + "arrow" + ], + "defaultCode": 59780, + "grid": 16 + }, + { + "id": 133, + "paths": [ + "M64 0h384v64h-384zM576 0h384v64h-384zM952 320h-56v-256h-256v256h-256v-256h-256v256h-56c-39.6 0-72 32.4-72 72v560c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-376h128v376c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-560c0-39.6-32.4-72-72-72zM348 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM924 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "binoculars", + "lookup", + "search", + "find" + ], + "defaultCode": 59781, + "grid": 16 + }, + { + "id": 134, + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "search", + "magnifier", + "magnifying-glass", + "inspect", + "find" + ], + "defaultCode": 59782, + "grid": 16 + }, + { + "id": 135, + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM448 192h-128v128h-128v128h128v128h128v-128h128v-128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "zoom-in", + "magnifier", + "magnifier-plus", + "enlarge" + ], + "defaultCode": 59783, + "grid": 16 + }, + { + "id": 136, + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM192 320h384v128h-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "zoom-out", + "magnifier", + "magnifier-minus", + "reduce" + ], + "defaultCode": 59784, + "grid": 16 + }, + { + "id": 137, + "paths": [ + "M1024 0h-416l160 160-192 192 96 96 192-192 160 160z", + "M1024 1024v-416l-160 160-192-192-96 96 192 192-160 160z", + "M0 1024h416l-160-160 192-192-96-96-192 192-160-160z", + "M0 0v416l160-160 192 192 96-96-192-192 160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enlarge", + "expand", + "maximize", + "fullscreen" + ], + "defaultCode": 59785, + "grid": 16 + }, + { + "id": 138, + "paths": [ + "M576 448h416l-160-160 192-192-96-96-192 192-160-160z", + "M576 576v416l160-160 192 192 96-96-192-192 160-160z", + "M448 575.996h-416l160 160-192 192 96 96 192-192 160 160z", + "M448 448v-416l-160 160-192-192-96 96 192 192-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shrink", + "collapse", + "minimize", + "contract" + ], + "defaultCode": 59786, + "grid": 16 + }, + { + "id": 139, + "paths": [ + "M1024 0v416l-160-160-192 192-96-96 192-192-160-160zM448 672l-192 192 160 160h-416v-416l160 160 192-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enlarge", + "expand", + "maximize", + "fullscreen" + ], + "defaultCode": 59787, + "grid": 16 + }, + { + "id": 140, + "paths": [ + "M448 576v416l-160-160-192 192-96-96 192-192-160-160zM1024 96l-192 192 160 160h-416v-416l160 160 192-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shrink", + "collapse", + "minimize", + "contract" + ], + "defaultCode": 59788, + "grid": 16 + }, + { + "id": 141, + "paths": [ + "M704 0c-176.73 0-320 143.268-320 320 0 20.026 1.858 39.616 5.376 58.624l-389.376 389.376v192c0 35.346 28.654 64 64 64h64v-64h128v-128h128v-128h128l83.042-83.042c34.010 12.316 70.696 19.042 108.958 19.042 176.73 0 320-143.268 320-320s-143.27-320-320-320zM799.874 320.126c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "key", + "password", + "login", + "signin" + ], + "defaultCode": 59789, + "grid": 16 + }, + { + "id": 142, + "paths": [ + "M1002.132 314.242l-101.106-101.104c-24.792-24.794-65.37-65.368-90.162-90.164l-101.106-101.104c-24.792-24.794-68.954-29.166-98.13-9.716l-276.438 184.292c-29.176 19.452-40.218 61.028-24.536 92.39l70.486 140.974c2.154 4.306 4.646 8.896 7.39 13.66l-356.53 356.53-32 224h192v-64h128v-128h128v-128h128v-71.186c6.396 3.812 12.534 7.216 18.192 10.044l140.97 70.488c31.366 15.682 72.94 4.638 92.39-24.538l184.294-276.44c19.454-29.172 15.078-73.33-9.714-98.126zM150.628 854.626l-45.254-45.254 311.572-311.57 45.254 45.254-311.572 311.57zM917.020 423.764l-45.256 45.256c-12.446 12.444-32.808 12.444-45.254 0l-271.53-271.53c-12.446-12.444-12.446-32.81 0-45.254l45.256-45.256c12.446-12.444 32.808-12.444 45.254 0l271.53 271.53c12.446 12.444 12.446 32.81 0 45.254z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "key", + "password", + "login", + "signin" + ], + "defaultCode": 59790, + "grid": 16 + }, + { + "id": 143, + "paths": [ + "M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lock", + "secure", + "private", + "encrypted" + ], + "defaultCode": 59791, + "grid": 16 + }, + { + "id": 144, + "paths": [ + "M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "unlocked", + "lock-open" + ], + "defaultCode": 59792, + "grid": 16 + }, + { + "id": 145, + "paths": [ + "M1002.934 817.876l-460.552-394.76c21.448-40.298 33.618-86.282 33.618-135.116 0-159.058-128.942-288-288-288-29.094 0-57.172 4.332-83.646 12.354l166.39 166.39c24.89 24.89 24.89 65.62 0 90.51l-101.49 101.49c-24.89 24.89-65.62 24.89-90.51 0l-166.39-166.39c-8.022 26.474-12.354 54.552-12.354 83.646 0 159.058 128.942 288 288 288 48.834 0 94.818-12.17 135.116-33.62l394.76 460.552c22.908 26.724 62.016 28.226 86.904 3.338l101.492-101.492c24.888-24.888 23.386-63.994-3.338-86.902z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wrench", + "tool", + "fix", + "settings", + "control", + "options", + "preferences" + ], + "defaultCode": 59793, + "grid": 16 + }, + { + "id": 146, + "paths": [ + "M448 128v-16c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576zM256 256v-128h128v128h-128zM832 432c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-576v128h576v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h192v-128h-192v-16zM640 576v-128h128v128h-128zM448 752c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576v-16zM256 896v-128h128v128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "equalizer", + "sliders", + "settings", + "preferences", + "dashboard", + "control" + ], + "defaultCode": 59794, + "grid": 16 + }, + { + "id": 147, + "paths": [ + "M896 448h16c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h-128v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v576h128v-576zM768 256h128v128h-128v-128zM592 832c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-576h-128v576h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v192h128v-192h16zM448 640h128v128h-128v-128zM272 448c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h-128v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v576h128v-576h16zM128 256h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "equalizer", + "sliders", + "settings", + "preferences", + "dashboard", + "control" + ], + "defaultCode": 59795, + "grid": 16 + }, + { + "id": 148, + "paths": [ + "M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99h-201.258c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cog", + "gear", + "preferences", + "settings", + "generate", + "control", + "options" + ], + "defaultCode": 59796, + "grid": 16 + }, + { + "id": 149, + "paths": [ + "M363.722 722.052l41.298-57.816-45.254-45.256-57.818 41.296c-10.722-5.994-22.204-10.774-34.266-14.192l-11.682-70.084h-64l-11.68 70.086c-12.062 3.418-23.544 8.198-34.266 14.192l-57.818-41.298-45.256 45.256 41.298 57.816c-5.994 10.72-10.774 22.206-14.192 34.266l-70.086 11.682v64l70.086 11.682c3.418 12.060 8.198 23.544 14.192 34.266l-41.298 57.816 45.254 45.256 57.818-41.296c10.722 5.994 22.204 10.774 34.266 14.192l11.682 70.084h64l11.68-70.086c12.062-3.418 23.544-8.198 34.266-14.192l57.818 41.296 45.254-45.256-41.298-57.816c5.994-10.72 10.774-22.206 14.192-34.266l70.088-11.68v-64l-70.086-11.682c-3.418-12.060-8.198-23.544-14.192-34.266zM224 864c-35.348 0-64-28.654-64-64s28.652-64 64-64 64 28.654 64 64-28.652 64-64 64zM1024 384v-64l-67.382-12.25c-1.242-8.046-2.832-15.978-4.724-23.79l57.558-37.1-24.492-59.128-66.944 14.468c-4.214-6.91-8.726-13.62-13.492-20.13l39.006-56.342-45.256-45.254-56.342 39.006c-6.512-4.766-13.22-9.276-20.13-13.494l14.468-66.944-59.128-24.494-37.1 57.558c-7.812-1.892-15.744-3.482-23.79-4.724l-12.252-67.382h-64l-12.252 67.382c-8.046 1.242-15.976 2.832-23.79 4.724l-37.098-57.558-59.128 24.492 14.468 66.944c-6.91 4.216-13.62 8.728-20.13 13.494l-56.342-39.006-45.254 45.254 39.006 56.342c-4.766 6.51-9.278 13.22-13.494 20.13l-66.944-14.468-24.492 59.128 57.558 37.1c-1.892 7.812-3.482 15.742-4.724 23.79l-67.384 12.252v64l67.382 12.25c1.242 8.046 2.832 15.978 4.724 23.79l-57.558 37.1 24.492 59.128 66.944-14.468c4.216 6.91 8.728 13.618 13.494 20.13l-39.006 56.342 45.254 45.256 56.342-39.006c6.51 4.766 13.22 9.276 20.13 13.492l-14.468 66.944 59.128 24.492 37.102-57.558c7.81 1.892 15.742 3.482 23.788 4.724l12.252 67.384h64l12.252-67.382c8.044-1.242 15.976-2.832 23.79-4.724l37.1 57.558 59.128-24.492-14.468-66.944c6.91-4.216 13.62-8.726 20.13-13.492l56.342 39.006 45.256-45.256-39.006-56.342c4.766-6.512 9.276-13.22 13.492-20.13l66.944 14.468 24.492-59.13-57.558-37.1c1.892-7.812 3.482-15.742 4.724-23.79l67.382-12.25zM672 491.2c-76.878 0-139.2-62.322-139.2-139.2s62.32-139.2 139.2-139.2 139.2 62.322 139.2 139.2c0 76.878-62.32 139.2-139.2 139.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cogs", + "gears", + "preferences", + "settings", + "generate", + "control", + "options" + ], + "defaultCode": 59797, + "grid": 16 + }, + { + "id": 150, + "paths": [ + "M1009.996 828.976l-301.544-301.544c-18.668-18.668-49.214-18.668-67.882 0l-22.626 22.626-184-184 302.056-302.058h-320l-142.058 142.058-14.060-14.058h-67.882v67.882l14.058 14.058-206.058 206.060 160 160 206.058-206.058 184 184-22.626 22.626c-18.668 18.668-18.668 49.214 0 67.882l301.544 301.544c18.668 18.668 49.214 18.668 67.882 0l113.136-113.136c18.67-18.666 18.67-49.214 0.002-67.882z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hammer", + "tool", + "fix", + "make", + "generate", + "work", + "build" + ], + "defaultCode": 59798, + "grid": 16 + }, + { + "id": 151, + "paths": [ + "M256 192l-128-128h-64v64l128 128zM320 0h64v128h-64zM576 320h128v64h-128zM640 128v-64h-64l-128 128 64 64zM0 320h128v64h-128zM320 576h64v128h-64zM64 576v64h64l128-128-64-64zM1010 882l-636.118-636.118c-18.668-18.668-49.214-18.668-67.882 0l-60.118 60.118c-18.668 18.668-18.668 49.214 0 67.882l636.118 636.118c18.668 18.668 49.214 18.668 67.882 0l60.118-60.118c18.668-18.668 18.668-49.214 0-67.882zM480 544l-192-192 64-64 192 192-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "magic-wand", + "wizard" + ], + "defaultCode": 59799, + "grid": 16 + }, + { + "id": 152, + "paths": [ + "M896 256h-192v-128c0-35.2-28.8-64-64-64h-256c-35.2 0-64 28.8-64 64v128h-192c-70.4 0-128 57.6-128 128v512c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-512c0-70.4-57.6-128-128-128zM384 128h256v128h-256v-128zM768 704h-192v192h-128v-192h-192v-128h192v-192h128v192h192v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "aid-kit", + "health", + "medicine", + "medical" + ], + "defaultCode": 59800, + "grid": 16 + }, + { + "id": 153, + "paths": [ + "M1024 576v-64h-193.29c-5.862-72.686-31.786-139.026-71.67-192.25h161.944l70.060-280.24-62.090-15.522-57.94 231.76h-174.68c-0.892-0.694-1.796-1.374-2.698-2.056 6.71-19.502 10.362-40.422 10.362-62.194 0.002-105.76-85.958-191.498-191.998-191.498s-192 85.738-192 191.5c0 21.772 3.65 42.692 10.362 62.194-0.9 0.684-1.804 1.362-2.698 2.056h-174.68l-57.94-231.76-62.090 15.522 70.060 280.24h161.944c-39.884 53.222-65.806 119.562-71.668 192.248h-193.29v64h193.37c3.802 45.664 15.508 88.812 33.638 127.75h-123.992l-70.060 280.238 62.090 15.524 57.94-231.762h112.354c58.692 78.032 147.396 127.75 246.66 127.75s187.966-49.718 246.662-127.75h112.354l57.94 231.762 62.090-15.524-70.060-280.238h-123.992c18.13-38.938 29.836-82.086 33.636-127.75h193.37z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bug", + "virus", + "error" + ], + "defaultCode": 59801, + "grid": 16 + }, + { + "id": 154, + "paths": [ + "M448 576v-448c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448c0-72.034-17.028-140.084-47.236-200.382l-400.764 200.382zM912.764 247.618c-73.552-146.816-225.374-247.618-400.764-247.618v448l400.764-200.382z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pie-chart", + "stats", + "statistics", + "graph" + ], + "defaultCode": 59802, + "grid": 16 + }, + { + "id": 155, + "paths": [ + "M128 896h896v128h-1024v-1024h128zM288 832c-53.020 0-96-42.98-96-96s42.98-96 96-96c2.828 0 5.622 0.148 8.388 0.386l103.192-171.986c-9.84-15.070-15.58-33.062-15.58-52.402 0-53.020 42.98-96 96-96s96 42.98 96 96c0 19.342-5.74 37.332-15.58 52.402l103.192 171.986c2.766-0.238 5.56-0.386 8.388-0.386 2.136 0 4.248 0.094 6.35 0.23l170.356-298.122c-10.536-15.408-16.706-34.036-16.706-54.11 0-53.020 42.98-96 96-96s96 42.98 96 96c0 53.020-42.98 96-96 96-2.14 0-4.248-0.094-6.35-0.232l-170.356 298.124c10.536 15.406 16.706 34.036 16.706 54.11 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-19.34 5.74-37.332 15.578-52.402l-103.19-171.984c-2.766 0.238-5.56 0.386-8.388 0.386s-5.622-0.146-8.388-0.386l-103.192 171.986c9.84 15.068 15.58 33.060 15.58 52.4 0 53.020-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stats-dots", + "stats", + "plot", + "statistics", + "chart" + ], + "defaultCode": 59803, + "grid": 16 + }, + { + "id": 156, + "paths": [ + "M0 832h1024v128h-1024zM128 576h128v192h-128zM320 320h128v448h-128zM512 512h128v256h-128zM704 128h128v640h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stats-bars", + "stats", + "statistics", + "chart" + ], + "defaultCode": 59804, + "grid": 16 + }, + { + "id": 157, + "paths": [ + "M288 384h-192c-17.6 0-32 14.4-32 32v576c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-576c0-17.6-14.4-32-32-32zM288 960h-192v-256h192v256zM608 256h-192c-17.6 0-32 14.4-32 32v704c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-704c0-17.6-14.4-32-32-32zM608 960h-192v-320h192v320zM928 128h-192c-17.6 0-32 14.4-32 32v832c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-832c0-17.6-14.4-32-32-32zM928 960h-192v-384h192v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stats-bars", + "stats", + "statistics", + "chart" + ], + "defaultCode": 59805, + "grid": 16 + }, + { + "id": 158, + "paths": [ + "M832 192v-128h-640v128h-192v128c0 106.038 85.958 192 192 192 20.076 0 39.43-3.086 57.62-8.802 46.174 66.008 116.608 113.796 198.38 130.396v198.406h-64c-70.694 0-128 57.306-128 128h512c0-70.694-57.306-128-128-128h-64v-198.406c81.772-16.6 152.206-64.386 198.38-130.396 18.19 5.716 37.544 8.802 57.62 8.802 106.042 0 192-85.962 192-192v-128h-192zM192 436c-63.962 0-116-52.038-116-116v-64h116v64c0 40.186 7.43 78.632 20.954 114.068-6.802 1.246-13.798 1.932-20.954 1.932zM948 320c0 63.962-52.038 116-116 116-7.156 0-14.152-0.686-20.954-1.932 13.524-35.436 20.954-73.882 20.954-114.068v-64h116v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "trophy", + "cup", + "prize", + "award", + "winner", + "tournament" + ], + "defaultCode": 59806, + "grid": 16 + }, + { + "id": 159, + "paths": [ + "M771.516 320c18.126-12.88 35.512-27.216 51.444-43.148 33.402-33.402 55.746-74.5 62.912-115.722 7.858-45.186-3.672-87.14-31.63-115.1-22.3-22.298-52.51-34.086-87.364-34.086-49.632 0-101.922 23.824-143.46 65.362-66.476 66.476-105.226 158.238-126.076 223.722-15.44-65.802-46.206-154.644-106.018-214.458-32.094-32.092-73.114-48.57-111.846-48.57-31.654 0-61.78 11.004-84.26 33.486-49.986 49.988-43.232 137.786 15.086 196.104 20.792 20.792 45.098 38.062 70.72 52.412h-217.024v256h64v448h768v-448.002h64v-256h-188.484zM674.326 128.218c27.724-27.724 62.322-44.274 92.55-44.274 10.7 0 25.708 2.254 36.45 12.998 26.030 26.028 11.412 86.308-31.28 128.998-43.946 43.946-103.060 74.168-154.432 94.060h-50.672c18.568-57.548 52.058-136.456 107.384-191.782zM233.934 160.89c-0.702-9.12-0.050-26.248 12.196-38.494 10.244-10.244 23.788-12.396 33.348-12.396v0c21.258 0 43.468 10.016 60.932 27.48 33.872 33.872 61.766 87.772 80.668 155.876 0.51 1.84 1.008 3.67 1.496 5.486-1.816-0.486-3.646-0.984-5.486-1.496-68.104-18.904-122.002-46.798-155.874-80.67-15.828-15.826-25.77-36.16-27.28-55.786zM448 960h-256v-416h256v416zM448 512h-320v-128h320v128zM832 960h-256v-416h256v416zM896 512h-320v-128h320v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "gift", + "present", + "box" + ], + "defaultCode": 59807, + "grid": 16 + }, + { + "id": 160, + "paths": [ + "M777.784 16.856c-5.576-10.38-16.406-16.856-28.19-16.856h-475.188c-11.784 0-22.614 6.476-28.19 16.856-35.468 66.020-54.216 143.184-54.216 223.144 0 105.412 32.372 204.828 91.154 279.938 45.428 58.046 102.48 96.54 164.846 112.172v327.89h-96c-17.672 0-32 14.326-32 32s14.328 32 32 32h320c17.674 0 32-14.326 32-32s-14.326-32-32-32h-96v-327.89c62.368-15.632 119.418-54.124 164.846-112.172 58.782-75.11 91.154-174.526 91.154-279.938 0-79.96-18.748-157.122-54.216-223.144zM294.1 64h435.8c24.974 52.902 38.1 113.338 38.1 176 0 5.364-0.108 10.696-0.296 16h-511.406c-0.19-5.304-0.296-10.636-0.296-16-0.002-62.664 13.126-123.098 38.098-176z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "glass", + "drink", + "beverage", + "wine" + ], + "defaultCode": 59808, + "grid": 16 + }, + { + "id": 161, + "paths": [ + "M889.162 179.77c7.568-9.632 8.972-22.742 3.62-33.758-5.356-11.018-16.532-18.012-28.782-18.012h-704c-12.25 0-23.426 6.994-28.78 18.012-5.356 11.018-3.95 24.126 3.618 33.758l313.162 398.57v381.66h-96c-17.672 0-32 14.326-32 32s14.328 32 32 32h320c17.674 0 32-14.326 32-32s-14.326-32-32-32h-96v-381.66l313.162-398.57zM798.162 192l-100.572 128h-371.18l-100.57-128h572.322z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "glass", + "drink", + "beverage", + "wine" + ], + "defaultCode": 59809, + "grid": 16 + }, + { + "id": 162, + "paths": [ + "M960 320h-192v-96c0-88.366-171.922-160-384-160s-384 71.634-384 160v640c0 88.366 171.922 160 384 160s384-71.634 384-160v-96h192c35.346 0 64-28.654 64-64v-320c0-35.346-28.654-64-64-64zM176.056 258.398c-36.994-12.19-59.408-25.246-71.41-34.398 12.004-9.152 34.416-22.208 71.41-34.398 57.942-19.090 131.79-29.602 207.944-29.602s150.004 10.512 207.944 29.602c36.994 12.188 59.408 25.246 71.41 34.398-12.002 9.152-34.416 22.208-71.41 34.398-57.94 19.090-131.79 29.602-207.944 29.602s-150.002-10.512-207.944-29.602zM896 640h-128v-192h128v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mug", + "drink", + "glass", + "beverage" + ], + "defaultCode": 59810, + "grid": 16 + }, + { + "id": 163, + "paths": [ + "M224 0c-106.040 0-192 100.288-192 224 0 105.924 63.022 194.666 147.706 217.998l-31.788 518.124c-2.154 35.132 24.882 63.878 60.082 63.878h32c35.2 0 62.236-28.746 60.082-63.878l-31.788-518.124c84.684-23.332 147.706-112.074 147.706-217.998 0-123.712-85.96-224-192-224zM869.334 0l-53.334 320h-40l-26.666-320h-26.668l-26.666 320h-40l-53.334-320h-26.666v416c0 17.672 14.326 32 32 32h83.338l-31.42 512.122c-2.154 35.132 24.882 63.878 60.082 63.878h32c35.2 0 62.236-28.746 60.082-63.878l-31.42-512.122h83.338c17.674 0 32-14.328 32-32v-416h-26.666z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spoon-knife", + "food", + "restaurant" + ], + "defaultCode": 59811, + "grid": 16 + }, + { + "id": 164, + "paths": [ + "M1011.328 134.496c-110.752-83.928-281.184-134.034-455.91-134.034-216.12 0-392.226 75.456-483.16 207.020-42.708 61.79-66.33 134.958-70.208 217.474-3.454 73.474 8.884 154.726 36.684 242.146 94.874-284.384 359.82-507.102 665.266-507.102 0 0-285.826 75.232-465.524 308.192-0.112 0.138-2.494 3.090-6.614 8.698-36.080 48.278-67.538 103.162-91.078 165.328-39.87 94.83-76.784 224.948-76.784 381.782h128c0 0-19.43-122.222 14.36-262.79 55.89 7.556 105.858 11.306 150.852 11.306 117.678 0 201.37-25.46 263.388-80.124 55.568-48.978 86.198-114.786 118.624-184.456 49.524-106.408 105.654-227.010 268.654-320.152 9.33-5.332 15.362-14.992 16.056-25.716s-4.040-21.080-12.606-27.572z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "leaf", + "nature", + "plant", + "tea", + "green", + "vegan", + "vegetarian" + ], + "defaultCode": 59812, + "grid": 16 + }, + { + "id": 165, + "paths": [ + "M704 64l-320 320h-192l-192 256c0 0 203.416-56.652 322.066-30.084l-322.066 414.084 421.902-328.144c58.838 134.654-37.902 328.144-37.902 328.144l256-192v-192l320-320 64-320-320 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "rocket", + "jet", + "speed", + "spaceship", + "fast" + ], + "defaultCode": 59813, + "grid": 16 + }, + { + "id": 166, + "paths": [ + "M512 64c282.77 0 512 229.23 512 512 0 192.792-106.576 360.666-264.008 448h-495.984c-157.432-87.334-264.008-255.208-264.008-448 0-282.77 229.23-512 512-512zM801.914 865.914c77.438-77.44 120.086-180.398 120.086-289.914h-90v-64h85.038c-7.014-44.998-21.39-88.146-42.564-128h-106.474v-64h64.284c-9.438-11.762-19.552-23.096-30.37-33.914-46.222-46.22-101.54-80.038-161.914-99.798v69.712h-64v-85.040c-20.982-3.268-42.36-4.96-64-4.96s-43.018 1.69-64 4.96v85.040h-64v-69.712c-60.372 19.76-115.692 53.576-161.914 99.798-10.818 10.818-20.932 22.152-30.37 33.914h64.284v64h-106.476c-21.174 39.854-35.552 83.002-42.564 128h85.040v64h-90c0 109.516 42.648 212.474 120.086 289.914 10.71 10.71 21.924 20.728 33.56 30.086h192.354l36.572-512h54.856l36.572 512h192.354c11.636-9.358 22.852-19.378 33.56-30.086z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "meter", + "gauge", + "dashboard", + "speedometer", + "performance" + ], + "defaultCode": 59814, + "grid": 16 + }, + { + "id": 167, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM302.836 834.152c11.106-30.632 17.164-63.688 17.164-98.152 0-124.35-78.81-230.292-189.208-270.606 10.21-84.924 48.254-163.498 109.678-224.924 72.53-72.526 168.96-112.47 271.53-112.47s199 39.944 271.53 112.47c61.428 61.426 99.468 140 109.682 224.924-110.402 40.314-189.212 146.256-189.212 270.606 0 34.468 6.060 67.52 17.166 98.15-61.706 40.242-133.77 61.85-209.166 61.85-75.394 0-147.458-21.608-209.164-61.848zM551.754 640.996c13.878 3.494 24.246 16.080 24.246 31.004v64c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-64c0-14.924 10.368-27.51 24.246-31.004l23.754-448.996h32l23.754 448.996z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "meter", + "gauge", + "dashboard", + "speedometer", + "performance" + ], + "defaultCode": 59815, + "grid": 16 + }, + { + "id": 168, + "paths": [ + "M1010.174 915.75l-548.634-499.458 25.534-25.598c20.894-20.954 32.188-48.030 33.918-75.61 1.002-0.45 2.002-0.912 2.958-1.442l102.99-64.402c13.934-16.392 12.916-42.268-2.284-57.502l-179.12-179.608c-15.19-15.234-40.998-16.262-57.344-2.284l-64.236 103.268c-0.526 0.966-0.99 1.966-1.44 2.974-27.502 1.736-54.5 13.056-75.398 34.006l-97.428 97.702c-20.898 20.956-32.184 48.026-33.918 75.604-1.004 0.45-2.004 0.916-2.964 1.446l-102.986 64.406c-13.942 16.39-12.916 42.264 2.276 57.496l179.12 179.604c15.194 15.238 40.996 16.262 57.35 2.286l64.228-103.27c0.528-0.958 0.988-1.96 1.442-2.966 27.502-1.738 54.504-13.050 75.398-34.004l28.292-28.372 498.122 550.114c14.436 15.944 36.7 18.518 49.474 5.712l50.356-50.488c12.764-12.808 10.196-35.132-5.706-49.614z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hammer", + "gavel", + "rules", + "justice", + "legal" + ], + "defaultCode": 59816, + "grid": 16 + }, + { + "id": 169, + "paths": [ + "M321.008 1024c-68.246-142.008-31.902-223.378 20.55-300.044 57.44-83.956 72.244-167.066 72.244-167.066s45.154 58.7 27.092 150.508c79.772-88.8 94.824-230.28 82.782-284.464 180.314 126.012 257.376 398.856 153.522 601.066 552.372-312.532 137.398-780.172 65.154-832.85 24.082 52.676 28.648 141.85-20 185.126-82.352-312.276-285.972-376.276-285.972-376.276 24.082 161.044-87.296 337.144-194.696 468.73-3.774-64.216-7.782-108.528-41.55-169.98-7.58 116.656-96.732 211.748-120.874 328.628-32.702 158.286 24.496 274.18 241.748 396.622z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "fire", + "flame", + "hot", + "popular" + ], + "defaultCode": 59817, + "grid": 16 + }, + { + "id": 170, + "paths": [ + "M956.29 804.482l-316.29-527.024v-213.458h32c17.6 0 32-14.4 32-32s-14.4-32-32-32h-320c-17.6 0-32 14.4-32 32s14.4 32 32 32h32v213.458l-316.288 527.024c-72.442 120.734-16.512 219.518 124.288 219.518h640c140.8 0 196.73-98.784 124.29-219.518zM241.038 640l206.962-344.938v-231.062h128v231.062l206.964 344.938h-541.926z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lab", + "beta", + "beaker", + "test", + "experiment" + ], + "defaultCode": 59818, + "grid": 16 + }, + { + "id": 171, + "paths": [ + "M896 0h-256l64 576c0 106.040-85.96 192-192 192s-192-85.96-192-192l64-576h-256l-64 576c0 247.424 200.576 448 448 448s448-200.576 448-448l-64-576zM777.874 841.874c-71.018 71.014-165.44 110.126-265.874 110.126s-194.856-39.112-265.872-110.126c-70.116-70.118-109.13-163.048-110.11-262.054l36.092-324.82h111.114l-35.224 317.010v3.99c0 70.518 27.46 136.814 77.324 186.676 49.862 49.864 116.158 77.324 186.676 77.324s136.814-27.46 186.676-77.324c49.864-49.862 77.324-116.158 77.324-186.676v-3.988l-0.44-3.962-34.782-313.050h111.114l36.090 324.818c-0.98 99.006-39.994 191.938-110.108 262.056z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "magnet", + "attract" + ], + "defaultCode": 59819, + "grid": 16 + }, + { + "id": 172, + "paths": [ + "M128 320v640c0 35.2 28.8 64 64 64h576c35.2 0 64-28.8 64-64v-640h-704zM320 896h-64v-448h64v448zM448 896h-64v-448h64v448zM576 896h-64v-448h64v448zM704 896h-64v-448h64v448z", + "M848 128h-208v-80c0-26.4-21.6-48-48-48h-224c-26.4 0-48 21.6-48 48v80h-208c-26.4 0-48 21.6-48 48v80h832v-80c0-26.4-21.6-48-48-48zM576 128h-192v-63.198h192v63.198z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bin", + "trashcan", + "remove", + "delete", + "recycle", + "dispose" + ], + "defaultCode": 59820, + "grid": 16 + }, + { + "id": 173, + "paths": [ + "M192 1024h640l64-704h-768zM640 128v-128h-256v128h-320v192l64-64h768l64 64v-192h-320zM576 128h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bin", + "trashcan", + "remove", + "delete", + "recycle", + "dispose" + ], + "defaultCode": 59821, + "grid": 16 + }, + { + "id": 174, + "paths": [ + "M960 256h-256v-64c0-35.2-28.8-64-64-64h-256c-35.204 0-64 28.8-64 64v64h-256c-35.2 0-64 28.8-64 64v576c0 35.202 28.796 64 64 64h896c35.2 0 64-28.798 64-64v-576c0-35.2-28.8-64-64-64zM384 192.116c0.034-0.040 0.074-0.082 0.114-0.116h255.772c0.042 0.034 0.082 0.076 0.118 0.116v63.884h-256.004v-63.884zM960 512h-128v96c0 17.602-14.4 32-32 32h-64c-17.604 0-32-14.398-32-32v-96h-384v96c0 17.602-14.4 32-32 32h-64c-17.602 0-32-14.398-32-32v-96h-128v-64h896v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "briefcase", + "portfolio", + "suitcase", + "work", + "job", + "employee" + ], + "defaultCode": 59822, + "grid": 16 + }, + { + "id": 175, + "paths": [ + "M768 639.968l-182.82-182.822 438.82-329.15-128.010-127.996-548.52 219.442-172.7-172.706c-49.78-49.778-119.302-61.706-154.502-26.508-35.198 35.198-23.268 104.726 26.51 154.5l172.686 172.684-219.464 548.582 127.99 128.006 329.19-438.868 182.826 182.828v255.98h127.994l63.992-191.988 191.988-63.996v-127.992l-255.98 0.004z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "airplane", + "travel", + "flight", + "plane", + "transport", + "fly", + "vacation" + ], + "defaultCode": 59823, + "grid": 16 + }, + { + "id": 176, + "paths": [ + "M1024 576l-128-256h-192v-128c0-35.2-28.8-64-64-64h-576c-35.2 0-64 28.8-64 64v512l64 64h81.166c-10.898 18.832-17.166 40.678-17.166 64 0 70.692 57.308 128 128 128s128-57.308 128-128c0-23.322-6.268-45.168-17.166-64h354.334c-10.898 18.832-17.168 40.678-17.168 64 0 70.692 57.308 128 128 128s128-57.308 128-128c0-23.322-6.27-45.168-17.168-64h81.168v-192zM704 576v-192h132.668l96 192h-228.668z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "truck", + "transit", + "transport", + "delivery", + "vehicle" + ], + "defaultCode": 59824, + "grid": 16 + }, + { + "id": 177, + "paths": [ + "M704 1024h320l-256-1024h-192l32 256h-192l32-256h-192l-256 1024h320l32-256h320l32 256zM368 640l32-256h224l32 256h-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "road", + "asphalt", + "travel" + ], + "defaultCode": 59825, + "grid": 16 + }, + { + "id": 178, + "paths": [ + "M416 96c0-53.018 42.98-96 96-96s96 42.982 96 96c0 53.020-42.98 96-96 96s-96-42.98-96-96z", + "M640 320l329.596-142.172-23.77-59.424-401.826 137.596h-64l-401.826-137.596-23.77 59.424 329.596 142.172v256l-131.27 424.57 59.84 22.7 185.716-415.27h27.428l185.716 415.27 59.84-22.7-131.27-424.57z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "accessibility" + ], + "defaultCode": 59826, + "grid": 16 + }, + { + "id": 179, + "paths": [ + "M1024 448h-100.924c-27.64-178.24-168.836-319.436-347.076-347.076v-100.924h-128v100.924c-178.24 27.64-319.436 168.836-347.076 347.076h-100.924v128h100.924c27.64 178.24 168.836 319.436 347.076 347.076v100.924h128v-100.924c178.24-27.64 319.436-168.836 347.076-347.076h100.924v-128zM792.822 448h-99.762c-19.284-54.55-62.51-97.778-117.060-117.060v-99.762c107.514 24.49 192.332 109.31 216.822 216.822zM512 576c-35.346 0-64-28.654-64-64s28.654-64 64-64c35.346 0 64 28.654 64 64s-28.654 64-64 64zM448 231.178v99.762c-54.55 19.282-97.778 62.51-117.060 117.060h-99.762c24.49-107.512 109.31-192.332 216.822-216.822zM231.178 576h99.762c19.282 54.55 62.51 97.778 117.060 117.060v99.762c-107.512-24.49-192.332-109.308-216.822-216.822zM576 792.822v-99.762c54.55-19.284 97.778-62.51 117.060-117.060h99.762c-24.49 107.514-109.308 192.332-216.822 216.822z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "target", + "goal", + "location", + "spot" + ], + "defaultCode": 59827, + "grid": 16 + }, + { + "id": 180, + "paths": [ + "M960 0l-448 128-448-128c0 0-4.5 51.698 0 128l448 140.090 448-140.090c4.498-76.302 0-128 0-128zM72.19 195.106c23.986 250.696 113.49 672.234 439.81 828.894 326.32-156.66 415.824-578.198 439.81-828.894l-439.81 165.358-439.81-165.358z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shield", + "security", + "defense", + "protection", + "anti virus" + ], + "defaultCode": 59828, + "grid": 16 + }, + { + "id": 181, + "paths": [ + "M384 0l-384 512h384l-256 512 896-640h-512l384-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "power", + "lightning", + "bolt", + "electricity" + ], + "defaultCode": 59829, + "grid": 16 + }, + { + "id": 182, + "paths": [ + "M640 146.588v135.958c36.206 15.804 69.5 38.408 98.274 67.18 60.442 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274c-60.44 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c28.774-28.774 62.068-51.378 98.274-67.182v-135.956c-185.048 55.080-320 226.472-320 429.412 0 247.424 200.578 448 448 448 247.424 0 448-200.576 448-448 0-202.94-134.95-374.332-320-429.412zM448 0h128v512h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "switch" + ], + "defaultCode": 59830, + "grid": 16 + }, + { + "id": 183, + "paths": [ + "M1024 282.5l-90.506-90.5-178.746 178.752-101.5-101.502 178.75-178.75-90.5-90.5-178.75 178.75-114.748-114.75-86.626 86.624 512.002 512 86.624-86.622-114.752-114.752 178.752-178.75z", + "M794.040 673.79l-443.824-443.824c-95.818 114.904-204.52 292.454-129.396 445.216l-132.248 132.248c-31.112 31.114-31.112 82.024 0 113.136l14.858 14.858c31.114 31.114 82.026 31.114 113.138 0l132.246-132.244c152.764 75.132 330.318-33.566 445.226-129.39z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "power-cord", + "plugin", + "extension" + ], + "defaultCode": 59831, + "grid": 16 + }, + { + "id": 184, + "paths": [ + "M928 128h-288c0-70.692-57.306-128-128-128-70.692 0-128 57.308-128 128h-288c-17.672 0-32 14.328-32 32v832c0 17.674 14.328 32 32 32h832c17.674 0 32-14.326 32-32v-832c0-17.672-14.326-32-32-32zM512 64c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64s28.654-64 64-64zM896 960h-768v-768h128v96c0 17.672 14.328 32 32 32h448c17.674 0 32-14.328 32-32v-96h128v768z", + "M448 858.51l-205.254-237.254 58.508-58.51 146.746 114.744 274.742-242.744 58.514 58.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clipboard", + "board", + "signup", + "register", + "agreement" + ], + "defaultCode": 59832, + "grid": 16 + }, + { + "id": 185, + "paths": [ + "M384 832h640v128h-640zM384 448h640v128h-640zM384 64h640v128h-640zM192 0v256h-64v-192h-64v-64zM128 526v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM256 704v320h-192v-64h128v-64h-128v-64h128v-64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list-numbered", + "options" + ], + "defaultCode": 59833, + "grid": 16 + }, + { + "id": 186, + "paths": [ + "M0 0h256v256h-256zM384 64h640v128h-640zM0 384h256v256h-256zM384 448h640v128h-640zM0 768h256v256h-256zM384 832h640v128h-640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list", + "todo", + "bullet", + "menu", + "options" + ], + "defaultCode": 59834, + "grid": 16 + }, + { + "id": 187, + "paths": [ + "M384 64h640v128h-640v-128zM384 448h640v128h-640v-128zM384 832h640v128h-640v-128zM0 128c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM0 512c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM0 896c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "list", + "todo", + "bullet", + "menu", + "options" + ], + "defaultCode": 59835, + "grid": 16 + }, + { + "id": 188, + "paths": [ + "M976 768h-16v-208c0-61.756-50.242-112-112-112h-272v-128h16c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v128h-272c-61.756 0-112 50.244-112 112v208h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48zM192 960h-128v-128h128v128zM576 960h-128v-128h128v128zM448 256v-128h128v128h-128zM960 960h-128v-128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tree", + "branches", + "inheritance" + ], + "defaultCode": 59836, + "grid": 16 + }, + { + "id": 189, + "paths": [ + "M64 192h896v192h-896zM64 448h896v192h-896zM64 704h896v192h-896z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "list", + "options", + "lines", + "hamburger" + ], + "defaultCode": 59837, + "grid": 16 + }, + { + "id": 190, + "paths": [ + "M0 192h896v192h-896v-192zM0 448h896v192h-896v-192zM0 704h896v192h-896v-192z", + "M992 576l192 192 192-192z", + "M1376 512l-192-192-192 192z" + ], + "width": 1408, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "options", + "hamburger" + ], + "defaultCode": 59838, + "grid": 16 + }, + { + "id": 191, + "paths": [ + "M0 192h896v192h-896v-192zM0 448h896v192h-896v-192zM0 704h896v192h-896v-192z", + "M992 448l192 192 192-192z" + ], + "width": 1408, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "options", + "hamburger" + ], + "defaultCode": 59839, + "grid": 16 + }, + { + "id": 192, + "paths": [ + "M0 192h896v192h-896v-192zM0 448h896v192h-896v-192zM0 704h896v192h-896v-192z", + "M992 640l192-192 192 192z" + ], + "width": 1408, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "menu", + "options", + "hamburger" + ], + "defaultCode": 59840, + "grid": 16 + }, + { + "id": 193, + "paths": [ + "M1024 657.542c0-82.090-56.678-150.9-132.996-169.48-3.242-128.7-108.458-232.062-237.862-232.062-75.792 0-143.266 35.494-186.854 90.732-24.442-31.598-62.69-51.96-105.708-51.96-73.81 0-133.642 59.874-133.642 133.722 0 6.436 0.48 12.76 1.364 18.954-11.222-2.024-22.766-3.138-34.57-3.138-106.998-0.002-193.732 86.786-193.732 193.842 0 107.062 86.734 193.848 193.73 193.848l656.262-0.012c96.138-0.184 174.008-78.212 174.008-174.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud", + "weather" + ], + "defaultCode": 59841, + "grid": 16 + }, + { + "id": 194, + "paths": [ + "M891.004 360.060c-3.242-128.698-108.458-232.060-237.862-232.060-75.792 0-143.266 35.494-186.854 90.732-24.442-31.598-62.69-51.96-105.708-51.96-73.81 0-133.642 59.876-133.642 133.722 0 6.436 0.48 12.76 1.364 18.954-11.222-2.024-22.766-3.138-34.57-3.138-106.998-0.002-193.732 86.786-193.732 193.842 0 107.062 86.734 193.848 193.73 193.848h91.76l226.51 234.51 226.51-234.51 111.482-0.012c96.138-0.184 174.008-78.21 174.008-174.446 0-82.090-56.678-150.9-132.996-169.482zM512 832l-192-192h128v-192h128v192h128l-192 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud-download", + "cloud", + "save", + "download" + ], + "defaultCode": 59842, + "grid": 16 + }, + { + "id": 195, + "paths": [ + "M892.268 386.49c2.444-11.11 3.732-22.648 3.732-34.49 0-88.366-71.634-160-160-160-14.222 0-28.014 1.868-41.132 5.352-24.798-77.352-97.29-133.352-182.868-133.352-87.348 0-161.054 58.336-184.326 138.17-22.742-6.622-46.792-10.17-71.674-10.17-141.384 0-256 114.616-256 256 0 141.388 114.616 256 256 256h128v192h256v-192h224c88.366 0 160-71.632 160-160 0-78.72-56.854-144.162-131.732-157.51zM576 640v192h-128v-192h-160l224-224 224 224h-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud-upload", + "cloud", + "load", + "upload" + ], + "defaultCode": 59843, + "grid": 16 + }, + { + "id": 196, + "paths": [ + "M892.268 514.49c2.442-11.108 3.732-22.646 3.732-34.49 0-88.366-71.634-160-160-160-14.224 0-28.014 1.868-41.134 5.352-24.796-77.352-97.288-133.352-182.866-133.352-87.348 0-161.054 58.336-184.326 138.17-22.742-6.62-46.792-10.17-71.674-10.17-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256h608c88.366 0 160-71.632 160-160 0-78.718-56.854-144.16-131.732-157.51zM416 768l-160-160 64-64 96 96 224-224 64 64-288 288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cloud-check", + "cloud", + "synced" + ], + "defaultCode": 59844, + "grid": 16 + }, + { + "id": 197, + "paths": [ + "M896 512h-160l-224 224-224-224h-160l-128 256v64h1024v-64l-128-256zM0 896h1024v64h-1024v-64zM576 320v-256h-128v256h-224l288 288 288-288h-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download", + "save", + "store" + ], + "defaultCode": 59845, + "grid": 16 + }, + { + "id": 198, + "paths": [ + "M0 896h1024v64h-1024zM1024 768v64h-1024v-64l128-256h256v128h256v-128h256zM224 320l288-288 288 288h-224v256h-128v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "upload", + "load", + "open" + ], + "defaultCode": 59846, + "grid": 16 + }, + { + "id": 199, + "paths": [ + "M736 448l-256 256-256-256h160v-384h192v384zM480 704h-480v256h960v-256h-480zM896 832h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "download", + "save", + "store" + ], + "defaultCode": 59847, + "grid": 16 + }, + { + "id": 200, + "paths": [ + "M480 704h-480v256h960v-256h-480zM896 832h-128v-64h128v64zM224 320l256-256 256 256h-160v320h-192v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "upload", + "load", + "open" + ], + "defaultCode": 59848, + "grid": 16 + }, + { + "id": 201, + "paths": [ + "M480 64c-265.096 0-480 214.904-480 480 0 265.098 214.904 480 480 480 265.098 0 480-214.902 480-480 0-265.096-214.902-480-480-480zM751.59 704c8.58-40.454 13.996-83.392 15.758-128h127.446c-3.336 44.196-13.624 87.114-30.68 128h-112.524zM208.41 384c-8.58 40.454-13.996 83.392-15.758 128h-127.444c3.336-44.194 13.622-87.114 30.678-128h112.524zM686.036 384c9.614 40.962 15.398 83.854 17.28 128h-191.316v-128h174.036zM512 320v-187.338c14.59 4.246 29.044 11.37 43.228 21.37 26.582 18.74 52.012 47.608 73.54 83.486 14.882 24.802 27.752 52.416 38.496 82.484h-155.264zM331.232 237.516c21.528-35.878 46.956-64.748 73.54-83.486 14.182-10 28.638-17.124 43.228-21.37v187.34h-155.264c10.746-30.066 23.616-57.68 38.496-82.484zM448 384v128h-191.314c1.88-44.146 7.666-87.038 17.278-128h174.036zM95.888 704c-17.056-40.886-27.342-83.804-30.678-128h127.444c1.762 44.608 7.178 87.546 15.758 128h-112.524zM256.686 576h191.314v128h-174.036c-9.612-40.96-15.398-83.854-17.278-128zM448 768v187.34c-14.588-4.246-29.044-11.372-43.228-21.37-26.584-18.74-52.014-47.61-73.54-83.486-14.882-24.804-27.75-52.418-38.498-82.484h155.266zM628.768 850.484c-21.528 35.876-46.958 64.746-73.54 83.486-14.184 9.998-28.638 17.124-43.228 21.37v-187.34h155.266c-10.746 30.066-23.616 57.68-38.498 82.484zM512 704v-128h191.314c-1.88 44.146-7.666 87.040-17.28 128h-174.034zM767.348 512c-1.762-44.608-7.178-87.546-15.758-128h112.524c17.056 40.886 27.344 83.806 30.68 128h-127.446zM830.658 320h-95.9c-18.638-58.762-44.376-110.294-75.316-151.428 42.536 20.34 81.058 47.616 114.714 81.272 21.48 21.478 40.362 44.938 56.502 70.156zM185.844 249.844c33.658-33.658 72.18-60.932 114.714-81.272-30.942 41.134-56.676 92.666-75.316 151.428h-95.898c16.138-25.218 35.022-48.678 56.5-70.156zM129.344 768h95.898c18.64 58.762 44.376 110.294 75.318 151.43-42.536-20.34-81.058-47.616-114.714-81.274-21.48-21.478-40.364-44.938-56.502-70.156zM774.156 838.156c-33.656 33.658-72.18 60.934-114.714 81.274 30.942-41.134 56.678-92.668 75.316-151.43h95.9c-16.14 25.218-35.022 48.678-56.502 70.156z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sphere", + "globe", + "internet" + ], + "defaultCode": 59849, + "grid": 16 + }, + { + "id": 202, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960.002c-62.958 0-122.872-13.012-177.23-36.452l233.148-262.29c5.206-5.858 8.082-13.422 8.082-21.26v-96c0-17.674-14.326-32-32-32-112.99 0-232.204-117.462-233.374-118.626-6-6.002-14.14-9.374-22.626-9.374h-128c-17.672 0-32 14.328-32 32v192c0 12.122 6.848 23.202 17.69 28.622l110.31 55.156v187.886c-116.052-80.956-192-215.432-192-367.664 0-68.714 15.49-133.806 43.138-192h116.862c8.488 0 16.626-3.372 22.628-9.372l128-128c6-6.002 9.372-14.14 9.372-22.628v-77.412c40.562-12.074 83.518-18.588 128-18.588 70.406 0 137.004 16.26 196.282 45.2-4.144 3.502-8.176 7.164-12.046 11.036-36.266 36.264-56.236 84.478-56.236 135.764s19.97 99.5 56.236 135.764c36.434 36.432 85.218 56.264 135.634 56.26 3.166 0 6.342-0.080 9.518-0.236 13.814 51.802 38.752 186.656-8.404 372.334-0.444 1.744-0.696 3.488-0.842 5.224-81.324 83.080-194.7 134.656-320.142 134.656z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "earth", + "globe", + "language", + "web", + "internet", + "sphere", + "planet" + ], + "defaultCode": 59850, + "grid": 16 + }, + { + "id": 203, + "paths": [ + "M440.236 635.766c-13.31 0-26.616-5.076-36.77-15.23-95.134-95.136-95.134-249.934 0-345.070l192-192c46.088-46.086 107.36-71.466 172.534-71.466s126.448 25.38 172.536 71.464c95.132 95.136 95.132 249.934 0 345.070l-87.766 87.766c-20.308 20.308-53.23 20.308-73.54 0-20.306-20.306-20.306-53.232 0-73.54l87.766-87.766c54.584-54.586 54.584-143.404 0-197.99-26.442-26.442-61.6-41.004-98.996-41.004s-72.552 14.562-98.996 41.006l-192 191.998c-54.586 54.586-54.586 143.406 0 197.992 20.308 20.306 20.306 53.232 0 73.54-10.15 10.152-23.462 15.23-36.768 15.23z", + "M256 1012c-65.176 0-126.45-25.38-172.534-71.464-95.134-95.136-95.134-249.934 0-345.070l87.764-87.764c20.308-20.306 53.234-20.306 73.54 0 20.308 20.306 20.308 53.232 0 73.54l-87.764 87.764c-54.586 54.586-54.586 143.406 0 197.992 26.44 26.44 61.598 41.002 98.994 41.002s72.552-14.562 98.998-41.006l192-191.998c54.584-54.586 54.584-143.406 0-197.992-20.308-20.308-20.306-53.232 0-73.54 20.306-20.306 53.232-20.306 73.54 0.002 95.132 95.134 95.132 249.932 0.002 345.068l-192.002 192c-46.090 46.088-107.364 71.466-172.538 71.466z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "link", + "chain", + "url", + "uri", + "anchor" + ], + "defaultCode": 59851, + "grid": 16 + }, + { + "id": 204, + "paths": [ + "M0 0h128v1024h-128v-1024z", + "M832 643.002c82.624 0 154.57-19.984 192-49.5v-512c-37.43 29.518-109.376 49.502-192 49.502s-154.57-19.984-192-49.502v512c37.43 29.516 109.376 49.5 192 49.5z", + "M608 32.528c-46.906-19.94-115.52-32.528-192-32.528-96.396 0-180.334 19.984-224 49.502v512c43.666-29.518 127.604-49.502 224-49.502 76.48 0 145.094 12.588 192 32.528v-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flag", + "report", + "mark" + ], + "defaultCode": 59852, + "grid": 16 + }, + { + "id": 205, + "paths": [ + "M665.832 327.048l-64.952-64.922-324.81 324.742c-53.814 53.792-53.814 141.048 0 194.844 53.804 53.792 141.060 53.792 194.874 0l389.772-389.708c89.714-89.662 89.714-235.062 0-324.726-89.666-89.704-235.112-89.704-324.782 0l-409.23 409.178c-0.29 0.304-0.612 0.576-0.876 0.846-125.102 125.096-125.102 327.856 0 452.906 125.054 125.056 327.868 125.056 452.988 0 0.274-0.274 0.516-0.568 0.82-0.876l0.032 0.034 279.332-279.292-64.986-64.92-279.33 279.262c-0.296 0.268-0.564 0.57-0.846 0.844-89.074 89.058-233.98 89.058-323.076 0-89.062-89.042-89.062-233.922 0-322.978 0.304-0.304 0.604-0.582 0.888-0.846l-0.046-0.060 409.28-409.166c53.712-53.738 141.144-53.738 194.886 0 53.712 53.734 53.712 141.148 0 194.84l-389.772 389.7c-17.936 17.922-47.054 17.922-64.972 0-17.894-17.886-17.894-47.032 0-64.92l324.806-324.782z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "attachment", + "paperclip" + ], + "defaultCode": 59853, + "grid": 16 + }, + { + "id": 206, + "paths": [ + "M512 192c-223.318 0-416.882 130.042-512 320 95.118 189.958 288.682 320 512 320 223.312 0 416.876-130.042 512-320-95.116-189.958-288.688-320-512-320zM764.45 361.704c60.162 38.374 111.142 89.774 149.434 150.296-38.292 60.522-89.274 111.922-149.436 150.296-75.594 48.218-162.89 73.704-252.448 73.704-89.56 0-176.858-25.486-252.452-73.704-60.158-38.372-111.138-89.772-149.432-150.296 38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.86-7.3-9.96 27.328-15.41 56.822-15.41 87.596 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-30.774-5.452-60.268-15.408-87.598 3.978 2.378 7.938 4.802 11.858 7.302v0zM512 416c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.982 96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye", + "views", + "vision", + "visit" + ], + "defaultCode": 59854, + "grid": 16 + }, + { + "id": 207, + "paths": [ + "M1024 128h-128v-128h-128v128h-128v128h128v128h128v-128h128z", + "M863.862 446.028c18.436 20.478 35.192 42.53 50.022 65.972-38.292 60.522-89.274 111.922-149.436 150.296-75.594 48.218-162.89 73.704-252.448 73.704-89.56 0-176.86-25.486-252.454-73.704-60.156-38.372-111.136-89.772-149.43-150.296 38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.862-7.3-9.962 27.328-15.412 56.822-15.412 87.596 0 141.382 114.616 256 256 256 141.38 0 256-114.618 256-256 0-0.692-0.018-1.38-0.024-2.072-109.284-28.138-190.298-126.63-191.932-244.31-21.026-2.38-42.394-3.618-64.044-3.618-223.318 0-416.882 130.042-512 320 95.118 189.958 288.682 320 512 320 223.31 0 416.876-130.042 512-320-17.64-35.23-38.676-68.394-62.65-99.054-29.28 17.178-62.272 28.71-97.488 33.082zM416 320c53.020 0 96 42.982 96 96 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye-plus", + "views", + "vision", + "visit" + ], + "defaultCode": 59855, + "grid": 16 + }, + { + "id": 208, + "paths": [ + "M640 128h384v128h-384v-128z", + "M870.32 320h-294.32v-124.388c-21.014-2.376-42.364-3.612-64-3.612-223.318 0-416.882 130.042-512 320 95.118 189.958 288.682 320 512 320 223.31 0 416.876-130.042 512-320-37.396-74.686-90.020-140.1-153.68-192zM416 320c53.020 0 96 42.982 96 96 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96zM764.448 662.296c-75.594 48.218-162.89 73.704-252.448 73.704-89.56 0-176.86-25.486-252.454-73.704-60.156-38.372-111.136-89.772-149.43-150.296 38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.862-7.3-9.962 27.328-15.412 56.822-15.412 87.596 0 141.382 114.616 256 256 256 141.38 0 256-114.618 256-256 0-30.774-5.454-60.268-15.408-87.598 3.976 2.378 7.938 4.802 11.858 7.302 60.162 38.374 111.142 89.774 149.434 150.296-38.292 60.522-89.274 111.922-149.436 150.296z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye-minus", + "views", + "vision", + "visit" + ], + "defaultCode": 59856, + "grid": 16 + }, + { + "id": 209, + "paths": [ + "M945.942 14.058c-18.746-18.744-49.136-18.744-67.882 0l-202.164 202.164c-51.938-15.754-106.948-24.222-163.896-24.222-223.318 0-416.882 130.042-512 320 41.122 82.124 100.648 153.040 173.022 207.096l-158.962 158.962c-18.746 18.746-18.746 49.136 0 67.882 9.372 9.374 21.656 14.060 33.94 14.060s24.568-4.686 33.942-14.058l864-864c18.744-18.746 18.744-49.138 0-67.884zM416 320c42.24 0 78.082 27.294 90.92 65.196l-121.724 121.724c-37.902-12.838-65.196-48.68-65.196-90.92 0-53.020 42.98-96 96-96zM110.116 512c38.292-60.524 89.274-111.924 149.434-150.296 3.918-2.5 7.876-4.922 11.862-7.3-9.962 27.328-15.412 56.822-15.412 87.596 0 54.89 17.286 105.738 46.7 147.418l-60.924 60.924c-52.446-36.842-97.202-83.882-131.66-138.342z", + "M768 442c0-27.166-4.256-53.334-12.102-77.898l-321.808 321.808c24.568 7.842 50.742 12.090 77.91 12.090 141.382 0 256-114.618 256-256z", + "M830.026 289.974l-69.362 69.362c1.264 0.786 2.53 1.568 3.786 2.368 60.162 38.374 111.142 89.774 149.434 150.296-38.292 60.522-89.274 111.922-149.436 150.296-75.594 48.218-162.89 73.704-252.448 73.704-38.664 0-76.902-4.76-113.962-14.040l-76.894 76.894c59.718 21.462 123.95 33.146 190.856 33.146 223.31 0 416.876-130.042 512-320-45.022-89.916-112.118-166.396-193.974-222.026z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eye-blocked", + "views", + "vision", + "visit", + "banned", + "blocked", + "forbidden", + "private" + ], + "defaultCode": 59857, + "grid": 16 + }, + { + "id": 210, + "paths": [ + "M192 0v1024l320-320 320 320v-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bookmark", + "ribbon" + ], + "defaultCode": 59858, + "grid": 16 + }, + { + "id": 211, + "paths": [ + "M256 128v896l320-320 320 320v-896zM768 0h-640v896l64-64v-768h576z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bookmarks", + "ribbons" + ], + "defaultCode": 59859, + "grid": 16 + }, + { + "id": 212, + "paths": [ + "M512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.348 0-64-28.654-64-64s28.652-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.258c24.992 24.99 24.992 65.516 0 90.508-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.99-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51 0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.518-24.992 90.508 0 24.994 24.994 24.994 65.52 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0s-24.994-65.518 0-90.508l45.256-45.258z", + "M512 256c-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-141.384-114.616-256-256-256zM512 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sun", + "weather" + ], + "defaultCode": 59860, + "grid": 16 + }, + { + "id": 213, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM128 512c0-212.078 171.922-384 384-384v768c-212.078 0-384-171.922-384-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "contrast" + ], + "defaultCode": 59861, + "grid": 16 + }, + { + "id": 214, + "paths": [ + "M512 256c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.616-256-256-256zM512 672v-320c88.224 0 160 71.776 160 160s-71.776 160-160 160zM512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.256c24.992 24.992 24.992 65.516 0 90.51-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.992-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51 0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.516-24.992 90.508 0 24.994 24.994 24.994 65.518 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0-24.994-24.994-24.994-65.518 0-90.51l45.256-45.256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "brightness-contrast" + ], + "defaultCode": 59862, + "grid": 16 + }, + { + "id": 215, + "paths": [ + "M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538zM512 753.498l-223.462 117.48 42.676-248.83-180.786-176.222 249.84-36.304 111.732-226.396 111.736 226.396 249.836 36.304-180.788 176.222 42.678 248.83-223.462-117.48z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "star-empty", + "rate", + "star", + "favorite", + "bookmark" + ], + "defaultCode": 59863, + "grid": 16 + }, + { + "id": 216, + "paths": [ + "M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538zM512 753.498l-0.942 0.496 0.942-570.768 111.736 226.396 249.836 36.304-180.788 176.222 42.678 248.83-223.462-117.48z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "star-half", + "rate", + "star" + ], + "defaultCode": 59864, + "grid": 16 + }, + { + "id": 217, + "paths": [ + "M1024 397.050l-353.78-51.408-158.22-320.582-158.216 320.582-353.784 51.408 256 249.538-60.432 352.352 316.432-166.358 316.432 166.358-60.434-352.352 256.002-249.538z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "star-full", + "rate", + "star", + "favorite", + "bookmark" + ], + "defaultCode": 59865, + "grid": 16 + }, + { + "id": 218, + "paths": [ + "M755.188 64c-107.63 0-200.258 87.554-243.164 179-42.938-91.444-135.578-179-243.216-179-148.382 0-268.808 120.44-268.808 268.832 0 301.846 304.5 380.994 512.022 679.418 196.154-296.576 511.978-387.206 511.978-679.418 0-148.392-120.43-268.832-268.812-268.832z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "heart", + "like", + "love", + "favorite" + ], + "defaultCode": 59866, + "grid": 16 + }, + { + "id": 219, + "paths": [ + "M755.188 64c148.382 0 268.812 120.44 268.812 268.832 0 292.21-315.824 382.842-511.978 679.418-207.522-298.424-512.022-377.572-512.022-679.418 0-148.392 120.426-268.832 268.808-268.832 60.354 0 115.99 27.53 160.796 67.834l-77.604 124.166 224 128-128 320 352-384-224-128 61.896-92.846c35.42-21.768 75.21-35.154 117.292-35.154z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "heart-broken", + "heart", + "like", + "love" + ], + "defaultCode": 59867, + "grid": 16 + }, + { + "id": 220, + "paths": [ + "M576 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M576 256h-192c-35.346 0-64 28.654-64 64v320h64v384h80v-384h32v384h80v-384h64v-320c0-35.346-28.652-64-64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "man", + "male", + "gender", + "sex" + ], + "defaultCode": 59868, + "grid": 16 + }, + { + "id": 221, + "paths": [ + "M576 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M719 512l49-35.5-133.286-206.116c-5.92-8.98-15.958-14.384-26.714-14.384h-256c-10.756 0-20.792 5.404-26.714 14.384l-133.286 206.116 49 35.5 110.644-143.596 38.458 89.74-134.102 245.856h122.666l21.334 320h64v-320h32v320h64l21.334-320h122.666l-134.104-245.858 38.458-89.74 110.646 143.598z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "woman", + "female", + "gender", + "sex" + ], + "defaultCode": 59869, + "grid": 16 + }, + { + "id": 222, + "paths": [ + "M256 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M832 96c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z", + "M256 256h-192c-35.346 0-64 28.654-64 64v320h64v384h80v-384h32v384h80v-384h64v-320c0-35.346-28.652-64-64-64z", + "M975 512l49-35.5-133.286-206.116c-5.92-8.98-15.958-14.384-26.714-14.384h-256c-10.756 0-20.792 5.404-26.714 14.384l-133.286 206.116 49 35.5 110.644-143.596 38.458 89.74-134.102 245.856h122.666l21.334 320h64v-320h32v320h64l21.334-320h122.666l-134.104-245.858 38.458-89.74 110.646 143.598z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "man-woman", + "toilet", + "bathroom", + "sex", + "gender" + ], + "defaultCode": 59870, + "grid": 16 + }, + { + "id": 223, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM512 598.76c115.95 0 226.23-30.806 320-84.92-14.574 178.438-153.128 318.16-320 318.16-166.868 0-305.422-139.872-320-318.304 93.77 54.112 204.050 85.064 320 85.064zM256 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96zM640 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "happy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59871, + "grid": 16 + }, + { + "id": 224, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.348 0 64 42.98 64 96s-28.652 96-64 96-64-42.98-64-96 28.652-96 64-96zM320 256c35.346 0 64 42.98 64 96s-28.654 96-64 96-64-42.98-64-96 28.654-96 64-96zM512 896c-166.868 0-305.422-139.872-320-318.304 93.77 54.114 204.050 85.064 320 85.064s226.23-30.806 320-84.92c-14.574 178.438-153.128 318.16-320 318.16z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "happy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59872, + "grid": 16 + }, + { + "id": 225, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM704.098 627.26l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344s-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74s152.924-43.592 192.098-108.74z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "smile", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59873, + "grid": 16 + }, + { + "id": 226, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM512 832c-116.51 0-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74s152.924-43.592 192.098-108.74l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "smile", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59874, + "grid": 16 + }, + { + "id": 227, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM768 576v64h-64v96c0 53.020-42.98 96-96 96s-96-42.98-96-96v-96h-256v-64h512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tongue", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59875, + "grid": 16 + }, + { + "id": 228, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM768 640h-64v96c0 53.020-42.98 96-96 96s-96-42.98-96-96v-96h-256v-64h512v64zM704 384c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tongue", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59876, + "grid": 16 + }, + { + "id": 229, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM319.902 780.74l-82.328-49.396c55.962-93.070 157.916-155.344 274.426-155.344 116.508 0 218.462 62.274 274.426 155.344l-82.328 49.396c-39.174-65.148-110.542-108.74-192.098-108.74-81.558 0-152.924 43.592-192.098 108.74z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sad", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59877, + "grid": 16 + }, + { + "id": 230, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM704.098 780.74c-39.174-65.148-110.544-108.74-192.098-108.74-81.556 0-152.924 43.592-192.098 108.74l-82.328-49.396c55.96-93.070 157.916-155.344 274.426-155.344 116.508 0 218.464 62.274 274.426 155.344l-82.328 49.396z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sad", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59878, + "grid": 16 + }, + { + "id": 231, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM542.74 711.028c140.248-27.706 249.11-91.542 288.454-176.594-21.654 167.956-161.518 297.566-330.85 297.566-119.242 0-223.858-64.282-282.892-160.948 70.41 55.058 194.534 65.808 325.288 39.976zM640 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96zM352 371.5c-41.796 0-77.334 15.656-90.516 37.5-3.54-5.866-5.484-32.174-5.484-38.75 0-31.066 42.98-56.25 96-56.25s96 25.184 96 56.25c0 6.576-1.944 32.884-5.484 38.75-13.182-21.844-48.72-37.5-90.516-37.5z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wink", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59879, + "grid": 16 + }, + { + "id": 232, + "paths": [ + "M512 0c-282.77 0-512 229.228-512 512 0 282.77 229.228 512 512 512 282.77 0 512-229.23 512-512 0-282.772-229.23-512-512-512zM704 256c35.346 0 64 42.98 64 96s-28.654 96-64 96-64-42.98-64-96 28.654-96 64-96zM352 312.062c59.646 0 102 22.332 102 57.282 0 7.398 3.812 42.994-0.17 49.594-14.828-24.576-54.81-42.188-101.83-42.188s-87.002 17.612-101.83 42.188c-3.982-6.6-0.17-42.196-0.17-49.594 0-34.95 42.354-57.282 102-57.282zM500.344 832c-119.242 0-223.858-64.28-282.892-160.952 70.41 55.060 194.534 65.81 325.288 39.978 140.248-27.706 249.11-91.542 288.454-176.594-21.654 167.96-161.518 297.568-330.85 297.568z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wink", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59880, + "grid": 16 + }, + { + "id": 233, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM192 512v64c0 140.8 115.2 256 256 256h128c140.8 0 256-115.2 256-256v-64h-640zM384 756.988c-26.538-9.458-50.924-24.822-71.544-45.446-36.406-36.402-56.456-84.54-56.456-135.542h128v180.988zM576 768h-128v-192h128v192zM711.544 711.542c-20.624 20.624-45.010 35.988-71.544 45.446v-180.988h128c0 51.002-20.048 99.14-56.456 135.542zM225.352 384c0.002 0 0 0 0 0 9.768 0 18.108-7.056 19.724-16.69 6.158-36.684 37.668-63.31 74.924-63.31s68.766 26.626 74.924 63.31c1.616 9.632 9.956 16.69 19.722 16.69 9.768 0 18.108-7.056 19.724-16.688 1.082-6.436 1.628-12.934 1.628-19.312 0-63.962-52.038-116-116-116s-116 52.038-116 116c0 6.378 0.548 12.876 1.628 19.312 1.62 9.632 9.96 16.688 19.726 16.688zM609.352 384c0.002 0 0 0 0 0 9.77 0 18.112-7.056 19.724-16.69 6.158-36.684 37.668-63.31 74.924-63.31s68.766 26.626 74.924 63.31c1.616 9.632 9.958 16.69 19.722 16.69s18.108-7.056 19.722-16.688c1.082-6.436 1.628-12.934 1.628-19.312 0-63.962-52.038-116-116-116s-116 52.038-116 116c0 6.378 0.544 12.876 1.626 19.312 1.624 9.632 9.964 16.688 19.73 16.688z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "grin", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59881, + "grid": 16 + }, + { + "id": 234, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM704 236c63.962 0 116 52.038 116 116 0 6.378-0.546 12.876-1.628 19.312-1.618 9.632-9.958 16.688-19.724 16.688s-18.108-7.056-19.722-16.69c-6.16-36.684-37.67-53.31-74.926-53.31s-68.766 16.626-74.924 53.31c-1.616 9.632-9.956 16.69-19.722 16.69-0.002 0 0 0-0.002 0-9.766 0-18.106-7.056-19.722-16.688-1.084-6.436-1.63-12.934-1.63-19.312 0-63.962 52.038-116 116-116zM320 236c63.962 0 116 52.038 116 116 0 6.378-0.548 12.876-1.628 19.312-1.618 9.632-9.956 16.688-19.724 16.688s-18.106-7.056-19.722-16.69c-6.16-36.684-37.67-53.31-74.926-53.31s-68.766 16.626-74.924 53.31c-1.616 9.632-9.956 16.69-19.722 16.69 0 0 0 0 0 0-9.766 0-18.106-7.056-19.724-16.688-1.082-6.436-1.63-12.934-1.63-19.312 0-63.962 52.038-116 116-116zM192 576h192v247.846c-110.094-28.606-192-129.124-192-247.846zM448 832v-256h128v256h-128zM640 823.846v-247.846h192c0 118.722-81.904 219.24-192 247.846z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "grin", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59882, + "grid": 16 + }, + { + "id": 235, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM800 256c17.6 0 32 14.4 32 32v96c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64h-128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-96c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v32h128v-32c0-17.6 14.4-32 32-32h192zM512 768c93.208 0 174.772-49.818 219.546-124.278l54.88 32.934c-55.966 93.070-157.916 155.344-274.426 155.344-48.458 0-94.384-10.796-135.54-30.082l33.162-55.278c31.354 13.714 65.964 21.36 102.378 21.36z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cool", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59883, + "grid": 16 + }, + { + "id": 236, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM512 832c-48.458 0-94.384-10.796-135.542-30.082l33.162-55.276c31.356 13.712 65.966 21.358 102.38 21.358 93.208 0 174.772-49.818 219.542-124.278l54.882 32.934c-55.964 93.070-157.914 155.344-274.424 155.344zM832 384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64h-128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-96c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v32h128v-32c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cool", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59884, + "grid": 16 + }, + { + "id": 237, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM704.098 780.74c-39.174-65.148-110.544-108.74-192.098-108.74-81.556 0-152.924 43.592-192.098 108.74l-82.328-49.396c55.96-93.070 157.916-155.344 274.426-155.344 116.508 0 218.464 62.274 274.426 155.344l-82.328 49.396zM767.042 280.24c4.284 17.144-6.14 34.518-23.282 38.804-17.626 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-1.17 0.036-2.33 0.098-3.484 2.032-47.454 45.212-78.946 81.592-97.138 34.742-17.37 69.102-26.060 70.548-26.422 17.146-4.288 34.518 6.138 38.806 23.284zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "angry", + "emoticon", + "smiley", + "face", + "rage" + ], + "defaultCode": 59885, + "grid": 16 + }, + { + "id": 238, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM576.094 380.516c2.032-47.454 45.21-78.948 81.592-97.138 34.742-17.372 69.104-26.060 70.548-26.422 17.146-4.288 34.52 6.138 38.806 23.284s-6.138 34.518-23.284 38.806c-17.624 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0.002-1.17 0.038-2.332 0.1-3.486zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804zM704.098 780.74c-39.174-65.148-110.544-108.74-192.098-108.74-81.556 0-152.924 43.592-192.098 108.74l-82.328-49.396c55.96-93.070 157.916-155.344 274.426-155.344 116.508 0 218.464 62.274 274.426 155.344l-82.328 49.396z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "angry", + "emoticon", + "smiley", + "face", + "rage" + ], + "defaultCode": 59886, + "grid": 16 + }, + { + "id": 239, + "paths": [ + "M639.996 448c-35.346 0-64-28.654-63.998-64.002 0-1.17 0.036-2.33 0.098-3.484 2.032-47.454 45.212-78.946 81.592-97.138 34.742-17.37 69.102-26.060 70.548-26.422 17.146-4.288 34.518 6.138 38.806 23.284 4.284 17.146-6.14 34.518-23.284 38.806-17.626 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64zM280.242 319.044c-17.144-4.286-27.568-21.66-23.282-38.804 4.286-17.146 21.66-27.572 38.806-23.284 1.444 0.362 35.806 9.050 70.548 26.422 36.382 18.19 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.316 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.312-16.9-56.936-21.35zM512 736c81.554 0 152.924-43.592 192.098-108.74l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344s-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74zM1024 64c0-45.516-9.524-88.8-26.652-128-33.576 76.836-96.448 137.932-174.494 169.178-86.194-65.96-193.936-105.178-310.854-105.178s-224.66 39.218-310.854 105.178c-78.048-31.246-140.918-92.342-174.494-169.178-17.128 39.2-26.652 82.484-26.652 128 0 73.574 24.85 141.328 66.588 195.378-42.37 74.542-66.588 160.75-66.588 252.622 0 282.77 229.23 512 512 512s512-229.23 512-512c0-91.872-24.218-178.080-66.588-252.622 41.738-54.050 66.588-121.804 66.588-195.378zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "evil", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59887, + "grid": 16 + }, + { + "id": 240, + "paths": [ + "M1024 64c0-45.516-9.524-88.8-26.652-128-33.576 76.836-96.448 137.932-174.494 169.178-86.194-65.96-193.936-105.178-310.854-105.178s-224.66 39.218-310.854 105.178c-78.048-31.246-140.918-92.342-174.494-169.178-17.128 39.2-26.652 82.484-26.652 128 0 73.574 24.85 141.328 66.588 195.378-42.37 74.542-66.588 160.75-66.588 252.622 0 282.77 229.23 512 512 512s512-229.23 512-512c0-91.872-24.218-178.080-66.588-252.622 41.738-54.050 66.588-121.804 66.588-195.378zM576.094 380.516c2.032-47.454 45.21-78.948 81.592-97.138 34.742-17.372 69.104-26.060 70.548-26.422 17.146-4.288 34.52 6.138 38.806 23.284s-6.138 34.518-23.284 38.806c-17.624 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0.002-1.17 0.038-2.332 0.1-3.486zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804zM512 832c-116.51 0-218.464-62.274-274.426-155.344l82.328-49.396c39.174 65.148 110.542 108.74 192.098 108.74 81.554 0 152.924-43.592 192.098-108.74l82.328 49.396c-55.962 93.070-157.916 155.344-274.426 155.344z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "evil", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59888, + "grid": 16 + }, + { + "id": 241, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM384 704c0-70.692 57.308-128 128-128s128 57.308 128 128c0 70.692-57.308 128-128 128s-128-57.308-128-128zM640 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96zM256 352c0-53.019 28.654-96 64-96s64 42.981 64 96c0 53.019-28.654 96-64 96s-64-42.981-64-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shocked", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59889, + "grid": 16 + }, + { + "id": 242, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 448c-35.346 0-64-42.98-64-96s28.654-96 64-96 64 42.98 64 96-28.654 96-64 96zM512 832c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128s-57.308 128-128 128zM704 448c-35.346 0-64-42.98-64-96s28.654-96 64-96 64 42.98 64 96-28.654 96-64 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shocked", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59890, + "grid": 16 + }, + { + "id": 243, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M384 416c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z", + "M352 320c53.020 0 96 42.98 96 96s-42.98 96-96 96-96-42.98-96-96 42.98-96 96-96zM352 256c-88.224 0-160 71.776-160 160s71.776 160 160 160 160-71.776 160-160-71.776-160-160-160v0z", + "M704 416c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z", + "M672 320c53.020 0 96 42.98 96 96s-42.98 96-96 96-96-42.98-96-96 42.98-96 96-96zM672 256c-88.224 0-160 71.776-160 160s71.776 160 160 160 160-71.776 160-160-71.776-160-160-160v0z", + "M384 704h256v64h-256v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "baffled", + "emoticon", + "smiley", + "shocked", + "face" + ], + "defaultCode": 59891, + "grid": 16 + }, + { + "id": 244, + "paths": [ + "M384 416c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32z", + "M704 416c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM256 416c0-53.020 42.98-96 96-96s96 42.98 96 96-42.98 96-96 96-96-42.98-96-96zM640 768h-256v-64h256v64zM672 512c-53.020 0-96-42.98-96-96s42.98-96 96-96 96 42.98 96 96-42.98 96-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "baffled", + "emoticon", + "smiley", + "shocked", + "face" + ], + "defaultCode": 59892, + "grid": 16 + }, + { + "id": 245, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM726.106 640h64.864c9.246 72.506-32.452 144.53-103.958 170.56-82.904 30.176-174.9-12.716-205.080-95.616-18.108-49.744-73.306-75.482-123.048-57.372-45.562 16.588-70.956 64.298-60.988 110.424h-64.86c-9.242-72.508 32.45-144.528 103.956-170.56 82.904-30.178 174.902 12.716 205.082 95.614 18.104 49.748 73.306 75.482 123.044 57.372 45.562-16.584 70.956-64.298 60.988-110.422z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "confused", + "emoticon", + "smiley", + "face", + "bewildered" + ], + "defaultCode": 59893, + "grid": 16 + }, + { + "id": 246, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64zM687.010 810.56c-82.902 30.18-174.9-12.712-205.080-95.614-18.108-49.742-73.306-75.478-123.048-57.372-45.562 16.588-70.958 64.296-60.988 110.424h-64.86c-9.244-72.508 32.45-144.532 103.956-170.56 82.904-30.18 174.902 12.712 205.082 95.614 18.108 49.742 73.306 75.476 123.046 57.37 45.562-16.584 70.958-64.294 60.988-110.422h64.864c9.24 72.506-32.454 144.532-103.96 170.56z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "confused", + "emoticon", + "smiley", + "face", + "bewildered" + ], + "defaultCode": 59894, + "grid": 16 + }, + { + "id": 247, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM640 320c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM384 704h256v64h-256v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "neutral", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59895, + "grid": 16 + }, + { + "id": 248, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.226 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM640 768h-256v-64h256v64zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64c0-35.346 28.654-64 64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "neutral", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59896, + "grid": 16 + }, + { + "id": 249, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64z", + "M675.882 540.118c-37.49-37.49-98.276-37.49-135.766 0s-37.49 98.276 0 135.766c1.204 1.204 2.434 2.368 3.684 3.492 86.528 78.512 288.2-1.842 288.2-103.376-62 40-110.45 9.786-156.118-35.882z", + "M348.118 540.118c37.49-37.49 98.276-37.49 135.766 0s37.49 98.276 0 135.766c-1.204 1.204-2.434 2.368-3.684 3.492-86.528 78.512-288.2-1.842-288.2-103.376 62 40 110.45 9.786 156.118-35.882z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hipster", + "emoticon", + "smiley", + "mustache", + "face" + ], + "defaultCode": 59897, + "grid": 16 + }, + { + "id": 250, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM320 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM543.8 679.376c-1.25-1.124-2.48-2.29-3.684-3.492-18.74-18.74-28.112-43.3-28.118-67.864-0.004 24.562-9.376 49.124-28.118 67.864-1.204 1.204-2.434 2.368-3.684 3.492-86.524 78.512-288.196-1.842-288.196-103.376 62 40 110.45 9.786 156.118-35.882 37.49-37.49 98.276-37.49 135.766 0 18.74 18.74 28.112 43.3 28.118 67.864 0.004-24.562 9.376-49.124 28.118-67.864 37.49-37.49 98.276-37.49 135.766 0 45.664 45.668 94.114 75.882 156.114 35.882 0 101.534-201.672 181.888-288.2 103.376z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hipster", + "emoticon", + "smiley", + "mustache", + "face" + ], + "defaultCode": 59898, + "grid": 16 + }, + { + "id": 251, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM745.74 601.62l22.488 76.776-437.008 128.002-22.488-76.776zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 320c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wondering", + "emoticon", + "smiley", + "face", + "question" + ], + "defaultCode": 59899, + "grid": 16 + }, + { + "id": 252, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM704 256c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM256 320c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM331.244 806.386l-22.488-76.774 437-128 22.488 76.774-437 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wondering", + "emoticon", + "smiley", + "face", + "question" + ], + "defaultCode": 59900, + "grid": 16 + }, + { + "id": 253, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M640 672c0 88.366-57.308 160-128.002 160s-128.002-71.634-128.002-160c0-88.366 57.308-160 128.002-160s128.002 71.634 128.002 160z", + "M416 340c-8.19 0-16.378-3.124-22.626-9.374-19.334-19.332-63.412-19.332-82.746 0-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.496 12.498 32.758 0 45.254-6.248 6.25-14.438 9.374-22.628 9.374z", + "M736 340c-8.19 0-16.378-3.124-22.626-9.374-19.332-19.332-63.414-19.332-82.746 0-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.496 12.498 32.758 0 45.254-6.248 6.25-14.438 9.374-22.628 9.374z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sleepy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59901, + "grid": 16 + }, + { + "id": 254, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM310.628 330.626c-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.496 12.498 32.758 0 45.254-6.248 6.25-14.438 9.374-22.628 9.374s-16.378-3.124-22.626-9.374c-19.334-19.332-63.412-19.332-82.746 0zM511.998 832c-70.694 0-128.002-71.634-128.002-160s57.308-160 128.002-160 128.002 71.634 128.002 160-57.308 160-128.002 160zM758.628 330.626c-6.248 6.25-14.438 9.374-22.628 9.374s-16.378-3.124-22.626-9.374c-19.332-19.332-63.414-19.332-82.746 0-12.496 12.498-32.758 12.498-45.254 0-12.498-12.496-12.498-32.758 0-45.254 44.528-44.53 128.726-44.53 173.254 0 12.498 12.498 12.498 32.758 0 45.254z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sleepy", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59902, + "grid": 16 + }, + { + "id": 255, + "paths": [ + "M366.312 283.378c-34.742-17.37-69.102-26.060-70.548-26.422-17.146-4.288-34.518 6.138-38.806 23.284-4.284 17.144 6.14 34.518 23.282 38.804 17.626 4.45 38.522 12.12 56.936 21.35-10.648 11.43-17.174 26.752-17.174 43.606 0 35.346 28.654 64 64 64s64-28.654 64-64c0-1.17-0.036-2.33-0.098-3.484-2.032-47.454-45.212-78.946-81.592-97.138z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM236.498 823.664c10.706 5.324 22.756 8.336 35.502 8.336h480c12.746 0 24.796-3.012 35.502-8.338-73.378 64.914-169.828 104.338-275.502 104.338-105.672 0-202.124-39.424-275.502-104.336zM256 752v-96c0-8.674 7.328-16 16-16h112v128h-112c-8.672 0-16-7.326-16-16zM448 768v-128h128v128h-128zM640 768v-128h112c8.674 0 16 7.326 16 16v96c0 8.674-7.326 16-16 16h-112zM823.662 787.502c5.326-10.706 8.338-22.756 8.338-35.502v-96c0-44.112-35.888-80-80-80h-480c-44.112 0-80 35.888-80 80v96c0 12.746 3.012 24.796 8.336 35.502-64.912-73.378-104.336-169.828-104.336-275.502 0-229.75 186.25-416 416-416s416 186.25 416 416c0 105.674-39.424 202.124-104.338 275.502z", + "M728.236 256.956c-1.448 0.362-35.806 9.052-70.548 26.422-36.378 18.192-79.558 49.684-81.592 97.138-0.060 1.154-0.098 2.314-0.098 3.484 0 35.346 28.654 64 64 64s64-28.654 64-64c0-16.854-6.526-32.176-17.174-43.606 18.414-9.23 39.31-16.9 56.936-21.35 17.142-4.286 27.566-21.66 23.284-38.804-4.29-17.146-21.662-27.572-38.808-23.284z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "frustrated", + "emoticon", + "smiley", + "face", + "angry" + ], + "defaultCode": 59903, + "grid": 16 + }, + { + "id": 256, + "paths": [ + "M256 656v96c0 8.674 7.328 16 16 16h112v-128h-112c-8.672 0-16 7.326-16 16z", + "M448 640h128v128h-128v-128z", + "M752 640h-112v128h112c8.674 0 16-7.326 16-16v-96c0-8.674-7.326-16-16-16z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM576.096 380.516c2.034-47.454 45.212-78.946 81.592-97.138 34.742-17.37 69.102-26.060 70.548-26.422 17.146-4.288 34.518 6.138 38.806 23.284 4.284 17.144-6.14 34.518-23.284 38.804-17.624 4.45-38.522 12.12-56.936 21.35 10.648 11.43 17.174 26.752 17.174 43.606 0 35.346-28.654 64-64 64s-64-28.654-64-64c0.002-1.17 0.040-2.33 0.1-3.484zM256.958 280.24c4.288-17.146 21.66-27.572 38.806-23.284 1.446 0.362 35.806 9.052 70.548 26.422 36.38 18.192 79.56 49.684 81.592 97.138 0.062 1.154 0.098 2.314 0.098 3.484 0 35.346-28.654 64-64 64s-64-28.654-64-64c0-16.854 6.526-32.176 17.174-43.606-18.414-9.23-39.31-16.9-56.936-21.35-17.142-4.286-27.566-21.66-23.282-38.804zM832 752c0 44.112-35.888 80-80 80h-480c-44.112 0-80-35.888-80-80v-96c0-44.112 35.888-80 80-80h480c44.112 0 80 35.888 80 80v96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "frustrated", + "emoticon", + "smiley", + "face", + "angry" + ], + "defaultCode": 59904, + "grid": 16 + }, + { + "id": 257, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M800 384h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32z", + "M352 384h-128c-17.672 0-32-14.328-32-32s14.328-32 32-32h128c17.672 0 32 14.328 32 32s-14.328 32-32 32z", + "M608 856c-8.19 0-16.378-3.124-22.626-9.374-4.582-4.582-29.42-14.626-73.374-14.626s-68.79 10.044-73.374 14.626c-12.496 12.496-32.758 12.496-45.254 0-12.498-12.496-12.498-32.758 0-45.254 30.122-30.12 92.994-33.372 118.628-33.372 25.632 0 88.506 3.252 118.626 33.374 12.498 12.496 12.498 32.758 0 45.254-6.248 6.248-14.436 9.372-22.626 9.372z", + "M736 576c-17.674 0-32-14.326-32-32v-64c0-17.672 14.326-32 32-32s32 14.328 32 32v64c0 17.674-14.326 32-32 32z", + "M736 768c-17.674 0-32-14.326-32-32v-64c0-17.674 14.326-32 32-32s32 14.326 32 32v64c0 17.674-14.326 32-32 32z", + "M288 576c-17.672 0-32-14.326-32-32v-64c0-17.672 14.328-32 32-32s32 14.328 32 32v64c0 17.674-14.328 32-32 32z", + "M288 768c-17.672 0-32-14.326-32-32v-64c0-17.674 14.328-32 32-32s32 14.326 32 32v64c0 17.674-14.328 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "crying", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59905, + "grid": 16 + }, + { + "id": 258, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM320 736c0 17.674-14.328 32-32 32s-32-14.326-32-32v-64c0-17.674 14.328-32 32-32s32 14.326 32 32v64zM320 544c0 17.674-14.328 32-32 32s-32-14.326-32-32v-64c0-17.672 14.328-32 32-32s32 14.328 32 32v64zM352 384h-128c-17.672 0-32-14.328-32-32s14.328-32 32-32h128c17.672 0 32 14.328 32 32s-14.328 32-32 32zM630.626 846.626c-6.248 6.25-14.436 9.374-22.626 9.374s-16.378-3.124-22.626-9.374c-4.582-4.582-29.42-14.626-73.374-14.626s-68.79 10.044-73.374 14.626c-12.496 12.496-32.758 12.496-45.254 0-12.498-12.496-12.498-32.758 0-45.254 30.122-30.12 92.994-33.372 118.628-33.372 25.632 0 88.506 3.252 118.626 33.374 12.498 12.496 12.498 32.756 0 45.252zM768 736c0 17.674-14.326 32-32 32s-32-14.326-32-32v-64c0-17.674 14.326-32 32-32s32 14.326 32 32v64zM768 544c0 17.674-14.326 32-32 32s-32-14.326-32-32v-64c0-17.672 14.326-32 32-32s32 14.328 32 32v64zM800 384h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "crying", + "emoticon", + "smiley", + "face" + ], + "defaultCode": 59906, + "grid": 16 + }, + { + "id": 259, + "paths": [ + "M960 608v-160c0-52.934-43.066-96-96-96-17.104 0-33.176 4.494-47.098 12.368-17.076-26.664-46.958-44.368-80.902-44.368-24.564 0-47.004 9.274-64 24.504-16.996-15.23-39.436-24.504-64-24.504-11.214 0-21.986 1.934-32 5.484v-229.484c0-52.934-43.066-96-96-96s-96 43.066-96 96v394.676l-176.018-93.836c-14.536-8.4-31.126-12.84-47.982-12.84-52.934 0-96 43.066-96 96 0 26.368 10.472 50.954 29.49 69.226 0.248 0.238 0.496 0.47 0.75 0.7l239.17 218.074h-45.41c-17.672 0-32 14.326-32 32v192c0 17.674 14.328 32 32 32h640c17.674 0 32-14.326 32-32v-192c0-17.674-14.326-32-32-32h-44.222l72.844-145.69c2.222-4.442 3.378-9.342 3.378-14.31zM896 864c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32zM896 600.446l-83.776 167.554h-383.826l-290.818-265.166c-6.18-6.070-9.58-14.164-9.58-22.834 0-17.644 14.356-32 32-32 5.46 0 10.612 1.31 15.324 3.894 0.53 0.324 1.070 0.632 1.622 0.926l224 119.416c9.92 5.288 21.884 4.986 31.52-0.8 9.638-5.782 15.534-16.196 15.534-27.436v-448c0-17.644 14.356-32 32-32s32 14.356 32 32v320c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v32c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-up", + "finger", + "direction", + "hand" + ], + "defaultCode": 59907, + "grid": 16 + }, + { + "id": 260, + "paths": [ + "M416 960h160c52.934 0 96-43.066 96-96 0-17.104-4.494-33.176-12.368-47.098 26.664-17.076 44.368-46.958 44.368-80.902 0-24.564-9.276-47.004-24.504-64 15.228-16.996 24.504-39.436 24.504-64 0-11.214-1.934-21.986-5.484-32h229.484c52.934 0 96-43.066 96-96s-43.066-96-96-96h-394.676l93.836-176.018c8.4-14.536 12.84-31.126 12.84-47.982 0-52.934-43.066-96-96-96-26.368 0-50.954 10.472-69.226 29.49-0.238 0.248-0.47 0.496-0.7 0.75l-218.074 239.17v-45.41c0-17.672-14.326-32-32-32h-192c-17.674 0-32 14.328-32 32v640c0 17.674 14.326 32 32 32h192c17.674 0 32-14.326 32-32v-44.222l145.69 72.844c4.444 2.222 9.342 3.378 14.31 3.378zM160 896c-17.674 0-32-14.326-32-32s14.326-32 32-32 32 14.326 32 32-14.326 32-32 32zM423.556 896l-167.556-83.778v-383.824l265.168-290.818c6.066-6.18 14.162-9.58 22.832-9.58 17.644 0 32 14.356 32 32 0 5.46-1.308 10.612-3.894 15.324-0.324 0.53-0.632 1.070-0.926 1.622l-119.418 224c-5.288 9.92-4.986 21.884 0.8 31.52 5.784 9.638 16.198 15.534 27.438 15.534h448c17.644 0 32 14.356 32 32s-14.356 32-32 32h-320c-17.672 0-32 14.326-32 32s14.328 32 32 32c17.644 0 32 14.356 32 32s-14.356 32-32 32c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.644 0 32 14.356 32 32s-14.356 32-32 32h-32c-17.674 0-32 14.326-32 32s14.326 32 32 32c17.644 0 32 14.356 32 32s-14.356 32-32 32h-152.444z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-right", + "finger", + "direction", + "hand" + ], + "defaultCode": 59908, + "grid": 16 + }, + { + "id": 261, + "paths": [ + "M960 416v160c0 52.934-43.066 96-96 96-17.104 0-33.176-4.494-47.098-12.368-17.076 26.662-46.96 44.368-80.902 44.368-24.564 0-47.004-9.276-64-24.504-16.996 15.228-39.436 24.504-64 24.504-11.214 0-21.986-1.934-32-5.484v229.484c0 52.934-43.066 96-96 96-52.936 0-96-43.066-96-96v-394.676l-176.018 93.836c-14.538 8.398-31.126 12.84-47.982 12.84-52.936 0-96-43.066-96-96 0-26.368 10.472-50.952 29.488-69.226 0.248-0.238 0.496-0.47 0.75-0.7l239.17-218.074h-45.408c-17.674 0-32-14.326-32-32v-192c0-17.674 14.326-32 32-32h640c17.674 0 32 14.326 32 32v192c0 17.674-14.326 32-32 32h-44.222l72.842 145.69c2.224 4.442 3.38 9.342 3.38 14.31zM896 160c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM896 423.554l-83.778-167.554h-383.824l-290.82 265.168c-6.18 6.066-9.578 14.162-9.578 22.832 0 17.644 14.356 32 32 32 5.458 0 10.612-1.308 15.324-3.894 0.53-0.324 1.070-0.632 1.622-0.926l224-119.416c9.92-5.288 21.884-4.986 31.52 0.8 9.638 5.782 15.534 16.196 15.534 27.436v448c0 17.644 14.356 32 32 32s32-14.356 32-32v-320c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-32c0-17.674 14.326-32 32-32s32 14.326 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-down", + "finger", + "direction", + "hand" + ], + "defaultCode": 59909, + "grid": 16 + }, + { + "id": 262, + "paths": [ + "M608 960h-160c-52.934 0-96-43.066-96-96 0-17.104 4.494-33.176 12.368-47.098-26.662-17.076-44.368-46.958-44.368-80.902 0-24.564 9.276-47.004 24.504-64-15.228-16.996-24.504-39.436-24.504-64 0-11.214 1.934-21.986 5.484-32h-229.484c-52.934 0-96-43.066-96-96 0-52.936 43.066-96 96-96h394.676l-93.836-176.018c-8.398-14.536-12.84-31.126-12.84-47.982 0-52.936 43.066-96 96-96 26.368 0 50.952 10.472 69.224 29.488 0.238 0.248 0.472 0.496 0.7 0.75l218.076 239.17v-45.408c0-17.674 14.326-32 32-32h192c17.674 0 32 14.326 32 32v640c0 17.674-14.326 32-32 32h-192c-17.674 0-32-14.326-32-32v-44.222l-145.69 72.844c-4.442 2.222-9.34 3.378-14.31 3.378zM864 896c17.674 0 32-14.326 32-32s-14.326-32-32-32-32 14.326-32 32 14.326 32 32 32zM600.446 896l167.554-83.778v-383.824l-265.168-290.82c-6.066-6.18-14.162-9.578-22.832-9.578-17.644 0-32 14.356-32 32 0 5.458 1.308 10.612 3.894 15.324 0.324 0.53 0.632 1.070 0.926 1.622l119.416 224c5.29 9.92 4.988 21.884-0.798 31.52-5.784 9.638-16.198 15.534-27.438 15.534h-448c-17.644 0-32 14.356-32 32s14.356 32 32 32h320c17.672 0 32 14.326 32 32s-14.328 32-32 32c-17.644 0-32 14.356-32 32s14.356 32 32 32c17.674 0 32 14.326 32 32s-14.326 32-32 32c-17.644 0-32 14.356-32 32s14.356 32 32 32h32c17.674 0 32 14.326 32 32s-14.326 32-32 32c-17.644 0-32 14.356-32 32s14.356 32 32 32h152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "point-left", + "finger", + "direction", + "hand" + ], + "defaultCode": 59910, + "grid": 16 + }, + { + "id": 263, + "paths": [ + "M512 92.774l429.102 855.226h-858.206l429.104-855.226zM512 0c-22.070 0-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.3 0 96.792-48.708 63.3-108.24h0.002l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648v0z", + "M576 832c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z", + "M512 704c-35.346 0-64-28.654-64-64v-192c0-35.346 28.654-64 64-64s64 28.654 64 64v192c0 35.346-28.654 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "warning", + "sign" + ], + "defaultCode": 59911, + "grid": 16 + }, + { + "id": 264, + "paths": [ + "M512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156s183.038 121.844 294.156 121.844c111.118 0 215.584-43.272 294.156-121.844s121.844-183.038 121.844-294.156c0-111.118-43.272-215.584-121.844-294.156s-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512zM448 704h128v128h-128zM448 192h128v384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "notification", + "warning", + "notice", + "note", + "exclamation" + ], + "defaultCode": 59912, + "grid": 16 + }, + { + "id": 265, + "paths": [ + "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156s183.038 121.844 294.156 121.844c111.118 0 215.584-43.272 294.156-121.844s121.844-183.038 121.844-294.156c0-111.118-43.272-215.584-121.844-294.156s-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512s229.23-512 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "question", + "help", + "support" + ], + "defaultCode": 59913, + "grid": 16 + }, + { + "id": 266, + "paths": [ + "M992 384h-352v-352c0-17.672-14.328-32-32-32h-192c-17.672 0-32 14.328-32 32v352h-352c-17.672 0-32 14.328-32 32v192c0 17.672 14.328 32 32 32h352v352c0 17.672 14.328 32 32 32h192c17.672 0 32-14.328 32-32v-352h352c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "plus", + "add", + "sum" + ], + "defaultCode": 59914, + "grid": 16 + }, + { + "id": 267, + "paths": [ + "M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "minus", + "subtract", + "minimize", + "line" + ], + "defaultCode": 59915, + "grid": 16 + }, + { + "id": 268, + "paths": [ + "M448 304c0-26.4 21.6-48 48-48h32c26.4 0 48 21.6 48 48v32c0 26.4-21.6 48-48 48h-32c-26.4 0-48-21.6-48-48v-32z", + "M640 768h-256v-64h64v-192h-64v-64h192v256h64z", + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "info", + "information" + ], + "defaultCode": 59916, + "grid": 16 + }, + { + "id": 269, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z", + "M672 256l-160 160-160-160-96 96 160 160-160 160 96 96 160-160 160 160 96-96-160-160 160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cancel-circle", + "close", + "remove", + "delete" + ], + "defaultCode": 59917, + "grid": 16 + }, + { + "id": 270, + "paths": [ + "M874.040 149.96c-96.706-96.702-225.28-149.96-362.040-149.96s-265.334 53.258-362.040 149.96c-96.702 96.706-149.96 225.28-149.96 362.040s53.258 265.334 149.96 362.040c96.706 96.702 225.28 149.96 362.040 149.96s265.334-53.258 362.040-149.96c96.702-96.706 149.96-225.28 149.96-362.040s-53.258-265.334-149.96-362.040zM896 512c0 82.814-26.354 159.588-71.112 222.38l-535.266-535.268c62.792-44.758 139.564-71.112 222.378-71.112 211.738 0 384 172.262 384 384zM128 512c0-82.814 26.354-159.586 71.112-222.378l535.27 535.268c-62.794 44.756-139.568 71.11-222.382 71.11-211.738 0-384-172.262-384-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blocked", + "forbidden", + "denied", + "banned" + ], + "defaultCode": 59918, + "grid": 16 + }, + { + "id": 271, + "paths": [ + "M1014.662 822.66c-0.004-0.004-0.008-0.008-0.012-0.010l-310.644-310.65 310.644-310.65c0.004-0.004 0.008-0.006 0.012-0.010 3.344-3.346 5.762-7.254 7.312-11.416 4.246-11.376 1.824-24.682-7.324-33.83l-146.746-146.746c-9.148-9.146-22.45-11.566-33.828-7.32-4.16 1.55-8.070 3.968-11.418 7.31 0 0.004-0.004 0.006-0.008 0.010l-310.648 310.652-310.648-310.65c-0.004-0.004-0.006-0.006-0.010-0.010-3.346-3.342-7.254-5.76-11.414-7.31-11.38-4.248-24.682-1.826-33.83 7.32l-146.748 146.748c-9.148 9.148-11.568 22.452-7.322 33.828 1.552 4.16 3.97 8.072 7.312 11.416 0.004 0.002 0.006 0.006 0.010 0.010l310.65 310.648-310.65 310.652c-0.002 0.004-0.006 0.006-0.008 0.010-3.342 3.346-5.76 7.254-7.314 11.414-4.248 11.376-1.826 24.682 7.322 33.83l146.748 146.746c9.15 9.148 22.452 11.568 33.83 7.322 4.16-1.552 8.070-3.97 11.416-7.312 0.002-0.004 0.006-0.006 0.010-0.010l310.648-310.65 310.648 310.65c0.004 0.002 0.008 0.006 0.012 0.008 3.348 3.344 7.254 5.762 11.414 7.314 11.378 4.246 24.684 1.826 33.828-7.322l146.746-146.748c9.148-9.148 11.57-22.454 7.324-33.83-1.552-4.16-3.97-8.068-7.314-11.414z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "cross", + "cancel", + "close", + "quit", + "remove" + ], + "defaultCode": 59919, + "grid": 16 + }, + { + "id": 272, + "paths": [ + "M864 128l-480 480-224-224-160 160 384 384 640-640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkmark", + "tick", + "correct", + "accept", + "ok" + ], + "defaultCode": 59920, + "grid": 16 + }, + { + "id": 273, + "paths": [ + "M397.434 917.696l-397.868-391.6 197.378-194.27 200.49 197.332 429.62-422.852 197.378 194.27-626.998 617.12zM107.912 526.096l289.524 284.962 518.656-510.482-89.036-87.632-429.62 422.852-200.49-197.334-89.034 87.634z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkmark", + "tick", + "correct", + "accept", + "ok" + ], + "defaultCode": 59921, + "grid": 16 + }, + { + "id": 274, + "paths": [ + "M128 256h128v192h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192zM128 64h128v128h-128v-128zM960 64v-64h-192c-35.202 0-64 28.8-64 64v320c0 35.2 28.798 64 64 64h192v-64h-192v-320h192zM640 160v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64zM576 384h-128v-128h128v128zM576 192h-128v-128h128v128zM832 576l-416 448-224-288 82-70 142 148 352-302z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spell-check", + "spelling", + "correct" + ], + "defaultCode": 59922, + "grid": 16 + }, + { + "id": 275, + "paths": [ + "M384 512h-320v-128h320v-128l192 192-192 192zM1024 0v832l-384 192v-192h-384v-256h64v192h320v-576l256-128h-576v256h-64v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "enter", + "signin", + "login" + ], + "defaultCode": 59923, + "grid": 16 + }, + { + "id": 276, + "paths": [ + "M768 640v-128h-320v-128h320v-128l192 192zM704 576v256h-320v192l-384-192v-832h704v320h-64v-256h-512l256 128v576h256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "exit", + "signout", + "logout", + "quit", + "close" + ], + "defaultCode": 59924, + "grid": 16 + }, + { + "id": 277, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM384 288l384 224-384 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "play", + "player" + ], + "defaultCode": 59925, + "grid": 16 + }, + { + "id": 278, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM320 320h128v384h-128zM576 320h128v384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pause", + "player" + ], + "defaultCode": 59926, + "grid": 16 + }, + { + "id": 279, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM320 320h384v384h-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stop", + "player" + ], + "defaultCode": 59927, + "grid": 16 + }, + { + "id": 280, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z", + "M448 512l256-192v384z", + "M320 320h128v384h-128v-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "previous", + "player" + ], + "defaultCode": 59928, + "grid": 16 + }, + { + "id": 281, + "paths": [ + "M512 0c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 928c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416z", + "M576 512l-256-192v384z", + "M704 320h-128v384h128v-384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "next", + "player" + ], + "defaultCode": 59929, + "grid": 16 + }, + { + "id": 282, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM704 672l-224-160 224-160zM448 672l-224-160 224-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "backward", + "player" + ], + "defaultCode": 59930, + "grid": 16 + }, + { + "id": 283, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416zM320 352l224 160-224 160zM576 352l224 160-224 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "forward", + "player" + ], + "defaultCode": 59931, + "grid": 16 + }, + { + "id": 284, + "paths": [ + "M192 128l640 384-640 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "play", + "player" + ], + "defaultCode": 59932, + "grid": 16 + }, + { + "id": 285, + "paths": [ + "M128 128h320v768h-320zM576 128h320v768h-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pause", + "player" + ], + "defaultCode": 59933, + "grid": 16 + }, + { + "id": 286, + "paths": [ + "M128 128h768v768h-768z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stop", + "player", + "square" + ], + "defaultCode": 59934, + "grid": 16 + }, + { + "id": 287, + "paths": [ + "M576 160v320l320-320v704l-320-320v320l-352-352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "backward", + "player" + ], + "defaultCode": 59935, + "grid": 16 + }, + { + "id": 288, + "paths": [ + "M512 864v-320l-320 320v-704l320 320v-320l352 352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "forward", + "player" + ], + "defaultCode": 59936, + "grid": 16 + }, + { + "id": 289, + "paths": [ + "M128 896v-768h128v352l320-320v320l320-320v704l-320-320v320l-320-320v352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "first", + "player" + ], + "defaultCode": 59937, + "grid": 16 + }, + { + "id": 290, + "paths": [ + "M896 128v768h-128v-352l-320 320v-320l-320 320v-704l320 320v-320l320 320v-352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "last", + "player" + ], + "defaultCode": 59938, + "grid": 16 + }, + { + "id": 291, + "paths": [ + "M256 896v-768h128v352l320-320v704l-320-320v352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "previous", + "player" + ], + "defaultCode": 59939, + "grid": 16 + }, + { + "id": 292, + "paths": [ + "M768 128v768h-128v-352l-320 320v-704l320 320v-352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "next", + "player" + ], + "defaultCode": 59940, + "grid": 16 + }, + { + "id": 293, + "paths": [ + "M0 768h1024v128h-1024zM512 128l512 512h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "eject", + "player" + ], + "defaultCode": 59941, + "grid": 16 + }, + { + "id": 294, + "paths": [ + "M890.040 922.040c-12.286 0-24.566-4.686-33.942-14.056-18.744-18.746-18.744-49.136 0-67.882 87.638-87.642 135.904-204.16 135.904-328.1 0-123.938-48.266-240.458-135.904-328.098-18.744-18.746-18.744-49.138 0-67.882s49.138-18.744 67.882 0c105.77 105.772 164.022 246.4 164.022 395.98s-58.252 290.208-164.022 395.98c-9.372 9.372-21.656 14.058-33.94 14.058zM719.53 831.53c-12.286 0-24.566-4.686-33.942-14.056-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.594 81.59 126.53 190.074 126.53 305.466 0 115.39-44.936 223.876-126.53 305.47-9.372 9.374-21.656 14.060-33.94 14.060v0zM549.020 741.020c-12.286 0-24.568-4.686-33.942-14.058-18.746-18.746-18.746-49.134 0-67.88 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.372 9.368-21.656 14.054-33.94 14.054z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "width": 1088, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-high", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59942, + "grid": 16 + }, + { + "id": 295, + "paths": [ + "M719.53 831.53c-12.286 0-24.566-4.686-33.942-14.056-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.594 81.59 126.53 190.074 126.53 305.466 0 115.39-44.936 223.876-126.53 305.47-9.372 9.374-21.656 14.060-33.94 14.060v0zM549.020 741.020c-12.286 0-24.566-4.686-33.942-14.058-18.746-18.746-18.746-49.134 0-67.88 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.372 9.368-21.656 14.054-33.94 14.054z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-medium", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59943, + "grid": 16 + }, + { + "id": 296, + "paths": [ + "M549.020 741.020c-12.286 0-24.566-4.686-33.942-14.058-18.746-18.746-18.746-49.134 0-67.88 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882s49.136-18.744 67.882 0c118.53 118.53 118.53 311.392 0 429.922-9.372 9.368-21.656 14.054-33.94 14.054z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-low", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59944, + "grid": 16 + }, + { + "id": 297, + "paths": [ + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-mute", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59945, + "grid": 16 + }, + { + "id": 298, + "paths": [ + "M960 619.148v84.852h-84.852l-107.148-107.148-107.148 107.148h-84.852v-84.852l107.148-107.148-107.148-107.148v-84.852h84.852l107.148 107.148 107.148-107.148h84.852v84.852l-107.148 107.148 107.148 107.148z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-mute", + "volume", + "audio", + "player" + ], + "defaultCode": 59946, + "grid": 16 + }, + { + "id": 299, + "paths": [ + "M1024 576h-192v192h-128v-192h-192v-128h192v-192h128v192h192v128z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-increase", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59947, + "grid": 16 + }, + { + "id": 300, + "paths": [ + "M512 448h512v128h-512v-128z", + "M416.006 960c-8.328 0-16.512-3.25-22.634-9.374l-246.626-246.626h-114.746c-17.672 0-32-14.326-32-32v-320c0-17.672 14.328-32 32-32h114.746l246.626-246.628c9.154-9.154 22.916-11.89 34.874-6.936 11.958 4.952 19.754 16.622 19.754 29.564v832c0 12.944-7.796 24.612-19.754 29.564-3.958 1.64-8.118 2.436-12.24 2.436z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "volume-decrease", + "volume", + "audio", + "speaker", + "player" + ], + "defaultCode": 59948, + "grid": 16 + }, + { + "id": 301, + "paths": [ + "M128 320h640v192l256-256-256-256v192h-768v384h128zM896 704h-640v-192l-256 256 256 256v-192h768v-384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "loop", + "repeat", + "player" + ], + "defaultCode": 59949, + "grid": 16 + }, + { + "id": 302, + "paths": [ + "M889.68 166.32c-93.608-102.216-228.154-166.32-377.68-166.32-282.77 0-512 229.23-512 512h96c0-229.75 186.25-416 416-416 123.020 0 233.542 53.418 309.696 138.306l-149.696 149.694h352v-352l-134.32 134.32z", + "M928 512c0 229.75-186.25 416-416 416-123.020 0-233.542-53.418-309.694-138.306l149.694-149.694h-352v352l134.32-134.32c93.608 102.216 228.154 166.32 377.68 166.32 282.77 0 512-229.23 512-512h-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "loop", + "repeat", + "player", + "reload", + "refresh", + "update", + "synchronize", + "arrows" + ], + "defaultCode": 59950, + "grid": 16 + }, + { + "id": 303, + "paths": [ + "M783.988 752.012c-64.104 0-124.372-24.96-169.7-70.288l-102.288-102.282-102.276 102.27c-45.332 45.336-105.6 70.3-169.706 70.3-64.118 0-124.39-24.964-169.722-70.3-45.332-45.334-70.296-105.604-70.296-169.712s24.964-124.38 70.296-169.714c45.334-45.332 105.608-70.296 169.714-70.296 64.108 0 124.38 24.964 169.712 70.296l102.278 102.276 102.276-102.276c45.332-45.332 105.604-70.298 169.712-70.298 64.112 0 124.384 24.966 169.71 70.298 45.338 45.334 70.302 105.606 70.302 169.714 0 64.112-24.964 124.382-70.3 169.71-45.326 45.336-105.598 70.302-169.712 70.302zM681.72 614.288c27.322 27.31 63.64 42.354 102.268 42.352 38.634 0 74.958-15.044 102.276-42.362 27.316-27.322 42.364-63.644 42.364-102.278s-15.046-74.956-42.364-102.274c-27.32-27.318-63.64-42.364-102.276-42.364-38.632 0-74.956 15.044-102.278 42.364l-102.268 102.274 102.278 102.288zM240.012 367.362c-38.634 0-74.956 15.044-102.274 42.364-27.32 27.318-42.364 63.64-42.364 102.274 0 38.632 15.044 74.954 42.364 102.276 27.32 27.316 63.642 42.364 102.274 42.364 38.634 0 74.956-15.044 102.272-42.362l102.276-102.278-102.276-102.274c-27.318-27.32-63.64-42.366-102.272-42.364v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "infinite" + ], + "defaultCode": 59951, + "grid": 16 + }, + { + "id": 304, + "paths": [ + "M768 704h-101.49l-160-160 160-160h101.49v160l224-224-224-224v160h-128c-16.974 0-33.252 6.744-45.254 18.746l-178.746 178.744-178.746-178.746c-12-12-28.28-18.744-45.254-18.744h-192v128h165.49l160 160-160 160h-165.49v128h192c16.974 0 33.252-6.742 45.254-18.746l178.746-178.744 178.746 178.744c12.002 12.004 28.28 18.746 45.254 18.746h128v160l224-224-224-224v160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shuffle", + "random", + "player" + ], + "defaultCode": 59952, + "grid": 16 + }, + { + "id": 305, + "paths": [ + "M0 736l256-256 544 544 224-224-544-544 255.998-256h-735.998v736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-left", + "up-left", + "arrow-top-left" + ], + "defaultCode": 59953, + "grid": 16 + }, + { + "id": 306, + "paths": [ + "M512 32l-480 480h288v512h384v-512h288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up", + "up", + "upload", + "top" + ], + "defaultCode": 59954, + "grid": 16 + }, + { + "id": 307, + "paths": [ + "M288 0l256 256-544 544 224 224 544-544 256 255.998v-735.998h-736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-right", + "up-right", + "arrow-top-right" + ], + "defaultCode": 59955, + "grid": 16 + }, + { + "id": 308, + "paths": [ + "M992 512l-480-480v288h-512v384h512v288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-right", + "right", + "next" + ], + "defaultCode": 59956, + "grid": 16 + }, + { + "id": 309, + "paths": [ + "M1024 288l-256 256-544-544-224 224 544 544-255.998 256h735.998v-736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-right", + "down-right", + "arrow-bottom-right" + ], + "defaultCode": 59957, + "grid": 16 + }, + { + "id": 310, + "paths": [ + "M512 992l480-480h-288v-512h-384v512h-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down", + "down", + "download", + "bottom" + ], + "defaultCode": 59958, + "grid": 16 + }, + { + "id": 311, + "paths": [ + "M736 1024l-256-256 544-544-224-224-544 544-256-255.998v735.998h736z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-left", + "down-left", + "arrow-bottom-left" + ], + "defaultCode": 59959, + "grid": 16 + }, + { + "id": 312, + "paths": [ + "M32 512l480 480v-288h512v-384h-512v-288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-left", + "left", + "previous" + ], + "defaultCode": 59960, + "grid": 16 + }, + { + "id": 313, + "paths": [ + "M877.254 786.746l-530.744-530.746h229.49c35.346 0 64-28.654 64-64s-28.654-64-64-64h-384c-25.886 0-49.222 15.592-59.128 39.508-3.282 7.924-4.84 16.242-4.838 24.492h-0.034v384c0 35.346 28.654 64 64 64s64-28.654 64-64v-229.49l530.746 530.744c12.496 12.498 28.876 18.746 45.254 18.746s32.758-6.248 45.254-18.746c24.994-24.992 24.994-65.516 0-90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-left", + "up-left", + "arrow-top-left" + ], + "defaultCode": 59961, + "grid": 16 + }, + { + "id": 314, + "paths": [ + "M877.254 402.746l-320-320c-24.992-24.994-65.514-24.994-90.508 0l-320 320c-24.994 24.994-24.994 65.516 0 90.51 24.994 24.996 65.516 24.996 90.51 0l210.744-210.746v613.49c0 35.346 28.654 64 64 64s64-28.654 64-64v-613.49l210.746 210.746c12.496 12.496 28.876 18.744 45.254 18.744s32.758-6.248 45.254-18.746c24.994-24.994 24.994-65.514 0-90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up", + "up", + "upload", + "top" + ], + "defaultCode": 59962, + "grid": 16 + }, + { + "id": 315, + "paths": [ + "M237.254 877.254l530.746-530.744v229.49c0 35.346 28.654 64 64 64s64-28.654 64-64v-384c0-25.884-15.594-49.222-39.508-59.126-7.924-3.284-16.242-4.84-24.492-4.838v-0.036h-384c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64h229.49l-530.744 530.746c-12.498 12.496-18.746 28.876-18.746 45.254s6.248 32.758 18.746 45.254c24.992 24.994 65.516 24.994 90.508 0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-up-right", + "up-right", + "arrow-top-right" + ], + "defaultCode": 59963, + "grid": 16 + }, + { + "id": 316, + "paths": [ + "M621.254 877.254l320-320c24.994-24.992 24.994-65.516 0-90.51l-320-320c-24.994-24.992-65.516-24.992-90.51 0-24.994 24.994-24.994 65.516 0 90.51l210.746 210.746h-613.49c-35.346 0-64 28.654-64 64s28.654 64 64 64h613.49l-210.746 210.746c-12.496 12.496-18.744 28.876-18.744 45.254s6.248 32.758 18.744 45.254c24.994 24.994 65.516 24.994 90.51 0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-right", + "right", + "next" + ], + "defaultCode": 59964, + "grid": 16 + }, + { + "id": 317, + "paths": [ + "M146.746 237.254l530.742 530.746h-229.488c-35.346 0-64 28.654-64 64s28.654 64 64 64h384c25.884 0 49.222-15.594 59.126-39.508 3.284-7.924 4.84-16.242 4.838-24.492h0.036v-384c0-35.346-28.654-64-64-64-35.348 0-64 28.654-64 64v229.49l-530.746-530.744c-12.496-12.498-28.874-18.746-45.254-18.746s-32.758 6.248-45.254 18.746c-24.994 24.992-24.994 65.516 0 90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-right", + "down-right", + "arrow-bottom-right" + ], + "defaultCode": 59965, + "grid": 16 + }, + { + "id": 318, + "paths": [ + "M877.254 621.254l-320 320c-24.992 24.994-65.514 24.994-90.508 0l-320-320c-24.994-24.994-24.994-65.516 0-90.51 24.994-24.996 65.516-24.996 90.51 0l210.744 210.746v-613.49c0-35.346 28.654-64 64-64s64 28.654 64 64v613.49l210.746-210.746c12.496-12.496 28.876-18.744 45.254-18.744s32.758 6.248 45.254 18.746c24.994 24.994 24.994 65.514 0 90.508z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down", + "down", + "download", + "bottom" + ], + "defaultCode": 59966, + "grid": 16 + }, + { + "id": 319, + "paths": [ + "M786.744 146.744l-530.744 530.744v-229.49c0-35.346-28.654-64-64-64s-64 28.654-64 64v384.002c0 25.886 15.592 49.222 39.508 59.128 7.924 3.282 16.242 4.84 24.492 4.836v0.036l384-0.002c35.344 0 64-28.654 64-63.998 0-35.348-28.656-64-64-64h-229.49l530.744-530.746c12.496-12.496 18.746-28.876 18.746-45.256 0-16.376-6.25-32.758-18.746-45.254-24.992-24.992-65.518-24.992-90.51 0v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-down-left", + "down-left", + "arrow-bottom-left" + ], + "defaultCode": 59967, + "grid": 16 + }, + { + "id": 320, + "paths": [ + "M402.746 877.254l-320-320c-24.994-24.992-24.994-65.516 0-90.51l320-320c24.994-24.992 65.516-24.992 90.51 0 24.994 24.994 24.994 65.516 0 90.51l-210.746 210.746h613.49c35.346 0 64 28.654 64 64s-28.654 64-64 64h-613.49l210.746 210.746c12.496 12.496 18.744 28.876 18.744 45.254s-6.248 32.758-18.744 45.254c-24.994 24.994-65.516 24.994-90.51 0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "arrow-left", + "left", + "previous" + ], + "defaultCode": 59968, + "grid": 16 + }, + { + "id": 321, + "paths": [ + "M0 512c0 282.77 229.23 512 512 512s512-229.23 512-512-229.23-512-512-512-512 229.23-512 512zM928 512c0 229.75-186.25 416-416 416s-416-186.25-416-416 186.25-416 416-416 416 186.25 416 416z", + "M706.744 669.256l90.512-90.512-285.256-285.254-285.254 285.256 90.508 90.508 194.746-194.744z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-up", + "up", + "circle-top", + "arrow" + ], + "defaultCode": 59969, + "grid": 16 + }, + { + "id": 322, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 928c-229.75 0-416-186.25-416-416s186.25-416 416-416 416 186.25 416 416-186.25 416-416 416z", + "M354.744 706.744l90.512 90.512 285.254-285.256-285.256-285.254-90.508 90.508 194.744 194.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-right", + "right", + "circle-next", + "arrow" + ], + "defaultCode": 59970, + "grid": 16 + }, + { + "id": 323, + "paths": [ + "M1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512 229.23 512 512 512 512-229.23 512-512zM96 512c0-229.75 186.25-416 416-416s416 186.25 416 416-186.25 416-416 416-416-186.25-416-416z", + "M317.256 354.744l-90.512 90.512 285.256 285.254 285.254-285.256-90.508-90.508-194.746 194.744z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-down", + "down", + "circle-bottom", + "arrow" + ], + "defaultCode": 59971, + "grid": 16 + }, + { + "id": 324, + "paths": [ + "M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 96c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416z", + "M669.256 317.256l-90.512-90.512-285.254 285.256 285.256 285.254 90.508-90.508-194.744-194.746z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "circle-left", + "left", + "circle-previous", + "arrow" + ], + "defaultCode": 59972, + "grid": 16 + }, + { + "id": 325, + "paths": [ + "M960 0h64v512h-64v-512z", + "M0 512h64v512h-64v-512z", + "M320 704h704v128h-704v160l-224-224 224-224v160z", + "M704 320h-704v-128h704v-160l224 224-224 224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tab", + "arrows" + ], + "defaultCode": 59973, + "grid": 16 + }, + { + "id": 326, + "paths": [ + "M704 512v384h64v-384h160l-192-192-192 192z", + "M64 192h96v64h-96v-64z", + "M192 192h96v64h-96v-64z", + "M320 192h64v96h-64v-96z", + "M64 416h64v96h-64v-96z", + "M160 448h96v64h-96v-64z", + "M288 448h96v64h-96v-64z", + "M64 288h64v96h-64v-96z", + "M320 320h64v96h-64v-96z", + "M320 704v192h-192v-192h192zM384 640h-320v320h320v-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "move-up", + "sort", + "arrange" + ], + "defaultCode": 59974, + "grid": 16 + }, + { + "id": 327, + "paths": [ + "M768 704v-384h-64v384h-160l192 192 192-192z", + "M320 256v192h-192v-192h192zM384 192h-320v320h320v-320z", + "M64 640h96v64h-96v-64z", + "M192 640h96v64h-96v-64z", + "M320 640h64v96h-64v-96z", + "M64 864h64v96h-64v-96z", + "M160 896h96v64h-96v-64z", + "M288 896h96v64h-96v-64z", + "M64 736h64v96h-64v-96z", + "M320 768h64v96h-64v-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "move-down", + "sort", + "arrange" + ], + "defaultCode": 59975, + "grid": 16 + }, + { + "id": 328, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M928 1024h-256c-11.8 0-22.644-6.496-28.214-16.9-5.566-10.404-4.958-23.030 1.59-32.85l222.832-334.25h-196.208c-17.672 0-32-14.328-32-32s14.328-32 32-32h256c11.8 0 22.644 6.496 28.214 16.9 5.566 10.404 4.958 23.030-1.59 32.85l-222.83 334.25h196.206c17.672 0 32 14.328 32 32s-14.328 32-32 32z", + "M1020.622 401.686l-192.002-384c-5.42-10.842-16.502-17.69-28.622-17.69-12.122 0-23.202 6.848-28.624 17.69l-191.996 384c-7.904 15.806-1.496 35.030 14.31 42.932 4.594 2.296 9.476 3.386 14.288 3.386 11.736 0 23.040-6.484 28.644-17.698l55.156-110.31h216.446l55.156 110.31c7.902 15.806 27.124 22.21 42.932 14.31 15.808-7.902 22.216-27.124 14.312-42.93zM723.778 255.996l76.22-152.446 76.224 152.446h-152.444z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-alpha-asc", + "arrange", + "alphabetic" + ], + "defaultCode": 59976, + "grid": 16 + }, + { + "id": 329, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M928 448h-256c-11.8 0-22.644-6.496-28.214-16.9-5.566-10.406-4.958-23.030 1.59-32.85l222.832-334.25h-196.208c-17.672 0-32-14.328-32-32s14.328-32 32-32h256c11.8 0 22.644 6.496 28.214 16.9 5.566 10.406 4.958 23.030-1.59 32.85l-222.83 334.25h196.206c17.672 0 32 14.328 32 32s-14.328 32-32 32z", + "M1020.622 977.69l-192.002-384c-5.42-10.842-16.502-17.69-28.622-17.69-12.122 0-23.202 6.848-28.624 17.69l-191.996 384c-7.904 15.806-1.496 35.030 14.31 42.932 4.594 2.296 9.476 3.386 14.288 3.386 11.736 0 23.040-6.484 28.644-17.698l55.158-110.31h216.446l55.156 110.31c7.902 15.806 27.124 22.21 42.932 14.31 15.806-7.902 22.214-27.124 14.31-42.93zM723.778 832l76.22-152.446 76.226 152.446h-152.446z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-alpha-desc", + "arrange", + "alphabetic" + ], + "defaultCode": 59977, + "grid": 16 + }, + { + "id": 330, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M864 448c-17.674 0-32-14.328-32-32v-352h-32c-17.674 0-32-14.328-32-32s14.326-32 32-32h64c17.674 0 32 14.328 32 32v384c0 17.672-14.326 32-32 32z", + "M928 576h-192c-17.674 0-32 14.326-32 32v192c0 17.674 14.326 32 32 32h160v128h-160c-17.674 0-32 14.326-32 32s14.326 32 32 32h192c17.674 0 32-14.326 32-32v-384c0-17.674-14.326-32-32-32zM768 640h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-numeric-asc", + "arrange" + ], + "defaultCode": 59978, + "grid": 16 + }, + { + "id": 331, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M864 1024c-17.674 0-32-14.328-32-32v-352h-32c-17.674 0-32-14.328-32-32s14.326-32 32-32h64c17.674 0 32 14.328 32 32v384c0 17.672-14.326 32-32 32z", + "M928 0h-192c-17.674 0-32 14.326-32 32v192c0 17.674 14.326 32 32 32h160v128h-160c-17.674 0-32 14.326-32 32s14.326 32 32 32h192c17.674 0 32-14.326 32-32v-384c0-17.674-14.326-32-32-32zM768 64h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-numberic-desc", + "arrange" + ], + "defaultCode": 59979, + "grid": 16 + }, + { + "id": 332, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M448 576h576v128h-576v-128z", + "M448 384h448v128h-448v-128z", + "M448 192h320v128h-320v-128z", + "M448 0h192v128h-192v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-amount-asc", + "arrange" + ], + "defaultCode": 59980, + "grid": 16 + }, + { + "id": 333, + "paths": [ + "M320 768v-768h-128v768h-160l224 224 224-224h-160z", + "M448 0h576v128h-576v-128z", + "M448 192h448v128h-448v-128z", + "M448 384h320v128h-320v-128z", + "M448 576h192v128h-192v-128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sort-amount-desc", + "arrange" + ], + "defaultCode": 59981, + "grid": 16 + }, + { + "id": 334, + "paths": [ + "M736 896c-88.224 0-160-71.776-160-160v-96h-128v96c0 88.224-71.776 160-160 160s-160-71.776-160-160 71.776-160 160-160h96v-128h-96c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160v96h128v-96c0-88.224 71.776-160 160-160s160 71.776 160 160-71.776 160-160 160h-96v128h96c88.224 0 160 71.776 160 160s-71.774 160-160 160zM640 640v96c0 52.934 43.066 96 96 96s96-43.066 96-96-43.066-96-96-96h-96zM288 640c-52.934 0-96 43.066-96 96s43.066 96 96 96 96-43.066 96-96v-96h-96zM448 576h128v-128h-128v128zM640 384h96c52.934 0 96-43.066 96-96s-43.066-96-96-96-96 43.066-96 96v96zM288 192c-52.934 0-96 43.066-96 96s43.066 96 96 96h96v-96c0-52.934-43.064-96-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "command", + "cmd" + ], + "defaultCode": 59982, + "grid": 16 + }, + { + "id": 335, + "paths": [ + "M672 896h-320c-17.672 0-32-14.326-32-32v-352h-128c-12.942 0-24.612-7.796-29.564-19.754-4.954-11.958-2.214-25.722 6.936-34.874l320-320c12.498-12.496 32.758-12.496 45.254 0l320 320c9.152 9.152 11.89 22.916 6.938 34.874s-16.62 19.754-29.564 19.754h-128v352c0 17.674-14.326 32-32 32zM384 832h256v-352c0-17.672 14.326-32 32-32h82.744l-242.744-242.746-242.744 242.746h82.744c17.672 0 32 14.328 32 32v352z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "shift" + ], + "defaultCode": 59983, + "grid": 16 + }, + { + "id": 336, + "paths": [ + "M736.014 448c-8.908 0-17.77-3.698-24.096-10.928l-199.918-228.478-199.918 228.478c-11.636 13.3-31.856 14.65-45.154 3.010-13.3-11.638-14.648-31.854-3.010-45.154l224-256c6.076-6.944 14.854-10.928 24.082-10.928s18.006 3.984 24.082 10.928l224 256c11.638 13.3 10.292 33.516-3.010 45.154-6.070 5.312-13.582 7.918-21.058 7.918z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ctrl", + "control" + ], + "defaultCode": 59984, + "grid": 16 + }, + { + "id": 337, + "paths": [ + "M928 832h-256c-12.646 0-24.106-7.448-29.242-19.004l-247.554-556.996h-299.204c-17.672 0-32-14.328-32-32s14.328-32 32-32h320c12.646 0 24.106 7.448 29.242 19.004l247.556 556.996h235.202c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M928 256h-320c-17.674 0-32-14.328-32-32s14.326-32 32-32h320c17.674 0 32 14.328 32 32s-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "opt", + "option", + "alt" + ], + "defaultCode": 59985, + "grid": 16 + }, + { + "id": 338, + "paths": [ + "M896 0h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-768c0-70.4-57.6-128-128-128zM448 794.51l-237.254-237.256 90.51-90.508 146.744 146.744 306.746-306.746 90.508 90.51-397.254 397.256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkbox-checked", + "checkbox", + "tick", + "checked", + "selected" + ], + "defaultCode": 59986, + "grid": 16 + }, + { + "id": 339, + "paths": [ + "M896 0h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-768c0-70.4-57.6-128-128-128zM896 896h-768v-768h768v768z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "checkbox-unchecked", + "checkbox", + "unchecked", + "square" + ], + "defaultCode": 59987, + "grid": 16 + }, + { + "id": 340, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM320 512c0-106.039 85.961-192 192-192s192 85.961 192 192c0 106.039-85.961 192-192 192s-192-85.961-192-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "radio-checked", + "radio-button" + ], + "defaultCode": 59988, + "grid": 16 + }, + { + "id": 341, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 640c-70.692 0-128-57.306-128-128 0-70.692 57.308-128 128-128 70.694 0 128 57.308 128 128 0 70.694-57.306 128-128 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "radio-checked", + "radio-button" + ], + "defaultCode": 59989, + "grid": 16 + }, + { + "id": 342, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "radio-unchecked", + "radio-button", + "circle" + ], + "defaultCode": 59990, + "grid": 16 + }, + { + "id": 343, + "paths": [ + "M832 256l192-192-64-64-192 192h-448v-192h-128v192h-192v128h192v512h512v192h128v-192h192v-128h-192v-448zM320 320h320l-320 320v-320zM384 704l320-320v320h-320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "crop", + "resize", + "cut" + ], + "defaultCode": 59991, + "grid": 16 + }, + { + "id": 344, + "paths": [ + "M320 128h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64z", + "M704 384h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64zM704 192h128v128h-128v-128z", + "M320 640h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64zM320 832h-128v-128h128v128z", + "M832 640h-128c-35.2 0-64 28.8-64 64v128c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-128c0-35.2-28.8-64-64-64z", + "M896 512h-64c-85.476 0-165.834-33.286-226.274-93.724-60.44-60.442-93.726-140.802-93.726-226.276v-64c0-70.4-57.6-128-128-128h-256c-70.4 0-128 57.6-128 128v256c0 70.4 57.6 128 128 128h64c85.476 0 165.834 33.286 226.274 93.724 60.44 60.442 93.726 140.802 93.726 226.276v64c0 70.4 57.6 128 128 128h256c70.4 0 128-57.6 128-128v-256c0-70.4-57.6-128-128-128zM960 896c0 16.954-6.696 32.986-18.856 45.144-12.158 12.16-28.19 18.856-45.144 18.856h-256c-16.954 0-32.986-6.696-45.144-18.856-12.16-12.158-18.856-28.19-18.856-45.144v-64c0-212.078-171.922-384-384-384h-64c-16.954 0-32.986-6.696-45.146-18.854-12.158-12.16-18.854-28.192-18.854-45.146v-256c0-16.954 6.696-32.986 18.854-45.146 12.16-12.158 28.192-18.854 45.146-18.854h256c16.954 0 32.986 6.696 45.146 18.854 12.158 12.16 18.854 28.192 18.854 45.146v64c0 212.078 171.922 384 384 384h64c16.954 0 32.986 6.696 45.144 18.856 12.16 12.158 18.856 28.19 18.856 45.144v256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "make-group" + ], + "defaultCode": 59992, + "grid": 16 + }, + { + "id": 345, + "paths": [ + "M384 464c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M704 464c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M384 784c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M704 784c0 26.4-21.6 48-48 48h-96c-26.4 0-48-21.6-48-48v-96c0-26.4 21.6-48 48-48h96c26.4 0 48 21.6 48 48v96z", + "M912.082 160l111.918-111.916v-48.084h-48.082l-111.918 111.916-111.918-111.916h-48.082v48.084l111.918 111.916-111.918 111.916v48.084h48.082l111.918-111.916 111.918 111.916h48.082v-48.084z", + "M0 768h64v128h-64v-128z", + "M0 576h64v128h-64v-128z", + "M832 448h64v128h-64v-128z", + "M832 832h64v128h-64v-128z", + "M832 640h64v128h-64v-128z", + "M0 384h64v128h-64v-128z", + "M0 192h64v128h-64v-128z", + "M512 128h128v64h-128v-64z", + "M320 128h128v64h-128v-64z", + "M128 128h128v64h-128v-64z", + "M448 960h128v64h-128v-64z", + "M640 960h128v64h-128v-64z", + "M256 960h128v64h-128v-64z", + "M64 960h128v64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ungroup" + ], + "defaultCode": 59993, + "grid": 16 + }, + { + "id": 346, + "paths": [ + "M913.826 679.694c-66.684-104.204-181.078-150.064-255.51-102.434-6.428 4.116-12.334 8.804-17.744 13.982l-79.452-124.262 183.462-287.972c15.016-27.73 20.558-60.758 13.266-93.974-6.972-31.75-24.516-58.438-48.102-77.226l-12.278-7.808-217.468 340.114-217.47-340.114-12.276 7.806c-23.586 18.79-41.13 45.476-48.1 77.226-7.292 33.216-1.75 66.244 13.264 93.974l183.464 287.972-79.454 124.262c-5.41-5.178-11.316-9.868-17.744-13.982-74.432-47.63-188.826-1.77-255.51 102.434-66.68 104.2-60.398 227.286 14.032 274.914 74.43 47.632 188.824 1.77 255.508-102.432l164.286-257.87 164.288 257.872c66.684 104.202 181.078 150.064 255.508 102.432 74.428-47.63 80.71-170.716 14.030-274.914zM234.852 800.43c-30.018 46.904-68.534 69.726-94.572 75.446-0.004 0-0.004 0-0.004 0-8.49 1.868-20.294 3.010-28.324-2.128-8.898-5.694-14.804-20.748-15.8-40.276-1.616-31.644 9.642-68.836 30.888-102.034 30.014-46.906 68.53-69.726 94.562-75.444 8.496-1.866 20.308-3.010 28.336 2.126 8.898 5.694 14.802 20.75 15.798 40.272 1.618 31.65-9.64 68.84-30.884 102.038zM480 512c-17.672 0-32-14.328-32-32s14.328-32 32-32 32 14.328 32 32-14.328 32-32 32zM863.85 833.47c-0.996 19.528-6.902 34.582-15.8 40.276-8.030 5.138-19.834 3.996-28.324 2.128 0 0 0 0-0.004 0-26.040-5.718-64.554-28.542-94.572-75.446-21.244-33.198-32.502-70.388-30.884-102.038 0.996-19.522 6.9-34.578 15.798-40.272 8.028-5.136 19.84-3.992 28.336-2.126 26.034 5.716 64.548 28.538 94.562 75.444 21.246 33.198 32.502 70.39 30.888 102.034z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "scissors", + "cut" + ], + "defaultCode": 59994, + "grid": 16 + }, + { + "id": 347, + "paths": [ + "M512 0c-282.77 0-512 71.634-512 160v96l384 384v320c0 35.346 57.306 64 128 64 70.692 0 128-28.654 128-64v-320l384-384v-96c0-88.366-229.23-160-512-160zM94.384 138.824c23.944-13.658 57.582-26.62 97.278-37.488 87.944-24.076 201.708-37.336 320.338-37.336 118.628 0 232.394 13.26 320.338 37.336 39.696 10.868 73.334 23.83 97.28 37.488 15.792 9.006 24.324 16.624 28.296 21.176-3.972 4.552-12.506 12.168-28.296 21.176-23.946 13.658-57.584 26.62-97.28 37.488-87.942 24.076-201.708 37.336-320.338 37.336s-232.394-13.26-320.338-37.336c-39.696-10.868-73.334-23.83-97.278-37.488-15.792-9.008-24.324-16.624-28.298-21.176 3.974-4.552 12.506-12.168 28.298-21.176z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "filter", + "funnel" + ], + "defaultCode": 59995, + "grid": 16 + }, + { + "id": 348, + "paths": [ + "M799.596 16.208c-90.526 0-148.62-16.208-241.848-16.208-301.284 0-441.792 171.584-441.792 345.872 0 102.678 48.64 136.458 144.564 136.458-6.758-14.864-18.914-31.080-18.914-104.034 0-204.010 77.006-263.458 175.636-267.51 0 0-80.918 793.374-315.778 888.542v24.672h316.594l108.026-512h197.844l44.072-128h-214.908l51.944-246.19c59.446 12.156 117.542 24.316 167.532 24.316 62.148 0 118.894-18.914 149.968-162.126-37.826 12.16-78.362 16.208-122.94 16.208z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "font", + "typeface", + "typography", + "font-family", + "wysiwyg" + ], + "defaultCode": 59996, + "grid": 16 + }, + { + "id": 349, + "paths": [ + "M768 871.822c0-0.040 0.002-0.076 0.002-0.116l-0.344-436.562-127.492 6.19h-251.93v-21.494c0-81.542 5.8-162.976 17.24-194.716 7.896-21.948 22.598-41.744 43.698-58.836 20.618-16.702 41.178-25.17 61.11-25.17 16.772 0 30.702 2.878 41.402 8.554 15.026 8.562 29.716 22.964 43.67 42.818 36.95 52.504 51.99 66.454 60.094 72.376 13.804 10.094 30.512 15.212 49.658 15.212 18.668 0 34.962-6.97 48.436-20.714 13.372-13.636 20.15-30.682 20.15-50.666 0-21.452-8.916-44.204-26.502-67.622-17.184-22.888-43.708-41.742-78.834-56.032-34.322-13.964-72.94-21.044-114.778-21.044-60.716 0-116.012 14.596-164.356 43.384-48.424 28.834-85.558 68.952-110.37 119.24-22.994 46.604-21.334 134.706-22.732 214.712h-125.732v71.402h125.598v324.668c0 71.666-21.906 91.008-30.216 101.324-11.436 14.202-32.552 29.104-60.444 29.104h-38.654v56.166h385.326v-56.168h-6.708c-91.144 0-117.020-9.832-117.020-120.842 0-0.018 0-0.034 0-0.048l-0.038-334.206h140.204c74.404 0 91.496 3.444 95.392 4.924 4.706 1.79 10.798 4.832 13.084 9.144 0.868 1.684 5.194 25.008 5.194 82.972v250.67c0 58.454-7.124 77.896-11.45 84.402-9.248 14.194-20.41 22.066-54.66 22.904v56.248h293.61v-55.846c-91.608 0-101.608-9.82-101.608-96.332z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ligature", + "typography", + "font" + ], + "defaultCode": 59997, + "grid": 16 + }, + { + "id": 350, + "paths": [ + "M855.328 917.454c-11.734 0-83.62-13.2-88.020-29.338-10.274-39.612-11.738-82.152-11.738-130.568v-540.974c0-80.686 16.138-127.632 16.138-127.632-1.468-7.334-8.804-23.472-17.604-23.472h-4.404c-4.4 0-55.746 32.276-102.692 32.276-38.14-0.002-61.89-33.746-105.902-33.746-185.106 0-271.942 150.31-271.942 363.032v11.072c0 4.402-2.934 8.804-7.336 8.804h-60.148c-7.336 0-22.006 41.078-22.006 60.148 0 5.87 1.466 8.8 4.4 8.8h77.754c4.402 0 7.336 5.872 7.336 10.27 0 130.566-1.466 259.298-1.466 259.298 0 20.54-1.466 66.016-10.27 102.692-4.4 16.138-71.884 29.338-89.488 29.338-7.334 0-7.334 35.212 0 42.546 60.148-2.934 99.758-7.334 159.908-7.334 55.75 0 98.292 4.4 156.974 7.334 2.934-8.802 2.934-42.546-4.4-42.546-11.736 0-83.624-13.2-88.022-29.338-10.27-39.612-10.27-82.152-11.738-130.568v-232.888c0-4.402 4.402-8.804 8.802-8.804h151.104c10.27-20.538 17.606-45.476 17.606-58.68 0-8.802 0-10.27-7.336-10.27h-162.84c-2.934 0-7.336-4.402-7.336-7.334v-52.82c0-130.568 53.482-245.538 142.97-245.538 63.372 0 118.666 41.060 118.666 197.922 0 0.006 0 0.012 0 0.018 0.208 4.036 0.314 7.294 0.314 9.452v436.816c0 20.54-1.47 66.016-10.27 102.692-4.404 16.138-71.884 29.338-89.492 29.338-7.336 0-7.336 35.212 0 42.546 60.15-2.934 99.762-7.334 159.912-7.334 55.746 0 98.288 4.4 156.972 7.334 2.928-8.8 2.928-42.544-4.406-42.544z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ligature", + "typography", + "font" + ], + "defaultCode": 59998, + "grid": 16 + }, + { + "id": 351, + "paths": [ + "M896 768h128l-160 192-160-192h128v-512h-128l160-192 160 192h-128zM640 64v256l-64-128h-192v704h128v64h-384v-64h128v-704h-192l-64 128v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-height", + "wysiwyg" + ], + "defaultCode": 59999, + "grid": 16 + }, + { + "id": 352, + "paths": [ + "M256 896v128l-192-160 192-160v128h512v-128l192 160-192 160v-128zM832 64v256l-64-128h-192v448h128v64h-384v-64h128v-448h-192l-64 128v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-width", + "wysiwyg" + ], + "defaultCode": 60000, + "grid": 16 + }, + { + "id": 353, + "paths": [ + "M64 512h384v128h-128v384h-128v-384h-128zM960 256h-251.75v768h-136.5v-768h-251.75v-128h640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "font-size", + "wysiwyg" + ], + "defaultCode": 60001, + "grid": 16 + }, + { + "id": 354, + "paths": [ + "M707.88 484.652c37.498-44.542 60.12-102.008 60.12-164.652 0-141.16-114.842-256-256-256h-320v896h384c141.158 0 256-114.842 256-256 0-92.956-49.798-174.496-124.12-219.348zM384 192h101.5c55.968 0 101.5 57.42 101.5 128s-45.532 128-101.5 128h-101.5v-256zM543 832h-159v-256h159c58.45 0 106 57.42 106 128s-47.55 128-106 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "bold", + "wysiwyg" + ], + "defaultCode": 60002, + "grid": 16 + }, + { + "id": 355, + "paths": [ + "M704 64h128v416c0 159.058-143.268 288-320 288-176.73 0-320-128.942-320-288v-416h128v416c0 40.166 18.238 78.704 51.354 108.506 36.896 33.204 86.846 51.494 140.646 51.494s103.75-18.29 140.646-51.494c33.116-29.802 51.354-68.34 51.354-108.506v-416zM192 832h640v128h-640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "underline", + "wysiwyg" + ], + "defaultCode": 60003, + "grid": 16 + }, + { + "id": 356, + "paths": [ + "M896 64v64h-128l-320 768h128v64h-448v-64h128l320-768h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "italic", + "wysiwyg" + ], + "defaultCode": 60004, + "grid": 16 + }, + { + "id": 357, + "paths": [ + "M1024 512v64h-234.506c27.504 38.51 42.506 82.692 42.506 128 0 70.878-36.66 139.026-100.58 186.964-59.358 44.518-137.284 69.036-219.42 69.036-82.138 0-160.062-24.518-219.42-69.036-63.92-47.938-100.58-116.086-100.58-186.964h128c0 69.382 87.926 128 192 128s192-58.618 192-128c0-69.382-87.926-128-192-128h-512v-64h299.518c-2.338-1.654-4.656-3.324-6.938-5.036-63.92-47.94-100.58-116.086-100.58-186.964s36.66-139.024 100.58-186.964c59.358-44.518 137.282-69.036 219.42-69.036 82.136 0 160.062 24.518 219.42 69.036 63.92 47.94 100.58 116.086 100.58 186.964h-128c0-69.382-87.926-128-192-128s-192 58.618-192 128c0 69.382 87.926 128 192 128 78.978 0 154.054 22.678 212.482 64h299.518z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "strikethrough", + "wysiwyg" + ], + "defaultCode": 60005, + "grid": 16 + }, + { + "id": 358, + "paths": [ + "M704 896h256l64-128v256h-384v-214.214c131.112-56.484 224-197.162 224-361.786 0-214.432-157.598-382.266-352-382.266-194.406 0-352 167.832-352 382.266 0 164.624 92.886 305.302 224 361.786v214.214h-384v-256l64 128h256v-32.59c-187.63-66.46-320-227.402-320-415.41 0-247.424 229.23-448 512-448s512 200.576 512 448c0 188.008-132.37 348.95-320 415.41v32.59z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "omega", + "wysiwyg", + "symbols" + ], + "defaultCode": 60006, + "grid": 16 + }, + { + "id": 359, + "paths": [ + "M941.606 734.708l44.394-94.708h38l-64 384h-960v-74.242l331.546-391.212-331.546-331.546v-227h980l44 256h-34.376l-18.72-38.88c-35.318-73.364-61.904-89.12-138.904-89.12h-662l353.056 353.056-297.42 350.944h542.364c116.008 0 146.648-41.578 173.606-97.292z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sigma", + "wysiwyg", + "symbols" + ], + "defaultCode": 60007, + "grid": 16 + }, + { + "id": 360, + "paths": [ + "M0 512h128v64h-128zM192 512h192v64h-192zM448 512h128v64h-128zM640 512h192v64h-192zM896 512h128v64h-128zM880 0l16 448h-768l16-448h32l16 384h640l16-384zM144 1024l-16-384h768l-16 384h-32l-16-320h-640l-16 320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "page-break", + "wysiwyg" + ], + "defaultCode": 60008, + "grid": 16 + }, + { + "id": 361, + "paths": [ + "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "superscript", + "wysiwyg" + ], + "defaultCode": 60009, + "grid": 16 + }, + { + "id": 362, + "paths": [ + "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "subscript", + "wysiwyg" + ], + "defaultCode": 60010, + "grid": 16 + }, + { + "id": 363, + "paths": [ + "M194.018 832l57.6-192h264.764l57.6 192h113.632l-192-640h-223.232l-192 640h113.636zM347.618 320h72.764l57.6 192h-187.964l57.6-192zM704 832l160-256 160 256h-320z", + "M864 128h-64c-17.644 0-32-14.356-32-32s14.356-32 32-32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32h-128c-52.936 0-96 43.066-96 96 0 24.568 9.288 47.002 24.524 64 17.588 19.624 43.11 32 71.476 32h64c17.644 0 32 14.356 32 32s-14.356 32-32 32h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c52.936 0 96-43.066 96-96 0-24.568-9.288-47.002-24.524-64-17.588-19.624-43.108-32-71.476-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "superscript", + "wysiwyg" + ], + "defaultCode": 60011, + "grid": 16 + }, + { + "id": 364, + "paths": [ + "M194.018 832l57.6-192h264.764l57.6 192h113.632l-192-640h-223.232l-192 640h113.636zM347.618 320h72.764l57.6 192h-187.964l57.6-192zM1024 192l-160 256-160-256h320z", + "M864 832h-64c-17.644 0-32-14.356-32-32s14.356-32 32-32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32h-128c-52.936 0-96 43.066-96 96 0 24.568 9.29 47.002 24.524 64 17.588 19.624 43.112 32 71.476 32h64c17.644 0 32 14.356 32 32s-14.356 32-32 32h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c52.936 0 96-43.066 96-96 0-24.568-9.29-47.002-24.524-64-17.588-19.624-43.108-32-71.476-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "subscript", + "wysiwyg" + ], + "defaultCode": 60012, + "grid": 16 + }, + { + "id": 365, + "paths": [ + "M322.018 832l57.6-192h264.764l57.6 192h113.632l-191.996-640h-223.236l-192 640h113.636zM475.618 320h72.764l57.6 192h-187.964l57.6-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "text-color", + "wysiwyg" + ], + "defaultCode": 60013, + "grid": 16 + }, + { + "id": 366, + "paths": [ + "M256 384v-384h768v384h-64v-320h-640v320zM1024 576v448h-768v-448h64v384h640v-384zM512 448h128v64h-128zM320 448h128v64h-128zM704 448h128v64h-128zM896 448h128v64h-128zM0 288l192 192-192 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pagebreak", + "wysiwyg" + ], + "defaultCode": 60014, + "grid": 16 + }, + { + "id": 367, + "paths": [ + "M0 896h576v128h-576zM896 128h-302.56l-183.764 704h-132.288l183.762-704h-269.15v-128h704zM929.774 1024l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "clear-formatting", + "wysiwyg", + "remove-style" + ], + "defaultCode": 60015, + "grid": 16 + }, + { + "id": 368, + "paths": [ + "M0 192v704h1024v-704h-1024zM384 640v-128h256v128h-256zM640 704v128h-256v-128h256zM640 320v128h-256v-128h256zM320 320v128h-256v-128h256zM64 512h256v128h-256v-128zM704 512h256v128h-256v-128zM704 448v-128h256v128h-256zM64 704h256v128h-256v-128zM704 832v-128h256v128h-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "table", + "wysiwyg" + ], + "defaultCode": 60016, + "grid": 16 + }, + { + "id": 369, + "paths": [ + "M0 64v896h1024v-896h-1024zM384 640v-192h256v192h-256zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "table", + "wysiwyg" + ], + "defaultCode": 60017, + "grid": 16 + }, + { + "id": 370, + "paths": [ + "M384 192h128v64h-128zM576 192h128v64h-128zM896 192v256h-192v-64h128v-128h-64v-64zM320 384h128v64h-128zM512 384h128v64h-128zM192 256v128h64v64h-128v-256h192v64zM384 576h128v64h-128zM576 576h128v64h-128zM896 576v256h-192v-64h128v-128h-64v-64zM320 768h128v64h-128zM512 768h128v64h-128zM192 640v128h64v64h-128v-256h192v64zM960 64h-896v896h896v-896zM1024 0v0 1024h-1024v-1024h1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "insert-template", + "wysiwyg" + ], + "defaultCode": 60018, + "grid": 16 + }, + { + "id": 371, + "paths": [ + "M384 0h512v128h-128v896h-128v-896h-128v896h-128v-512c-141.384 0-256-114.616-256-256s114.616-256 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pilcrow", + "wysiwyg" + ], + "defaultCode": 60019, + "grid": 16 + }, + { + "id": 372, + "paths": [ + "M512 0c-141.384 0-256 114.616-256 256s114.616 256 256 256v512h128v-896h128v896h128v-896h128v-128h-512zM0 704l256-256-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ltr", + "wysiwyg", + "left-to-right", + "direction" + ], + "defaultCode": 60020, + "grid": 16 + }, + { + "id": 373, + "paths": [ + "M256 0c-141.384 0-256 114.616-256 256s114.616 256 256 256v512h128v-896h128v896h128v-896h128v-128h-512zM1024 192l-256 256 256 256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "rtl", + "wysiwyg", + "right-to-left", + "direction" + ], + "defaultCode": 60021, + "grid": 16 + }, + { + "id": 374, + "paths": [ + "M495.964 1024c-49.36 0-91.116-14.406-124.104-42.82-33.224-28.614-50.068-62.038-50.068-99.344 0-18.128 6.6-33.756 19.622-46.458 13.232-12.914 29.782-19.744 47.85-19.744 18.002 0 34.194 6.41 46.826 18.542 12.472 11.972 18.796 27.824 18.796 47.104 0 11.318-1.85 23.818-5.494 37.146-3.616 13.178-4.376 19.938-4.376 23.292 0 3.682 0.924 8.076 7.774 12.756 12.76 8.824 28.066 13.084 46.876 13.084 22.576 0 42.718-7.858 61.574-24.022 18.578-15.942 27.612-32.318 27.612-50.056 0-19.736-5.27-36.826-16.12-52.242-18.336-25.758-52.878-55.954-102.612-89.668-79.858-53.454-133.070-99.766-162.58-141.52-22.89-32.684-34.476-67.89-34.476-104.704 0-37.062 12.142-73.948 36.092-109.63 20.508-30.554 50.8-58.12 90.228-82.138-21.096-22.7-36.896-44.064-47.094-63.688-12.872-24.76-19.398-50.372-19.398-76.122 0-47.814 18.91-89.16 56.206-122.89 37.32-33.76 83.86-50.878 138.322-50.878 50.086 0 92.206 14.082 125.182 41.852 33.328 28.082 50.222 60.898 50.222 97.54 0 18.656-6.986 35.364-20.766 49.66l-0.276 0.282c-7.976 7.924-22.618 17.37-47.046 17.37-19.148 0-35.934-6.272-48.54-18.136-12.558-11.794-18.93-25.918-18.93-41.966 0-6.934 1.702-17.416 5.352-32.98 1.778-7.364 2.668-14.142 2.668-20.25 0-10.338-3.726-18.272-11.724-24.966-8.282-6.93-20.108-10.302-36.142-10.302-24.868 0-45.282 7.562-62.41 23.118-17.19 15.606-25.544 34.088-25.544 56.508 0 20.156 4.568 36.762 13.58 49.362 17.112 23.938 46.796 49.79 88.22 76.836 84.17 54.588 142.902 104.672 174.518 148.826 23.35 33.12 35.152 68.34 35.152 104.792 0 36.598-11.882 73.496-35.318 109.676-20.208 31.18-50.722 59.276-90.884 83.71 22.178 23.466 37.812 44.042 47.554 62.538 12.082 22.97 18.208 48.048 18.208 74.542 0 49.664-18.926 91.862-56.244 125.422-37.34 33.554-83.866 50.566-138.288 50.566zM446.416 356.346c-48.222 28.952-71.712 62.19-71.712 101.314 0 22.756 6.498 43.13 19.86 62.278 19.936 27.926 59.27 62.054 116.804 101.288 24.358 16.586 46.36 32.712 65.592 48.060 49.060-29.504 72.956-62.366 72.956-100.178 0-20.598-8.142-42.774-24.204-65.916-16.808-24.196-52.85-55.796-107.128-93.914-28.328-19.562-52.558-37.334-72.168-52.932z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "section", + "wysiwyg" + ], + "defaultCode": 60022, + "grid": 16 + }, + { + "id": 375, + "paths": [ + "M0 64h1024v128h-1024zM0 256h640v128h-640zM0 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-left", + "wysiwyg", + "align-left", + "left" + ], + "defaultCode": 60023, + "grid": 16 + }, + { + "id": 376, + "paths": [ + "M0 64h1024v128h-1024zM192 256h640v128h-640zM192 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-center", + "wysiwyg", + "align-center", + "center" + ], + "defaultCode": 60024, + "grid": 16 + }, + { + "id": 377, + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-right", + "wysiwyg", + "align-right", + "right" + ], + "defaultCode": 60025, + "grid": 16 + }, + { + "id": 378, + "paths": [ + "M0 64h1024v128h-1024zM0 256h1024v128h-1024zM0 448h1024v128h-1024zM0 640h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paragraph-justify", + "wysiwyg", + "justify" + ], + "defaultCode": 60026, + "grid": 16 + }, + { + "id": 379, + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM0 704v-384l256 192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "indent-increase", + "wysiwyg" + ], + "defaultCode": 60027, + "grid": 16 + }, + { + "id": 380, + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM256 320v384l-256-192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "indent-decrease", + "wysiwyg" + ], + "defaultCode": 60028, + "grid": 16 + }, + { + "id": 381, + "paths": [ + "M256 640c0 0 58.824-192 384-192v192l384-256-384-256v192c-256 0-384 159.672-384 320zM704 768h-576v-384h125.876c10.094-11.918 20.912-23.334 32.488-34.18 43.964-41.19 96.562-72.652 156.114-93.82h-442.478v640h832v-268.624l-128 85.334v55.29z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "share", + "out", + "external", + "outside" + ], + "defaultCode": 60029, + "grid": 16 + }, + { + "id": 382, + "paths": [ + "M192 64v768h768v-768h-768zM896 768h-640v-640h640v640zM128 896v-672l-64-64v800h800l-64-64h-672z", + "M352 256l160 160-192 192 96 96 192-192 160 160v-416z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "new-tab", + "out", + "external", + "outside", + "popout", + "link", + "blank" + ], + "defaultCode": 60030, + "grid": 16 + }, + { + "id": 383, + "paths": [ + "M576 736l96 96 320-320-320-320-96 96 224 224z", + "M448 288l-96-96-320 320 320 320 96-96-224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "embed", + "code", + "html", + "xml" + ], + "defaultCode": 60031, + "grid": 16 + }, + { + "id": 384, + "paths": [ + "M832 736l96 96 320-320-320-320-96 96 224 224z", + "M448 288l-96-96-320 320 320 320 96-96-224-224z", + "M701.298 150.519l69.468 18.944-191.987 704.026-69.468-18.944 191.987-704.026z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "embed", + "code", + "html", + "xml" + ], + "defaultCode": 60032, + "grid": 16 + }, + { + "id": 385, + "paths": [ + "M0 64v896h1024v-896h-1024zM960 896h-896v-768h896v768zM896 192h-768v640h768v-640zM448 512h-64v64h-64v64h-64v-64h64v-64h64v-64h-64v-64h-64v-64h64v64h64v64h64v64zM704 640h-192v-64h192v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "terminal", + "console", + "cmd", + "command-line" + ], + "defaultCode": 60033, + "grid": 16 + }, + { + "id": 386, + "paths": [ + "M864 704c-45.16 0-85.92 18.738-115.012 48.83l-431.004-215.502c1.314-8.252 2.016-16.706 2.016-25.328s-0.702-17.076-2.016-25.326l431.004-215.502c29.092 30.090 69.852 48.828 115.012 48.828 88.366 0 160-71.634 160-160s-71.634-160-160-160-160 71.634-160 160c0 8.622 0.704 17.076 2.016 25.326l-431.004 215.504c-29.092-30.090-69.852-48.83-115.012-48.83-88.366 0-160 71.636-160 160 0 88.368 71.634 160 160 160 45.16 0 85.92-18.738 115.012-48.828l431.004 215.502c-1.312 8.25-2.016 16.704-2.016 25.326 0 88.368 71.634 160 160 160s160-71.632 160-160c0-88.364-71.634-160-160-160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "share", + "social" + ], + "defaultCode": 60034, + "grid": 16 + }, + { + "id": 387, + "paths": [ + "M853.31 0h-682.62c-93.88 0-170.69 76.784-170.69 170.658v682.656c0 93.876 76.81 170.686 170.69 170.686h682.622c93.938 0 170.688-76.81 170.688-170.686v-682.656c0-93.874-76.75-170.658-170.69-170.658zM256 256h512c9.138 0 18.004 1.962 26.144 5.662l-282.144 329.168-282.144-329.17c8.14-3.696 17.006-5.66 26.144-5.66zM192 704v-384c0-1.34 0.056-2.672 0.14-4l187.664 218.94-185.598 185.6c-1.444-5.338-2.206-10.886-2.206-16.54zM768 768h-512c-5.654 0-11.202-0.762-16.54-2.206l182.118-182.118 90.422 105.496 90.424-105.494 182.116 182.118c-5.34 1.442-10.886 2.204-16.54 2.204zM832 704c0 5.654-0.762 11.2-2.206 16.54l-185.598-185.598 187.664-218.942c0.084 1.328 0.14 2.66 0.14 4v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60035, + "grid": 16 + }, + { + "id": 388, + "paths": [ + "M853.342 0h-682.656c-93.874 0-170.686 76.81-170.686 170.69v682.622c0 93.938 76.812 170.688 170.686 170.688h682.656c93.876 0 170.658-76.75 170.658-170.69v-682.62c0-93.88-76.782-170.69-170.658-170.69zM853.342 128c7.988 0 15.546 2.334 22.020 6.342l-363.362 300.404-363.354-300.4c6.478-4.010 14.044-6.346 22.040-6.346h682.656zM170.686 896c-1.924 0-3.82-0.146-5.684-0.408l225.626-312.966-29.256-29.254-233.372 233.37v-611.138l384 464.396 384-464.394v611.136l-233.372-233.37-29.254 29.254 225.628 312.968c-1.858 0.26-3.746 0.406-5.662 0.406h-682.654z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60036, + "grid": 16 + }, + { + "id": 389, + "paths": [ + "M853.342 0h-682.656c-93.874 0-170.686 76.81-170.686 170.69v682.622c0 93.938 76.812 170.688 170.686 170.688h682.656c93.876 0 170.658-76.75 170.658-170.69v-682.62c0-93.88-76.782-170.69-170.658-170.69zM182.628 886.626l-77.256-77.254 256-256 29.256 29.254-208 304zM153.372 198.628l29.256-29.256 329.372 265.374 329.374-265.374 29.254 29.256-358.628 422.626-358.628-422.626zM841.374 886.626l-208-304 29.254-29.254 256 256-77.254 77.254z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60037, + "grid": 16 + }, + { + "id": 390, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM256 256h512c9.138 0 18.004 1.962 26.144 5.662l-282.144 329.168-282.144-329.17c8.14-3.696 17.006-5.66 26.144-5.66zM192 704v-384c0-1.34 0.056-2.672 0.14-4l187.664 218.942-185.598 185.598c-1.444-5.336-2.206-10.886-2.206-16.54zM768 768h-512c-5.654 0-11.202-0.762-16.54-2.208l182.118-182.118 90.422 105.498 90.424-105.494 182.116 182.12c-5.34 1.44-10.886 2.202-16.54 2.202zM832 704c0 5.654-0.762 11.2-2.206 16.54l-185.6-185.598 187.666-218.942c0.084 1.328 0.14 2.66 0.14 4v384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "mail", + "contact", + "support", + "newsletter", + "letter", + "email", + "envelop", + "social" + ], + "defaultCode": 60038, + "grid": 16 + }, + { + "id": 391, + "paths": [ + "M925.6 885.2c-112.2 82.8-274.6 126.8-414.6 126.8-196.2 0-372.8-72.4-506.4-193.2-10.4-9.4-1.2-22.4 11.4-15 144.2 84 322.6 134.4 506.8 134.4 124.2 0 260.8-25.8 386.6-79.2 18.8-8 34.8 12.6 16.2 26.2z", + "M972.2 832c-14.4-18.4-94.8-8.8-131-4.4-11 1.2-12.6-8.2-2.8-15.2 64.2-45 169.4-32 181.6-17 12.4 15.2-3.2 120.6-63.4 171-9.2 7.8-18 3.6-14-6.6 13.8-33.8 44-109.4 29.6-127.8z", + "M707.4 757.6l0.2 0.2c24.8-21.8 69.4-60.8 94.6-81.8 10-8 8.2-21.4 0.4-32.6-22.6-31.2-46.6-56.6-46.6-114.2v-192c0-81.4 5.6-156-54.2-212-47.2-45.2-125.6-61.2-185.6-61.2-117.2 0-248 43.8-275.4 188.6-3 15.4 8.4 23.6 18.4 25.8l119.4 13c11.2-0.6 19.2-11.6 21.4-22.8 10.2-49.8 52-74 99-74 25.4 0 54.2 9.2 69.2 32 17.2 25.4 15 60 15 89.4v16c-71.4 8-164.8 13.2-231.6 42.6-77.2 33.4-131.4 101.4-131.4 201.4 0 128 80.6 192 184.4 192 87.6 0 135.4-20.6 203-89.8 22.4 32.4 29.6 48.2 70.6 82.2 9.4 5 21 4.6 29.2-2.8zM583.2 457.2c0 48 1.2 88-23 130.6-19.6 34.8-50.6 56-85.2 56-47.2 0-74.8-36-74.8-89.2 0-105 94.2-124 183.2-124v26.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "amazon", + "brand" + ], + "defaultCode": 60039, + "grid": 16 + }, + { + "id": 392, + "paths": [ + "M522.2 438.8v175.6h290.4c-11.8 75.4-87.8 220.8-290.4 220.8-174.8 0-317.4-144.8-317.4-323.2s142.6-323.2 317.4-323.2c99.4 0 166 42.4 204 79l139-133.8c-89.2-83.6-204.8-134-343-134-283 0-512 229-512 512s229 512 512 512c295.4 0 491.6-207.8 491.6-500.2 0-33.6-3.6-59.2-8-84.8l-483.6-0.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google", + "brand" + ], + "defaultCode": 60040, + "grid": 16 + }, + { + "id": 393, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM519.6 896c-212.2 0-384-171.8-384-384s171.8-384 384-384c103.6 0 190.4 37.8 257.2 100.4l-104.2 100.4c-28.6-27.4-78.4-59.2-153-59.2-131.2 0-238 108.6-238 242.4s107 242.4 238 242.4c152 0 209-109.2 217.8-165.6h-217.8v-131.6h362.6c3.2 19.2 6 38.4 6 63.6 0.2 219.4-146.8 375.2-368.6 375.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google", + "brand" + ], + "defaultCode": 60041, + "grid": 16 + }, + { + "id": 394, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM519.6 896c-212.2 0-384-171.8-384-384s171.8-384 384-384c103.6 0 190.4 37.8 257.2 100.4l-104.2 100.4c-28.6-27.4-78.4-59.2-153-59.2-131.2 0-238 108.6-238 242.4s107 242.4 238 242.4c152 0 209-109.2 217.8-165.6h-217.8v-131.6h362.6c3.2 19.2 6 38.4 6 63.6 0.2 219.4-146.8 375.2-368.6 375.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google", + "brand" + ], + "defaultCode": 60042, + "grid": 16 + }, + { + "id": 395, + "paths": [ + "M325.8 457.4v111.8h184.8c-7.4 48-55.8 140.6-184.8 140.6-111.2 0-202-92.2-202-205.8s90.8-205.8 202-205.8c63.4 0 105.6 27 129.8 50.2l88.4-85.2c-56.8-53-130.4-85.2-218.2-85.2-180.2 0.2-325.8 145.8-325.8 326s145.6 325.8 325.8 325.8c188 0 312.8-132.2 312.8-318.4 0-21.4-2.4-37.8-5.2-54h-307.6z", + "M1024 448h-96v-96h-96v96h-96v96h96v96h96v-96h96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-plus", + "brand", + "social" + ], + "defaultCode": 60043, + "grid": 16 + }, + { + "id": 396, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 768c-141.6 0-256-114.4-256-256s114.4-256 256-256c69.2 0 127 25.2 171.6 67l-69.6 66.8c-19-18.2-52.2-39.4-102-39.4-87.4 0-158.8 72.4-158.8 161.6s71.4 161.6 158.8 161.6c101.4 0 139.4-72.8 145.2-110.4h-145.2v-87.8h241.8c2.2 12.8 4 25.6 4 42.4 0 146.4-98 250.2-245.8 250.2zM896 512h-64v64h-64v-64h-64v-64h64v-64h64v64h64v64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-plus", + "brand", + "social" + ], + "defaultCode": 60044, + "grid": 16 + }, + { + "id": 397, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM384 768c-141.6 0-256-114.4-256-256s114.4-256 256-256c69.2 0 127 25.2 171.6 67l-69.6 66.8c-19-18.2-52.2-39.4-102-39.4-87.4 0-158.8 72.4-158.8 161.6s71.4 161.6 158.8 161.6c101.4 0 139.4-72.8 145.2-110.4h-145.2v-87.8h241.8c2.2 12.8 4 25.6 4 42.4 0 146.4-98 250.2-245.8 250.2zM832 512v64h-64v-64h-64v-64h64v-64h64v64h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-plus", + "brand", + "social" + ], + "defaultCode": 60045, + "grid": 16 + }, + { + "id": 398, + "paths": [ + "M511.8 0c-244.2 0-442.2 198-442.2 442.2 0 231.4 210.8 419 442.2 419v162.8c268.6-136.2 442.6-355.6 442.6-581.8 0-244.2-198.4-442.2-442.6-442.2zM448 512c0 53-28.6 96-64 96v-96h-128v-192h192v192zM768 512c0 53-28.6 96-64 96v-96h-128v-192h192v192z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hangouts", + "brand", + "social" + ], + "defaultCode": 60046, + "grid": 16 + }, + { + "id": 399, + "paths": [ + "M438 640l-184.6 320h580.6l184.6-320z", + "M992.4 576l-295.6-512h-369.6l295.6 512z", + "M290.2 128l-290.2 502.8 184.8 320 290.2-502.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "google-drive", + "brand" + ], + "defaultCode": 60047, + "grid": 16 + }, + { + "id": 400, + "paths": [ + "M608 192h160v-192h-160c-123.514 0-224 100.486-224 224v96h-128v192h128v512h192v-512h160l32-192h-192v-96c0-17.346 14.654-32 32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "facebook", + "brand", + "social" + ], + "defaultCode": 60048, + "grid": 16 + }, + { + "id": 401, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h416v-448h-128v-128h128v-64c0-105.8 86.2-192 192-192h128v128h-128c-35.2 0-64 28.8-64 64v64h192l-32 128h-160v448h288c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "facebook", + "brand", + "social" + ], + "defaultCode": 60049, + "grid": 16 + }, + { + "id": 402, + "paths": [ + "M512 92.2c136.8 0 153 0.6 206.8 3 50 2.2 77 10.6 95 17.6 23.8 9.2 41 20.4 58.8 38.2 18 18 29 35 38.4 58.8 7 18 15.4 45.2 17.6 95 2.4 54 3 70.2 3 206.8s-0.6 153-3 206.8c-2.2 50-10.6 77-17.6 95-9.2 23.8-20.4 41-38.2 58.8-18 18-35 29-58.8 38.4-18 7-45.2 15.4-95 17.6-54 2.4-70.2 3-206.8 3s-153-0.6-206.8-3c-50-2.2-77-10.6-95-17.6-23.8-9.2-41-20.4-58.8-38.2-18-18-29-35-38.4-58.8-7-18-15.4-45.2-17.6-95-2.4-54-3-70.2-3-206.8s0.6-153 3-206.8c2.2-50 10.6-77 17.6-95 9.2-23.8 20.4-41 38.2-58.8 18-18 35-29 58.8-38.4 18-7 45.2-15.4 95-17.6 53.8-2.4 70-3 206.8-3zM512 0c-139 0-156.4 0.6-211 3-54.4 2.4-91.8 11.2-124.2 23.8-33.8 13.2-62.4 30.6-90.8 59.2-28.6 28.4-46 57-59.2 90.6-12.6 32.6-21.4 69.8-23.8 124.2-2.4 54.8-3 72.2-3 211.2s0.6 156.4 3 211c2.4 54.4 11.2 91.8 23.8 124.2 13.2 33.8 30.6 62.4 59.2 90.8 28.4 28.4 57 46 90.6 59 32.6 12.6 69.8 21.4 124.2 23.8 54.6 2.4 72 3 211 3s156.4-0.6 211-3c54.4-2.4 91.8-11.2 124.2-23.8 33.6-13 62.2-30.6 90.6-59s46-57 59-90.6c12.6-32.6 21.4-69.8 23.8-124.2 2.4-54.6 3-72 3-211s-0.6-156.4-3-211c-2.4-54.4-11.2-91.8-23.8-124.2-12.6-34-30-62.6-58.6-91-28.4-28.4-57-46-90.6-59-32.6-12.6-69.8-21.4-124.2-23.8-54.8-2.6-72.2-3.2-211.2-3.2v0z", + "M512 249c-145.2 0-263 117.8-263 263s117.8 263 263 263 263-117.8 263-263c0-145.2-117.8-263-263-263zM512 682.6c-94.2 0-170.6-76.4-170.6-170.6s76.4-170.6 170.6-170.6c94.2 0 170.6 76.4 170.6 170.6s-76.4 170.6-170.6 170.6z", + "M846.8 238.6c0 33.91-27.49 61.4-61.4 61.4s-61.4-27.49-61.4-61.4c0-33.91 27.49-61.4 61.4-61.4s61.4 27.49 61.4 61.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "instagram", + "brand", + "social" + ], + "defaultCode": 60050, + "grid": 16 + }, + { + "id": 403, + "paths": [ + "M873 148.8c-95.8-96-223.2-148.8-359-148.8-279.6 0-507.2 227.6-507.2 507.4 0 89.4 23.4 176.8 67.8 253.6l-72 263 269-70.6c74.2 40.4 157.6 61.8 242.4 61.8h0.2c0 0 0 0 0 0 279.6 0 507.4-227.6 507.4-507.4 0-135.6-52.8-263-148.6-359zM514.2 929.6v0c-75.8 0-150-20.4-214.8-58.8l-15.4-9.2-159.6 41.8 42.6-155.6-10-16c-42.4-67-64.6-144.6-64.6-224.4 0-232.6 189.2-421.8 422-421.8 112.6 0 218.6 44 298.2 123.6 79.6 79.8 123.4 185.6 123.4 298.4-0.2 232.8-189.4 422-421.8 422zM745.4 613.6c-12.6-6.4-75-37-86.6-41.2s-20-6.4-28.6 6.4c-8.4 12.6-32.8 41.2-40.2 49.8-7.4 8.4-14.8 9.6-27.4 3.2s-53.6-19.8-102-63c-37.6-33.6-63.2-75.2-70.6-87.8s-0.8-19.6 5.6-25.8c5.8-5.6 12.6-14.8 19-22.2s8.4-12.6 12.6-21.2c4.2-8.4 2.2-15.8-1-22.2s-28.6-68.8-39-94.2c-10.2-24.8-20.8-21.4-28.6-21.8-7.4-0.4-15.8-0.4-24.2-0.4s-22.2 3.2-33.8 15.8c-11.6 12.6-44.4 43.4-44.4 105.8s45.4 122.6 51.8 131.2c6.4 8.4 89.4 136.6 216.6 191.4 30.2 13 53.8 20.8 72.2 26.8 30.4 9.6 58 8.2 79.8 5 24.4-3.6 75-30.6 85.6-60.2s10.6-55 7.4-60.2c-3-5.6-11.4-8.8-24.2-15.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "whatsapp", + "brand", + "social" + ], + "defaultCode": 60051, + "grid": 16 + }, + { + "id": 404, + "paths": [ + "M512 0c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512-227.8-512-512-512zM747.6 739.8c-10.2 15.4-28.2 20.4-43.6 10.2-120.4-74.2-271.4-89.6-450.6-48.6-18 5.2-33.2-7.6-38.4-23-5.2-18 7.6-33.2 23-38.4 194.6-43.6 363.6-25.6 496.6 56.4 18 7.6 20.6 28 13 43.4zM809 599c-12.8 18-35.8 25.6-53.8 12.8-138.2-84.4-348.2-110-509.4-58.8-20.4 5.2-43.6-5.2-48.6-25.6-5.2-20.4 5.2-43.6 25.6-48.6 186.8-56.4 417.2-28.2 576 69.2 15.2 7.6 23 33.2 10.2 51zM814 455.6c-163.8-97.2-437.8-107.6-594-58.8-25.6 7.6-51.2-7.6-58.8-30.8-7.6-25.6 7.6-51.2 30.8-58.8 181.8-53.8 481.2-43.6 670.8 69.2 23 12.8 30.8 43.6 18 66.6-13 17.8-43.6 25.4-66.8 12.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "spotify", + "brand", + "social" + ], + "defaultCode": 60052, + "grid": 16 + }, + { + "id": 405, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM763.6 351l-84 395.8c-5.8 28.2-22.8 34.8-46.4 21.8l-128-94.6-61.4 59.8c-7.2 7-12.8 12.8-25.6 12.8-16.6 0-13.8-6.2-19.4-22l-43.6-143.2-126.6-39.4c-27.4-8.4-27.6-27.2 6.2-40.6l493.2-190.4c22.4-10.2 44.2 5.4 35.6 40z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "telegram", + "brand", + "social" + ], + "defaultCode": 60053, + "grid": 16 + }, + { + "id": 406, + "paths": [ + "M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "twitter", + "brand", + "tweet", + "social" + ], + "defaultCode": 60054, + "grid": 16 + }, + { + "id": 407, + "paths": [ + "M960.8 509c-26.4 6-51.8 8.8-74.8 8.8-129.2 0-228.6-90.2-228.6-247.2 0-77 29.8-116.8 71.8-116.8 40 0 66.6 35.8 66.6 108.6 0 41.4-11 86.8-19.2 113.6 0 0 39.8 69.4 148.6 48.2 23.2-51.4 35.6-117.8 35.6-176 0-156.8-80-248.2-226.6-248.2-150.8 0-239 115.8-239 268.6 0 151.4 70.8 281.2 187.4 340.4-49 98.2-111.4 184.6-176.6 249.8-118-142.8-224.8-333.2-268.6-705h-174.2c80.6 619.2 320.4 816.4 384 854.2 35.8 21.6 66.8 20.6 99.6 2 51.6-29.2 206.2-184 292-365 36 0 79.2-4.2 122.2-14v-122z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vine", + "brand", + "social" + ], + "defaultCode": 60055, + "grid": 16 + }, + { + "id": 408, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM829.4 716.8l-93.6 1.4c0 0-20.2 4-46.6-14.2-35-24-68-86.6-93.8-78.4-26 8.2-25.2 64.4-25.2 64.4s0.2 12-5.8 18.4c-6.4 7-19.2 8.4-19.2 8.4h-41.8c0 0-92.4 5.6-173.8-79.2-88.8-92.4-167.2-275.8-167.2-275.8s-4.6-12 0.4-17.8c5.6-6.6 20.6-7 20.6-7l100.2-0.6c0 0 9.4 1.6 16.2 6.6 5.6 4 8.6 11.8 8.6 11.8s16.2 41 37.6 78c41.8 72.2 61.4 88 75.6 80.4 20.6-11.2 14.4-102.2 14.4-102.2s0.4-33-10.4-47.6c-8.4-11.4-24.2-14.8-31-15.6-5.6-0.8 3.6-13.8 15.6-19.8 18-8.8 49.8-9.4 87.4-9 29.2 0.2 37.8 2.2 49.2 4.8 34.6 8.4 22.8 40.6 22.8 117.8 0 24.8-4.4 59.6 13.4 71 7.6 5 26.4 0.8 73.4-79 22.2-37.8 39-82.2 39-82.2s3.6-8 9.2-11.4c5.8-3.4 13.6-2.4 13.6-2.4l105.4-0.6c0 0 31.6-3.8 36.8 10.6 5.4 15-11.8 50-54.8 107.4-70.6 94.2-78.6 85.4-19.8 139.8 56 52 67.6 77.4 69.6 80.6 22.8 38.4-26 41.4-26 41.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vk", + "brand", + "social" + ], + "defaultCode": 60056, + "grid": 16 + }, + { + "id": 409, + "paths": [ + "M425.2 10.6c-241.2 40.6-425.2 250.4-425.2 503.2 0 125.6 45.6 240.6 120.8 329.6 178.6-86.4 303.6-282 304.4-509.8v-323z", + "M598.8 10.6c241.2 40.6 425.2 250.4 425.2 503.2 0 125.6-45.6 240.6-120.8 329.6-178.6-86.4-303.6-282-304.4-509.8v-323z", + "M510.2 642.6c-31.8 131.6-126.8 244-245 318.8 72.8 39.8 156.2 62.6 245 62.6s172.2-22.8 245-62.6c-118.2-74.8-213.2-187.2-245-318.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "renren", + "brand", + "social" + ], + "defaultCode": 60057, + "grid": 16 + }, + { + "id": 410, + "paths": [ + "M430.2 898c-169.6 16.8-316-60-327-171.2-11-111.4 117.6-215 287-231.8 169.6-16.8 316 60 326.8 171.2 11.2 111.4-117.4 215.2-286.8 231.8zM769.2 528.6c-14.4-4.4-24.4-7.2-16.8-26.2 16.4-41.2 18-76.6 0.2-102-33.2-47.4-124.2-45-228.4-1.2 0 0-32.8 14.2-24.4-11.6 16-51.6 13.6-94.6-11.4-119.6-56.6-56.6-207 2.2-336 131.2-96.4 96.2-152.4 198.8-152.4 287.4 0 169.2 217.2 272.2 429.6 272.2 278.4 0 463.8-161.8 463.8-290.2 0-77.8-65.4-121.8-124.2-140z", + "M954.2 218.6c-67.2-74.6-166.4-103-258-83.6v0c-21.2 4.6-34.6 25.4-30 46.4 4.6 21.2 25.2 34.6 46.4 30 65.2-13.8 135.6 6.4 183.4 59.4s60.8 125.2 40.2 188.4v0c-6.6 20.6 4.6 42.6 25.2 49.4 20.6 6.6 42.6-4.6 49.4-25.2v-0.2c28.8-88.4 10.6-190-56.6-264.6z", + "M850.8 312c-32.8-36.4-81.2-50.2-125.6-40.6-18.2 3.8-29.8 22-26 40.2 4 18.2 22 29.8 40 25.8v0c21.8-4.6 45.4 2.2 61.4 19.8 16 17.8 20.4 42 13.4 63.2v0c-5.6 17.6 4 36.8 21.8 42.6 17.8 5.6 36.8-4 42.6-21.8 14-43.4 5.2-93-27.6-129.2z", + "M439.6 696.6c-6 10.2-19 15-29.2 10.8-10.2-4-13.2-15.6-7.4-25.4 6-9.8 18.6-14.6 28.6-10.8 10 3.6 13.6 15 8 25.4zM385.4 765.8c-16.4 26.2-51.6 37.6-78 25.6-26-11.8-33.8-42.2-17.4-67.8 16.2-25.4 50.2-36.8 76.4-25.8 26.6 11.4 35.2 41.6 19 68zM447 580.6c-80.6-21-171.8 19.2-206.8 90.2-35.8 72.4-1.2 153 80.2 179.4 84.4 27.2 184-14.6 218.6-92.6 34.2-76.6-8.4-155.2-92-177z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "sina-weibo", + "brand", + "social" + ], + "defaultCode": 60058, + "grid": 16 + }, + { + "id": 411, + "paths": [ + "M136.294 750.93c-75.196 0-136.292 61.334-136.292 136.076 0 75.154 61.1 135.802 136.292 135.802 75.466 0 136.494-60.648 136.494-135.802-0.002-74.742-61.024-136.076-136.494-136.076zM0.156 347.93v196.258c127.784 0 247.958 49.972 338.458 140.512 90.384 90.318 140.282 211.036 140.282 339.3h197.122c-0.002-372.82-303.282-676.070-675.862-676.070zM0.388 0v196.356c455.782 0 826.756 371.334 826.756 827.644h196.856c0-564.47-459.254-1024-1023.612-1024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "rss", + "social" + ], + "defaultCode": 60059, + "grid": 16 + }, + { + "id": 412, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM279 831.2c-48 0-87-38.6-87-86.6 0-47.6 39-86.8 87-86.8 48.2 0 87 39.2 87 86.8 0 48-39 86.6-87 86.6zM497.4 832c0-81.8-31.8-158.8-89.4-216.4-57.8-57.8-134.4-89.6-216-89.6v-125.2c237.6 0 431.2 193.4 431.2 431.2h-125.8zM719.6 832c0-291-236.6-528-527.4-528v-125.2c360 0 653 293.2 653 653.2h-125.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "feed", + "rss", + "social" + ], + "defaultCode": 60060, + "grid": 16 + }, + { + "id": 413, + "paths": [ + "M1013.8 307.2c0 0-10-70.6-40.8-101.6-39-40.8-82.6-41-102.6-43.4-143.2-10.4-358.2-10.4-358.2-10.4h-0.4c0 0-215 0-358.2 10.4-20 2.4-63.6 2.6-102.6 43.4-30.8 31-40.6 101.6-40.6 101.6s-10.2 82.8-10.2 165.8v77.6c0 82.8 10.2 165.8 10.2 165.8s10 70.6 40.6 101.6c39 40.8 90.2 39.4 113 43.8 82 7.8 348.2 10.2 348.2 10.2s215.2-0.4 358.4-10.6c20-2.4 63.6-2.6 102.6-43.4 30.8-31 40.8-101.6 40.8-101.6s10.2-82.8 10.2-165.8v-77.6c-0.2-82.8-10.4-165.8-10.4-165.8zM406.2 644.8v-287.8l276.6 144.4-276.6 143.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "youtube", + "brand", + "social" + ], + "defaultCode": 60061, + "grid": 16 + }, + { + "id": 414, + "paths": [ + "M344.012 169.399c0.209-0.865 0.344-1.479 0.388-1.8l1.042-7.559-47.349-0.267c-42.779-0.242-55.87 0.007-57.047 1.084-0.565 0.516-15.333 56.633-41.655 158.273-12.556 48.484-23.124 87.206-23.487 86.051s-15.391-56.498-33.397-122.98c-18.006-66.482-33.104-121.243-33.55-121.692-0.623-0.623-57.98-0.9-104.417-0.502-6.735 0.056-10.477-13.11 60.021 211.133 9.759 31.041 24.371 74.997 32.469 97.679 9.333 26.141 15.989 46.323 20.534 63.173 8.038 32.067 8.319 52.163 6.565 75.625-2.026 27.101-2.321 218.438-0.342 221.638 1.512 2.449 91.223 3.589 99.712 1.268 1.358-0.372 2.265-1.691 2.87-8.928 2.119-6.219 2.286-30.969 2.286-133.744v-131.281l5.742-18.112c3.756-11.849 13.201-42.995 20.989-69.22 7.789-26.222 17.21-57.619 20.938-69.771 33.834-110.319 66.14-218.831 66.994-225.011l0.693-5.056z", + "M846.122 328.651l-0.021 6.838-1.065 0.014-0.595 188.993-0.577 183.227-14.666 14.929c-16.424 16.719-29.585 23.101-41.488 20.113-12.963-3.254-12.64 1.8-13.722-214.768l-0.998-199.347h-94.316v6.851h-1.086v216.289c0 231.737-0.007 231.599 11.752 254.875 9.366 18.536 23.010 27.559 46.391 30.671h0.002c30.79 4.1 64.001-9.849 94.77-39.809l13.373-13.022v22.445c0 19.396 0.554 22.601 4.070 23.58 5.756 1.605 77.173 1.707 84.89 0.126l6.396-1.314v-6.628l1.086-0.223v-495.098l-94.195 1.258z", + "M606.892 426.33c-8.935-38.341-25.68-64.115-53.233-81.939-43.281-27.999-92.718-30.957-138.586-8.291-33.425 16.515-54.951 43.914-66.071 84.083-1.326 4.786-2.298 8.812-3.033 14.815-2.83 14.184-3.163 35.351-3.889 133.951-1.121 151.928 0.616 170.003 19.643 204.51 18.664 33.848 57.403 58.661 99.572 63.782 12.696 1.54 38.43-0.858 53.23-4.961 33.632-9.326 65.864-35.906 80.118-66.078 6.158-13.033 9.875-22.096 12.115-38.651 4.175-22.617 4.47-59.175 4.47-152.375-0.002-118.875-0.379-131.862-4.337-148.847zM499.34 736.003c-7.907 6.028-21.734 8.649-32.983 6.249-8.656-1.847-20.338-15.419-23.934-27.801-4.479-15.436-4.823-229.985-0.954-272.059 6.379-21.054 24.19-32.050 43.635-26.813 15.157 4.082 22.915 13.575 27.336 33.457 3.282 14.754 3.67 33.129 2.972 141.26-0.46 71.701-0.716 106.742-3.058 125.553-2.382 11.87-6.319 15.047-13.015 20.154z", + "M2300.389 534.137h45.57l-0.726-41.281c-0.705-37.869-1.263-42.2-6.324-52.472-7.982-16.21-19.759-23.401-38.446-23.401-22.448 0-36.678 10.849-43.388 33.141-2.858 9.486-5.863 74.685-3.707 80.308 1.205 3.144 7.724 3.705 47.021 3.705z", + "M1995.795 440.237c-6.077-12.247-17.385-18.278-30.525-17.806-10.221 0.365-21.561 4.677-32.488 13.010l-8.14 6.177v296.598l8.14 6.177c18.429 14.052 38.674 17.031 52.619 7.703 5.519-3.691 9.117-8.779 11.919-16.861 3.647-10.524 3.965-24.003 3.489-148.772-0.495-130.043-0.781-137.702-5.014-146.226z", + "M2560.878 306.633c-9.080-108.842-16.303-144.165-38.751-189.544-29.729-60.101-72.692-91.788-133.876-98.747-47.309-5.379-225.315-12.97-390.044-16.631-285.188-6.338-754.057 5.858-813.939 21.173-27.673 7.077-48.426 19.11-70.022 40.604-37.844 37.662-60.391 91.679-69.452 166.396-20.692 170.606-21.134 376.727-1.188 553.515 8.577 76.041 26.243 125.443 59.41 166.159 20.694 25.406 56.352 46.998 88.26 53.442 22.385 4.523 134.42 10.798 297.605 16.668 24.306 0.874 88.667 2.379 143.030 3.344 113.301 2.012 321.627 0.821 440.719-2.519 80.127-2.249 226.201-8.172 253.5-10.282 7.677-0.593 25.469-1.728 39.537-2.523 47.277-2.67 77.353-12.568 105.596-34.76 36.553-28.718 64.857-81.795 76.815-144.037 11.314-58.894 18.887-163.773 20.422-282.851 1.284-99.491-0.426-153.175-7.621-239.409zM1425.273 267.192l-52.982 0.654-2.326 565.143-45.932 0.581c-35.525 0.488-46.307-0.044-47.167-2.326-0.616-1.626-1.356-129.020-1.672-283.153l-0.581-280.246-103.493-1.307v-88.304l305.829 1.235 1.307 87.069-52.982 0.654zM1750.216 591.117v243.035h-83.725v-25.583c0-19.247-0.735-25.583-2.979-25.583-1.64 0-9.226 6.344-16.861 14.098-16.557 16.817-36.171 30.367-52.91 36.63-34.662 12.968-67.589 5.4-81.618-18.75-12.838-22.11-13.082-27.052-13.082-256.335v-210.547h83.653l0.654 198.265c0.623 194.821 0.714 198.393 5.377 206.333 6.182 10.521 15.608 13.347 30.597 9.231 8.817-2.423 14.836-6.707 29.143-20.931l18.024-17.952v-374.946h83.725v243.035zM2076.757 799.41c-7.372 16.424-23.806 32.509-37.283 36.485-35.167 10.382-63.375 1.923-95.935-28.708-10.103-9.505-19.51-17.224-20.931-17.224-1.712 0-2.616 7.449-2.616 22.094v22.094h-83.725v-655.845h83.725v106.982c0 58.84 0.786 106.982 1.744 106.982s9.789-7.807 19.624-17.298c22.629-21.841 41.548-31.399 65.557-33.213 42.811-3.24 68.327 18.794 80.018 69.117 3.647 15.696 3.998 33.625 3.998 179.078-0.002 177.178-0.021 177.918-14.175 209.457zM2430.99 702.168c-0.744 18.226-2.954 39.137-4.942 46.514-11.642 43.167-42.635 73.731-87.432 86.269-60.315 16.878-126.704-10.777-153.205-63.812-14.875-29.769-15.408-35.706-15.408-181.185 0-118.617 0.419-133.171 4.214-149.354 10.747-45.788 37.392-75.422 82.49-91.865 13.068-4.765 26.708-7.207 40.337-7.486 48.672-0.998 96.984 25.18 117.229 67.808 13.659 28.76 15.35 41.060 16.717 122.099l1.235 72.678-178.497 1.235-0.654 48.84c-0.93 68.901 3.716 90.088 22.313 102.621 15.645 10.54 39.679 9.745 52.765-1.744 12.263-10.768 15.726-22.336 16.933-56.107l1.091-29.653h86.195l-1.381 33.143z" + ], + "width": 2569, + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "youtube", + "brand", + "social" + ], + "defaultCode": 60062, + "grid": 16 + }, + { + "id": 415, + "paths": [ + "M96 0l-96 160v736h256v128h128l128-128h160l288-288v-608h-864zM832 544l-160 160h-160l-128 128v-128h-192v-576h640v416z", + "M608 256h96v256h-96v-256z", + "M416 256h96v256h-96v-256z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "twitch", + "brand", + "social" + ], + "defaultCode": 60063, + "grid": 16 + }, + { + "id": 416, + "paths": [ + "M1023.6 274c-4.6 99.6-74.2 236.2-208.8 409.4-139.2 180.8-257 271.4-353.4 271.4-59.6 0-110.2-55-151.4-165.2-27.6-101-55-202-82.6-303-30.6-110.2-63.4-165.2-98.6-165.2-7.6 0-34.4 16.2-80.4 48.2l-48.2-62c50.6-44.4 100.4-88.8 149.4-133.2 67.4-58.2 118-88.8 151.8-92 79.6-7.6 128.8 46.8 147.2 163.4 19.8 125.8 33.6 204 41.4 234.6 23 104.4 48.2 156.6 75.8 156.6 21.4 0 53.6-33.8 96.6-101.6 42.8-67.6 65.8-119.2 69-154.6 6.2-58.4-16.8-87.8-69-87.8-24.6 0-49.8 5.6-75.8 16.8 50.4-164.8 146.4-244.8 288.4-240.2 105 2.8 154.6 71 148.6 204.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vimeo", + "brand", + "social" + ], + "defaultCode": 60064, + "grid": 16 + }, + { + "id": 417, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM861.6 340c-3.2 72-53.6 170.6-151 295.8-100.6 130.8-185.8 196.2-255.4 196.2-43.2 0-79.6-39.8-109.4-119.4-20-73-39.8-146-59.8-219-22-79.6-45.8-119.4-71.2-119.4-5.6 0-25 11.6-58 34.8l-34.8-44.8c36.6-32 72.6-64.2 108-96.2 48.8-42 85.2-64.2 109.6-66.4 57.6-5.6 93 33.8 106.4 118 14.4 91 24.4 147.4 30 169.6 16.6 75.4 34.8 113 54.8 113 15.4 0 38.8-24.4 69.8-73.4s47.6-86.2 49.8-111.8c4.4-42.2-12.2-63.4-49.8-63.4-17.8 0-36 4-54.8 12.2 36.4-119 105.8-177 208.4-173.6 76 2.2 111.8 51.4 107.4 147.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "vimeo", + "brand", + "social" + ], + "defaultCode": 60065, + "grid": 16 + }, + { + "id": 418, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM822.4 768.8l-348.4 114c-79.6 26-87.6 21.8-123.6-89.6l-88-272.6c-21-64.6-85-238.6-95.8-272-20-62-20-65.4 97-103.4 91.6-30 95.4-29 128.6 74.4 26.8 83.2 44 150.4 71.6 235.4l75 232 239.6-78.4c47.2-15.6 63-14.8 76.4 43.4l9.6 44c11.2 51-14.6 64-42 72.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lanyrd", + "brand" + ], + "defaultCode": 60066, + "grid": 16 + }, + { + "id": 419, + "paths": [ + "M0 544c0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.712-100.288 224-224 224s-224-100.288-224-224zM576 544c0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.712-100.288 224-224 224s-224-100.288-224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60067, + "grid": 16 + }, + { + "id": 420, + "paths": [ + "M800 416c-70.58 0-128 57.42-128 128s57.42 128 128 128c70.58 0 128-57.42 128-128s-57.42-128-128-128zM800 320v0c123.71 0 224 100.288 224 224 0 123.71-100.29 224-224 224s-224-100.29-224-224c0-123.712 100.29-224 224-224zM0 544c0-123.712 100.288-224 224-224s224 100.288 224 224c0 123.712-100.288 224-224 224s-224-100.288-224-224z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60068, + "grid": 16 + }, + { + "id": 421, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM288 672c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zM736 672c-88.4 0-160-71.6-160-160s71.6-160 160-160c88.4 0 160 71.6 160 160s-71.6 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60069, + "grid": 16 + }, + { + "id": 422, + "paths": [ + "M512 0c-282.77 0-512 230.796-512 515.5s229.23 515.5 512 515.5 512-230.796 512-515.5-229.23-515.5-512-515.5zM288 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160c0 88.366-71.634 160-160 160zM736 672c-88.368 0-160-71.634-160-160s71.632-160 160-160 160 71.634 160 160c0 88.366-71.632 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flickr", + "brand", + "social" + ], + "defaultCode": 60070, + "grid": 16 + }, + { + "id": 423, + "paths": [ + "M512 1024c-282.4 0-512-229.6-512-512s229.6-512 512-512c282.4 0 512 229.6 512 512s-229.6 512-512 512v0zM943.8 582c-15-4.8-135.4-40.6-272.4-18.6 57.2 157.2 80.4 285.2 85 311.8 98-66.4 168-171.4 187.4-293.2v0zM682.8 915.2c-6.6-38.4-31.8-172-93.2-331.6-1 0.4-2 0.6-2.8 1-246.8 86-335.4 257-343.2 273 74.2 57.8 167.4 92.4 268.4 92.4 60.6 0 118.4-12.4 170.8-34.8v0zM187 805c10-17 130-215.6 355.4-288.6 5.6-1.8 11.4-3.6 17.2-5.2-11-24.8-23-49.8-35.4-74.2-218.2 65.4-430.2 62.6-449.4 62.4-0.2 4.4-0.2 8.8-0.2 13.4 0 112.2 42.6 214.8 112.4 292.2v0zM84 423c19.6 0.2 199.8 1 404.4-53.2-72.4-128.8-150.6-237.2-162.2-253-122.4 57.8-214 170.6-242.2 306.2v0zM409.6 87.4c12 16.2 91.6 124.4 163.2 256 155.6-58.2 221.4-146.8 229.2-158-77.2-68.6-178.8-110.2-290-110.2-35.2 0.2-69.6 4.4-102.4 12.2v0zM850.6 236.2c-9.2 12.4-82.6 106.4-244.2 172.4 10.2 20.8 20 42 29 63.4 3.2 7.6 6.4 15 9.4 22.6 145.6-18.2 290.2 11 304.6 14-1-103.2-38-198-98.8-272.4v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "dribbble", + "brand", + "social" + ], + "defaultCode": 60071, + "grid": 16 + }, + { + "id": 424, + "paths": [ + "M297 205.2c30.2 0 57.4 2.6 82.2 8 24.8 5.2 45.8 14 63.6 26 17.6 12 31.2 28 41.2 48 9.6 19.8 14.4 44.6 14.4 74 0 31.8-7.2 58.2-21.6 79.4-14.6 21.2-35.8 38.4-64.2 52 38.8 11.2 67.4 30.8 86.6 58.6 19.2 28 28.4 61.6 28.4 101.2 0 32-6.2 59.4-18.4 82.6-12.4 23.4-29.2 42.4-49.8 57-20.8 14.8-44.8 25.6-71.6 32.6-26.6 7-54 10.6-82.4 10.6h-305.4v-630h297zM279 459.6c24.6 0 45-5.8 61-17.6 16-11.6 23.6-30.8 23.6-57.2 0-14.6-2.6-26.8-7.8-36.2-5.4-9.4-12.4-16.8-21.4-22-8.8-5.4-18.8-9-30.6-11-11.4-2.2-23.4-3.2-35.6-3.2h-129.6v147.2h140.4zM286.6 727.8c13.6 0 26.6-1.2 38.8-4 12.4-2.8 23.4-7 32.6-13.4 9.2-6.2 17-14.4 22.6-25.2 5.6-10.6 8.2-24.2 8.2-40.8 0-32.4-9.2-55.6-27.4-69.6-18.2-13.8-42.4-20.6-72.4-20.6h-150.4v173.4h148z", + "M725.2 725.6c18.8 18.4 45.8 27.6 81 27.6 25.2 0 47.2-6.4 65.4-19.2s29.2-26.4 33.4-40.4h110.4c-17.8 55-44.6 94-81.4 117.6-36.2 23.6-80.6 35.6-132 35.6-36 0-68.2-5.8-97.2-17.2-29-11.6-53.2-27.8-73.6-49-19.8-21.2-35.4-46.4-46.4-76-10.8-29.4-16.4-62-16.4-97.2 0-34.2 5.6-66 16.8-95.4 11.4-29.6 27-55 47.8-76.4s45.2-38.4 74-50.8c28.6-12.4 60.2-18.6 95.2-18.6 38.6 0 72.4 7.4 101.4 22.6 28.8 15 52.6 35.2 71.2 60.4s31.8 54.2 40 86.6c8.2 32.4 11 66.2 8.8 101.6h-329.4c0 35.8 12 70 31 88.2zM869 486c-14.8-16.4-40.2-25.4-70.8-25.4-20 0-36.6 3.4-49.8 10.2-13 6.8-23.6 15.2-31.8 25.2-8 10-13.6 20.8-16.8 32.2-3.2 11-5.2 21.2-5.8 30h204c-3-32-14-55.6-29-72.2z", + "M668.4 256h255.4v62.2h-255.4v-62.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "behance", + "brand", + "social" + ], + "defaultCode": 60072, + "grid": 16 + }, + { + "id": 425, + "paths": [ + "M404.2 448.6c13-9.4 19.2-25 19.2-46.6 0-12-2-21.8-6.2-29.4-4.4-7.6-10-13.6-17.4-17.8-7.2-4.4-15.4-7.4-24.8-9-9.2-1.8-19-2.6-29-2.6h-105.4v119.6h114c20 0.2 36.6-4.6 49.6-14.2z", + "M422 556.6c-14.8-11.2-34.4-16.8-58.8-16.8h-122.6v141h120.2c11.2 0 21.6-1 31.6-3.2s19-5.6 26.6-10.8c7.6-5 13.8-11.8 18.4-20.4s6.8-19.8 6.8-33.2c0-26.4-7.4-45.2-22.2-56.6z", + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM671.2 269.4h207.4v50.6h-207.4v-50.6zM541.6 686.4c-10 19-23.6 34.4-40.4 46.4-17 12-36.4 20.8-58.2 26.6-21.6 5.8-44 8.6-66.8 8.6h-248.2v-511.8h241.2c24.4 0 46.6 2.2 66.8 6.4 20 4.2 37.2 11.4 51.6 21.2 14.2 9.8 25.4 22.8 33.4 39 7.8 16 11.8 36.2 11.8 60 0 25.8-5.8 47.2-17.6 64.4s-29 31.2-52.2 42.2c31.6 9 54.8 25 70.2 47.6 15.6 22.8 23.2 50.2 23.2 82.2 0.2 26.2-4.8 48.6-14.8 67.2zM959.4 607.2h-267.4c0 29.2 10 57 25.2 72 15.2 14.8 37.2 22.4 65.8 22.4 20.6 0 38.2-5.2 53.2-15.6 14.8-10.4 23.8-21.4 27.2-32.8h89.6c-14.4 44.6-36.2 76.4-66 95.6-29.4 19.2-65.4 28.8-107.2 28.8-29.2 0-55.4-4.8-79-14-23.6-9.4-43.2-22.6-59.8-39.8-16.2-17.2-28.6-37.8-37.6-61.8-8.8-23.8-13.4-50.4-13.4-79 0-27.8 4.6-53.6 13.6-77.6 9.2-24 22-44.8 38.8-62 16.8-17.4 36.8-31.2 60-41.4 23.2-10 48.8-15 77.2-15 31.4 0 58.8 6 82.4 18.4 23.4 12.2 42.6 28.6 57.8 49.2s25.8 44 32.6 70.4c6.6 26 8.8 53.4 7 82.2z", + "M776.6 463.8c-16.2 0-29.8 2.8-40.4 8.4s-19.2 12.4-25.8 20.4c-6.6 8.2-11 16.8-13.6 26.2-2.6 9-4.2 17.2-4.6 24.4h165.6c-2.4-26-11.4-45.2-23.4-58.6-12.4-13.6-32.8-20.8-57.8-20.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "behance", + "brand", + "social" + ], + "defaultCode": 60073, + "grid": 16 + }, + { + "id": 426, + "paths": [ + "M829 186.2v-186.2h-186.2l-18.6 18.8-88 167.4-27.6 18.6h-313.6v255.6h172.4l15.4 18.6-187.8 358.8v186.2h186.2l18.6-18.8 88-167.4 27.6-18.6h313.6v-255.6h-172.4l-15.4-18.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "deviantart", + "brand", + "social" + ], + "defaultCode": 60074, + "grid": 16 + }, + { + "id": 427, + "paths": [ + "M253 672.8c0.2 0.6 5.6 15.2 8.6 22.6 16.8 39.8 41 75.8 71.8 106.6s66.6 55 106.6 71.8c41.4 17.4 85.2 26.4 130.4 26.4s89.2-8.8 130.4-26.4c40-16.8 75.8-41 106.6-71.8s55-66.6 71.8-106.6c17.4-41.4 26.4-85.2 26.4-130.4s-8.8-89.2-26.4-130.4c-16.8-40-41-75.8-71.8-106.6s-66.6-55-106.6-71.8c-41.4-17.4-85.2-26.4-130.4-26.4-45.8 0-91.6 9.2-132.2 26.4-32.6 13.8-87.8 49.2-120 82.6l-0.2 0.2v-276h463.4c16.8-0.2 16.8-23.8 16.8-31.4 0-7.8 0-31.2-17-31.4h-501c-13.6 0-22 11.4-22 21.8v388.2c0 12.6 15.6 21.6 30.2 24.6 28.4 6 34.8-3 41.8-12.6l1-1.2c10.6-15.8 43.6-49 44-49.4 51.6-51.6 120.6-80 194.4-80 73.4 0 142.2 28.4 193.8 80 51.8 51.8 80.4 120.4 80.4 193.2 0 73-28.4 141.8-80 193.2-50.8 50.8-122 80-195 80-49.4 0-97.2-13.2-138.2-38.2l0.2-236c0-31.4 13.6-65.8 36.6-91.6 26.2-29.6 62.2-45.8 101.6-45.8 38 0 73.6 14.4 100.2 40.6 26.2 26 40.8 60.8 40.8 97.8 0 78.8-62 140.6-141.2 140.6-15.2 0-43-6.8-44.2-7-16-4.8-22.8 17.4-25 24.8-8.6 28.2 4.4 33.8 7 34.6 25.4 8 42.2 9.4 64.2 9.4 111.8 0 202.8-91 202.8-202.8 0-111-91-201.2-202.6-201.2-54.8 0-106.2 21-144.8 58.8-36.8 36.2-57.8 84.4-57.8 132.4v1.2c-0.2 6-0.2 147.6-0.4 194l-0.2-0.2c-21-23.2-41.8-58.8-55.6-95.2-5.4-14.2-17.6-11.8-34.2-6.6-8 2.2-30 9-25 25.2v0zM491.2 617.4c0 6.8 6.2 12.8 10 16.2l1.2 1.2c6.4 6.2 12.4 9.4 18 9.4 4.6 0 7.4-2.2 8.4-3.2 2.8-2.6 34.4-34.8 37.6-37.8l35.4 35.2c3.2 3.6 6.8 5.6 11 5.6 5.6 0 11.8-3.4 18.2-10 15.2-15.6 7.6-24 4-28l-35.8-35.8 37.4-37.6c8.2-8.8 1-18.2-6.2-25.4-10.4-10.4-20.6-13.2-27-7.2l-37.2 37.2-37.6-37.6c-2-2-4.6-3-7.2-3-5 0-11 3.4-17.6 10-11.6 11.6-14 19.6-8 26l37.6 37.4-37.4 37.4c-3.4 3.2-5 6.6-4.8 10zM573 109.8c-60 0-124 12.2-170.8 32.4-5 2-8 6-8.6 11.6-0.6 5.4 0.8 12.4 4.4 21.6 3 7.4 10.6 27.2 25.6 21.4 48-18.4 101.2-28.4 149.4-28.4 54.8 0 108 10.8 158 31.8 39.8 16.8 77.2 41.2 118 76.4 3 2.6 6.2 3.8 9.4 3.8 8 0 15.6-7.8 22.2-15.2 10.8-12.2 18.4-22.4 7.6-32.6-39-36.8-81.6-64.4-134.4-86.8-57.2-23.8-118.2-36-180.8-36zM896.4 851.2v0c-7.2-7.2-13.4-11.4-18.8-13s-10.4-0.4-14.2 3.4l-3.6 3.6c-37.2 37.2-80.6 66.4-128.8 86.8-50 21.2-103 31.8-157.6 31.8-54.8 0-107.8-10.8-157.6-31.8-48.2-20.4-91.6-49.6-128.8-86.8-38.8-38.8-68-82.2-86.8-128.8-18.4-45.6-24.4-79.8-26.4-91-0.2-1-0.4-1.8-0.4-2.4-2.6-13.2-14.8-14.2-32.2-11.4-7.2 1.2-29.4 4.6-27.4 20.4v0.4c5.8 37 16.2 73.2 30.8 107.6 23.4 55.4 57 105.2 99.8 148s92.6 76.2 148 99.8c57.4 24.2 118.4 36.6 181.2 36.6s123.8-12.4 181.2-36.6c55.4-23.4 105.2-57 148-99.8 0 0 2.4-2.4 3.8-3.8 4.4-5.4 8.6-14.4-10.2-33z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "500px", + "brand", + "social" + ], + "defaultCode": 60075, + "grid": 16 + }, + { + "id": 428, + "paths": [ + "M704 288c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96zM958.392 129.608c-87.478-87.476-229.306-87.476-316.786 0-35.578 35.578-56.684 80.146-63.322 126.392v0l-204.694 310.228c-27.506 1.41-54.776 8.416-79.966 21.016l-157.892-123.424c-36.55-28.574-89.342-22.102-117.912 14.448-28.572 36.55-22.102 89.342 14.448 117.912l155.934 121.892c-16.96 66.782 0.672 140.538 52.93 192.794 78.906 78.904 206.832 78.904 285.736 0 48.466-48.466 67.15-115.428 56.076-178.166l249.054-222.986c46.248-6.638 90.816-27.744 126.394-63.322 87.478-87.476 87.478-229.306 0-316.784zM384 902.698c-74.39 0-134.698-60.304-134.698-134.698 0-0.712 0.042-1.414 0.054-2.124l66.912 52.304c15.36 12.006 33.582 17.824 51.674 17.824 24.962 0 49.672-11.080 66.238-32.272 28.572-36.55 22.102-89.342-14.448-117.912l-63.5-49.636c8.962-1.878 18.248-2.88 27.768-2.88 74.392 0 134.698 60.304 134.698 134.698s-60.306 134.696-134.698 134.696zM800 448c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "steam", + "brand", + "social" + ], + "defaultCode": 60076, + "grid": 16 + }, + { + "id": 429, + "paths": [ + "M303.922 836.010c27.144 0 53.786-13.136 69.972-37.416 25.734-38.602 15.302-90.754-23.298-116.488l-66.074-44.048c11.308-3.080 23.194-4.756 35.478-4.756 74.392 0 134.696 60.304 134.696 134.698s-60.306 134.698-134.698 134.698c-72.404 0-131.444-57.132-134.548-128.774l71.954 47.968c14.322 9.548 30.506 14.118 46.518 14.118zM853.34 0c93.876 0 170.66 76.812 170.66 170.688v682.628c0 93.936-76.784 170.684-170.66 170.684h-682.652c-93.876 0-170.688-76.75-170.688-170.682v-203.028l121.334 80.888c-11.652 63.174 6.938 130.83 55.798 179.69 78.904 78.904 206.83 78.904 285.736 0 48.468-48.466 67.15-115.43 56.076-178.166l249.056-222.988c46.248-6.638 90.816-27.744 126.394-63.322 87.476-87.476 87.476-229.306 0-316.784-87.48-87.478-229.308-87.478-316.786 0-35.578 35.578-56.684 80.146-63.322 126.392v0l-204.694 310.23c-31.848 1.632-63.378 10.764-91.726 27.392l-217.866-145.244v-277.69c0-93.876 76.81-170.688 170.686-170.688h682.654zM896 288c0-88.366-71.634-160-160-160s-160 71.634-160 160 71.634 160 160 160 160-71.634 160-160zM640 288c0-53.020 42.98-96 96-96s96 42.98 96 96-42.98 96-96 96-96-42.98-96-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "steam", + "brand", + "social" + ], + "defaultCode": 60077, + "grid": 16 + }, + { + "id": 430, + "paths": [ + "M736 32l-224 192 288 192 224-192z", + "M512 224l-224-192-288 192 224 192z", + "M800 416l224 192-288 160-224-192z", + "M512 576l-288-160-224 192 288 160z", + "M728.156 845.57l-216.156-185.278-216.158 185.278-135.842-75.468v93.898l352 160 352-160v-93.898z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "dropbox", + "brand" + ], + "defaultCode": 60078, + "grid": 16 + }, + { + "id": 431, + "paths": [ + "M350.868 828.388c-60.274-15.060-93.856-62.97-93.962-134.064-0.032-22.726 1.612-33.62 7.286-48.236 13.908-35.834 50.728-62.872 99.176-72.822 24.11-4.95 31.536-10.266 31.536-22.572 0-3.862 2.872-15.36 6.378-25.552 15.932-46.306 45.43-84.91 76.948-100.702 32.99-16.526 49.642-20.254 89.548-20.040 56.674 0.304 84.952 12.598 124.496 54.128l21.75 22.842 19.484-6.742c94.3-32.636 188.306 22.916 195.888 115.756l2.072 25.398 18.57 6.65c53.032 19.004 77.96 58.904 73.442 117.556-2.958 38.358-20.89 68.98-49.3 84.184l-13.356 7.146-296.822 0.57c-228.094 0.44-300.6-0.368-313.134-3.5v0zM103.218 785.966c-36.176-9.086-74.506-42.854-92.48-81.47-10.196-21.906-10.738-25.128-10.738-63.88 0-36.864 0.87-42.778 8.988-61.080 17.11-38.582 49.894-66.46 91.030-77.408 8.684-2.312 16.842-6 18.128-8.196 1.29-2.198 2.722-14.164 3.182-26.592 2.866-77.196 50.79-145.214 117.708-167.056 36.154-11.8 83.572-12.898 122.896 3.726 12.47 5.274 11.068 6.404 37.438-30.14 15.594-21.612 45.108-44.49 70.9-58.18 27.838-14.776 56.792-21.584 91.412-21.494 96.768 0.252 180.166 64.22 211.004 161.848 9.854 31.192 9.362 39.926-2.26 40.184-5.072 0.112-19.604 3.064-32.292 6.558l-23.072 6.358-21.052-22.25c-59.362-62.734-156.238-76.294-238.592-33.396-32.9 17.138-59.34 41.746-79.31 73.81-14.236 22.858-32.39 65.504-32.39 76.094 0 7.51-5.754 11.264-30.332 19.782-76.094 26.376-120.508 87.282-120.476 165.218 0.010 28.368 6.922 63.074 16.52 82.956 3.618 7.494 5.634 14.622 4.484 15.836-2.946 3.106-97.608 2.060-110.696-1.228v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "onedrive", + "brand", + "skydrive" + ], + "defaultCode": 60079, + "grid": 16 + }, + { + "id": 432, + "paths": [ + "M512.008 12.642c-282.738 0-512.008 229.218-512.008 511.998 0 226.214 146.704 418.132 350.136 485.836 25.586 4.738 34.992-11.11 34.992-24.632 0-12.204-0.48-52.542-0.696-95.324-142.448 30.976-172.504-60.41-172.504-60.41-23.282-59.176-56.848-74.916-56.848-74.916-46.452-31.778 3.51-31.124 3.51-31.124 51.4 3.61 78.476 52.766 78.476 52.766 45.672 78.27 119.776 55.64 149.004 42.558 4.588-33.086 17.852-55.68 32.506-68.464-113.73-12.942-233.276-56.85-233.276-253.032 0-55.898 20.004-101.574 52.76-137.428-5.316-12.9-22.854-64.972 4.952-135.5 0 0 43.006-13.752 140.84 52.49 40.836-11.348 84.636-17.036 128.154-17.234 43.502 0.198 87.336 5.886 128.256 17.234 97.734-66.244 140.656-52.49 140.656-52.49 27.872 70.528 10.35 122.6 5.036 135.5 32.82 35.856 52.694 81.532 52.694 137.428 0 196.654-119.778 239.95-233.79 252.624 18.364 15.89 34.724 47.046 34.724 94.812 0 68.508-0.596 123.644-0.596 140.508 0 13.628 9.222 29.594 35.172 24.566 203.322-67.776 349.842-259.626 349.842-485.768 0-282.78-229.234-511.998-511.992-511.998z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "github", + "brand", + "octacat", + "social" + ], + "defaultCode": 60080, + "grid": 16 + }, + { + "id": 433, + "paths": [ + "M0 0v1024h1024v-1024h-1024zM832 832h-128v-512h-192v512h-320v-640h640v640z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "npm", + "brand" + ], + "defaultCode": 60081, + "grid": 16 + }, + { + "id": 434, + "paths": [ + "M512 106.6c-186.8 0-330.8 156.4-412.4 309.6-46 86.2-78.2 180.6-93 277.2-1.6 11-3.2 22-4.4 33.2-0.6 6-1.2 12-1.6 18-0.6 7.6-0.2 10 3.8 16.4 12 19.4 26.2 37.4 42.2 53.6 32.8 33.6 72.6 59.4 114.8 79.4 96.2 45.4 204.8 61.8 310.4 65.4 109 3.6 221-5.4 325.2-39.4 89-29 174.8-79.6 224.2-161.4 5.4-8.8 1.6-21.8 0.6-32-1.2-12.2-2.8-24.2-4.8-36.2-3.6-23.6-8.4-46.8-14.2-70-11.6-47.2-27.4-93.6-46.6-138.2-69.6-161.6-198.4-334-381.6-369.6-20.6-4-41.6-6-62.6-6zM518.4 890.2c-114.2 0-238.6-10.2-341.4-65.2-40-21.4-80.8-52.4-100-95-5.6-12.4-3.6-17.2-1-31.8 1.8-9.4 2.6-18.6 6.8-27.4 5.8-12.2 11.8-24.2 18-36.2 21-40.6 43.6-80.8 69.8-118.6 13-18.6 26.8-37 42.8-53 11.2-11.2 24.8-23.2 40.6-27 48.4-11.6 85.4 44.4 114.8 72.6 14.2 13.6 33.2 29 54.4 26.4 14.6-1.8 27.6-13.2 38-22.6 35.4-31.8 63.8-71.2 93.2-108.2 14.6-18.2 29-36.6 44.8-54 10.6-11.8 22.2-25.2 36.4-32.8 25.4-13.8 57.8 14.6 75.4 29.2 30 25 56.6 54.2 82 83.8 24.2 28.2 47.6 56.8 68.2 87.8 31.8 48 59.4 99.2 84.6 151 5.4 11.2 7.2 18.8 9.2 31.2 1.2 6.8 3.8 14.6 2.8 21.6-1.4 9.8-8.2 20.4-13.2 28.4-12 19-28.2 35.4-46 49.2-74.6 57.8-175.6 77-267.4 85.6-37.6 3.6-75.2 5-112.8 5z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "basecamp", + "brand" + ], + "defaultCode": 60082, + "grid": 16 + }, + { + "id": 435, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM448 768c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-512c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v512zM832 576c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-320c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v320z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "trello", + "brand" + ], + "defaultCode": 60083, + "grid": 16 + }, + { + "id": 436, + "paths": [ + "M128 511.992c0 148.026 88.322 275.968 216.43 336.578l-183.178-488.784c-21.308 46.508-33.252 97.982-33.252 152.206zM771.228 493.128c0-46.234-17.054-78.236-31.654-103.142-19.458-30.82-37.72-56.894-37.72-87.716 0-34.374 26.766-66.376 64.486-66.376 1.704 0 3.32 0.204 4.976 0.302-68.316-60.97-159.34-98.196-259.308-98.196-134.16 0-252.186 67.046-320.844 168.568 9.010 0.282 17.506 0.454 24.712 0.454 40.154 0 102.34-4.752 102.34-4.752 20.69-1.182 23.132 28.434 2.458 30.822 0 0-20.81 2.368-43.952 3.55l139.834 405.106 84.044-245.456-59.822-159.65c-20.688-1.184-40.278-3.55-40.278-3.55-20.702-1.192-18.272-32.002 2.438-30.822 0 0 63.4 4.752 101.134 4.752 40.146 0 102.35-4.752 102.35-4.752 20.702-1.182 23.14 28.434 2.446 30.822 0 0-20.834 2.372-43.948 3.55l138.78 402.018 38.312-124.632c16.58-51.75 29.216-88.9 29.216-120.9zM518.742 544.704l-115.226 326.058c34.416 9.858 70.794 15.238 108.488 15.238 44.716 0 87.604-7.518 127.518-21.2-1.018-1.602-1.974-3.304-2.75-5.154l-118.030-314.942zM848.962 332.572c1.652 11.91 2.588 24.686 2.588 38.458 0 37.93-7.292 80.596-29.202 133.95l-117.286 330.272c114.162-64.828 190.938-185.288 190.938-323.258 0-65.030-17.060-126.16-47.038-179.422zM512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wordpress", + "brand", + "social", + "cms" + ], + "defaultCode": 60084, + "grid": 16 + }, + { + "id": 437, + "paths": [ + "M266.004 276.678c32.832-32.844 86.002-32.844 118.804-0.032l7.826 7.868 101.104-101.156-7.874-7.88c-57.624-57.7-138.514-77.878-212.42-60.522-10.594-65.182-67.088-114.924-135.174-114.956-75.65 0-136.954 61.442-136.97 137.158 0 65.336 45.59 120 106.662 133.83-23.138 77.45-4.242 164.834 56.846 225.984l227.826 227.9 100.996-101.214-227.81-227.886c-32.682-32.722-32.742-86.126 0.184-119.094zM1022.712 137.158c0.016-75.762-61.318-137.158-136.984-137.158-69.234 0-126.478 51.444-135.682 118.238-77.074-22.664-163.784-3.496-224.64 57.408l-227.84 227.9 101.102 101.172 227.766-227.856c32.94-32.966 85.988-32.906 118.684-0.184 32.8 32.83 32.8 86.114-0.032 118.956l-7.794 7.836 101.010 101.248 7.858-7.928c60.458-60.566 79.678-146.756 57.612-223.638 67.15-8.834 118.94-66.364 118.94-135.994zM906.266 751.064c18.102-74.458-1.976-156.324-60.108-214.5l-227.49-227.992-101.102 101.122 227.52 228.012c32.94 32.996 32.864 86.096 0.184 118.848-32.802 32.814-86.004 32.814-118.836-0.030l-7.766-7.79-100.994 101.246 7.732 7.728c61.516 61.594 149.618 80.438 227.368 56.488 12.632 62.682 67.934 109.804 134.258 109.804 75.604 0 136.968-61.35 136.968-137.126 0-69.2-51.18-126.456-117.734-135.81zM612.344 528.684l-227.536 227.992c-32.71 32.768-86.034 32.828-118.944-0.124-32.818-32.904-32.832-86.098-0.044-118.97l7.808-7.774-101.086-101.124-7.734 7.712c-58.76 58.802-78.56 141.834-59.45 216.982-60.398 14.26-105.358 68.634-105.358 133.496-0.016 75.746 61.332 137.126 136.982 137.126 65.1-0.032 119.588-45.418 133.54-106.382 74.702 18.552 156.998-1.304 215.344-59.756l227.49-227.96-101.012-101.218z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "joomla", + "brand", + "cms" + ], + "defaultCode": 60085, + "grid": 16 + }, + { + "id": 438, + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM824.636 589.598c-36.798 142.716-165.358 242.402-312.63 242.402-147.282 0-275.85-99.686-312.654-242.42-6.232-24.158 8.352-48.886 32.512-55.124 3.71-0.958 7.528-1.446 11.338-1.446 20.624 0 38.628 13.972 43.788 33.976 26.512 102.748 119.042 174.51 225.014 174.51 105.978 0 198.502-71.76 225-174.51 5.152-20.006 23.15-33.982 43.766-33.982 3.822 0 7.65 0.49 11.376 1.456 11.692 3.016 21.526 10.418 27.668 20.842 6.142 10.416 7.854 22.596 4.822 34.296z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "ello", + "brand", + "social" + ], + "defaultCode": 60086, + "grid": 16 + }, + { + "id": 439, + "paths": [ + "M957.796 384h-57.406c-35.166 0-65.988-29.742-68.39-64v0c0.004-182.668-147.258-320-331.19-320h-167.824c-183.812 0-332.856 148-332.986 330.666v362.798c0 182.654 149.174 330.536 332.984 330.536h358.42c183.948 0 332.596-147.882 332.596-330.536v-234.382c0-36.502-29.44-75.082-66.204-75.082zM320 256h192c35.2 0 64 28.8 64 64s-28.8 64-64 64h-192c-35.2 0-64-28.8-64-64s28.8-64 64-64zM704 768h-384c-35.2 0-64-28.8-64-64s28.8-64 64-64h384c35.2 0 64 28.8 64 64s-28.8 64-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blogger", + "brand", + "social" + ], + "defaultCode": 60087, + "grid": 16 + }, + { + "id": 440, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM896 648c0 137-111.4 248-249.4 248h-268.8c-138 0-249.8-111-249.8-248v-272c0-137 111.8-248 249.8-248h125.8c138 0 248.4 103 248.4 240 1.8 25.6 25 48 51.2 48h43c27.6 0 49.6 29 49.6 56.4v175.6z", + "M704 640c0 35.2-28.8 64-64 64h-256c-35.2 0-64-28.8-64-64v0c0-35.2 28.8-64 64-64h256c35.2 0 64 28.8 64 64v0z", + "M576 384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v0c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "blogger", + "brand", + "social" + ], + "defaultCode": 60088, + "grid": 16 + }, + { + "id": 441, + "paths": [ + "M576.032 448l-0.002 234.184c0 59.418-0.77 93.656 5.53 110.5 6.25 16.754 21.918 34.146 38.99 44.202 22.684 13.588 48.542 20.376 77.708 20.376 51.854 0 82.478-6.848 133.742-40.54v153.944c-43.7 20.552-81.866 32.594-117.324 40.922-35.5 8.242-73.86 12.406-115.064 12.406-46.828 0-74.456-5.886-110.41-17.656-35.958-11.868-66.66-28.806-92.020-50.54-25.45-21.922-43.022-45.208-52.848-69.832-9.826-24.636-14.716-60.414-14.716-107.244v-359.1h-137.426v-145.006c40.208-13.042 85.164-31.788 113.78-56.152 28.754-24.45 51.766-53.706 69.106-87.944 17.392-34.146 29.348-77.712 35.872-130.516h165.084l-0.002 255.996h255.968v192h-255.968z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tumblr", + "brand", + "social" + ], + "defaultCode": 60089, + "grid": 16 + }, + { + "id": 442, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM731.8 824.6c-30.2 14.2-57.6 24.2-82 30-24.4 5.6-51 8.6-79.4 8.6-32.4 0-51.4-4-76.2-12.2s-46-19.8-63.6-34.8c-17.6-15.2-29.6-31.2-36.4-48.2s-10.2-41.6-10.2-74v-247.8h-96v-100c27.8-9 60-22 79.6-38.8 19.8-16.8 35.8-37 47.6-60.6 12-23.6 20.2-53.6 24.8-90h100.4v163.2h163.6v126.2h-163.4v181.2c0 41-0.6 64.6 3.8 76.2s15.2 23.6 27 30.4c15.6 9.4 33.6 14 53.6 14 35.8 0 71.4-11.6 106.8-34.8v111.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tumblr", + "brand", + "social" + ], + "defaultCode": 60090, + "grid": 16 + }, + { + "id": 443, + "paths": [ + "M568.2 589v0c112.6-197.6 298.6-520 349.6-589-22.4 15-56.8 22.6-88.4 29.8l-47.8-29.8c-38.4 71.6-180 303-270.2 451.2-91.4-151.4-199.6-326.2-270.2-451.2-56 12-79.2 12.6-135 0v0 0c0 0 0 0 0 0v0c110.8 166.8 288.2 484.6 348.6 589v0l-8.2 435 64.8-29.8v-0.8l64.8 30.6-8-435z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "yahoo", + "brand", + "social" + ], + "defaultCode": 60091, + "grid": 16 + }, + { + "id": 444, + "paths": [ + "M513.2 69.6c-181 0-352-23.8-513.2-69.6 0 361.8 0 933.2 0 1024 161.4-45.8 332.4-69.6 513.2-69.6 178.8 0 349.4 23.2 510.8 69.6 0-348.4 0-649.8 0-1024-161.4 46.4-331.8 69.6-510.8 69.6zM796.8 157l-6.2 9.8c-5.8 9.2-11 17-18.2 28-9.6 14.4-27.6 43-49.2 79.8-6 10.2-13.4 22.4-21 35.6-14.6 24.6-31 52.4-44 74.4-5.4 9.4-10.8 19-16.4 28.6-14.4 25-29.2 50.8-43.4 75.6-14.6 25.8-29 51.2-43.4 76.4v25.4c0 35.2 0.8 73.6 2 107.8 0.6 15.6 1.2 43.4 2 72.8 0.8 35 1.6 71.2 2.6 89.6l0.2 5.6v0.6l-6-1.6c-2.4-0.6-4.6-1.2-7-1.8-7.2-1.6-15-2.8-22.6-3.6-4.6-0.4-9.4-0.6-14.2-0.6 0 0 0 0 0 0s0 0 0 0c-4.8 0-9.6 0.2-14.2 0.6-7.6 0.8-15.4 2-22.6 3.6-2.4 0.6-4.8 1.2-7 1.8l-6 1.6v-0.6l0.2-5.6c0.8-18.2 1.8-54.6 2.6-89.6 0.6-29.4 1.4-57.2 2-72.8 1.4-34.4 2-72.6 2-107.8v-25.4c-14.4-25.4-28.8-50.6-43.4-76.4-14.2-25-29-50.6-43.2-75.6-5.6-9.6-11-19.2-16.4-28.6-12.8-22.2-29.4-50-44-74.4-7.8-13-15.2-25.4-21-35.6-21.6-36.8-39.6-65.2-49.2-79.8-7.2-11-12.4-18.8-18.2-28l-6.2-9.8 11.2 3.2c14.2 4 28.8 6 44.4 6s30.6-2 44.6-6l3.4-1 1.8 3c27.6 49.8 101.8 171.8 146.2 244.8 15.2 25.2 27.4 45 33.4 55.2 0 0 0 0 0-0.2 0 0 0 0 0 0.2 6-10 18.2-30 33.4-55.2 44.4-72.8 118.6-194.8 146.2-244.8l1.8-3 3.4 1c14 4 29 6 44.6 6s30.2-2 44.4-6l10.6-3.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "yahoo" + ], + "defaultCode": 60092, + "grid": 16 + }, + { + "id": 445, + "paths": [ + "M567.656 736.916c-81.944 38.118-158.158 37.716-209.34 34.020-61.052-4.41-110.158-21.124-131.742-35.732-13.3-9.006-31.384-5.522-40.39 7.782-9.004 13.302-5.52 31.386 7.782 40.39 34.698 23.486 96.068 40.954 160.162 45.58 10.866 0.784 22.798 1.278 35.646 1.278 55.782 0 126.626-5.316 202.42-40.57 14.564-6.778 20.878-24.074 14.104-38.64-6.776-14.566-24.076-20.872-38.642-14.108zM890.948 693.816c2.786-252.688 28.762-730.206-454.97-691.612-477.6 38.442-350.964 542.968-358.082 711.95-6.308 89.386-35.978 198.648-77.896 309.846h129.1c13.266-47.122 23.024-93.72 27.232-138.15 7.782 5.428 16.108 10.674 24.994 15.7 14.458 8.518 26.884 19.844 40.040 31.834 30.744 28.018 65.59 59.774 133.712 63.752 4.572 0.262 9.174 0.394 13.676 0.394 68.896 0 116.014-30.154 153.878-54.382 18.14-11.612 33.818-21.64 48.564-26.452 41.91-13.12 78.532-34.296 105.904-61.252 4.276-4.208 8.242-8.538 11.962-12.948 15.246 55.878 36.118 118.758 59.288 181.504h275.65c-66.174-102.224-134.436-202.374-133.052-330.184zM124.11 556.352c0-0.016 0-0.030-0.002-0.046-4.746-82.462 34.71-151.832 88.126-154.936 53.412-3.106 100.56 61.228 105.304 143.692 0 0.014 0.004 0.030 0.004 0.044 0.256 4.446 0.368 8.846 0.37 13.206-16.924 4.256-32.192 10.436-45.872 17.63-0.052-0.612-0.092-1.216-0.152-1.83 0-0.008 0-0.018 0-0.026-4.57-46.81-29.572-82.16-55.852-78.958-26.28 3.204-43.88 43.75-39.312 90.558 0 0.010 0.004 0.018 0.004 0.026 1.992 20.408 7.868 38.636 16.042 52.444-2.034 1.604-7.784 5.812-14.406 10.656-4.97 3.634-11.020 8.058-18.314 13.43-19.882-26.094-33.506-63.58-35.94-105.89zM665.26 760.178c-1.9 43.586-58.908 84.592-111.582 101.044l-0.296 0.096c-21.9 7.102-41.428 19.6-62.104 32.83-34.732 22.224-70.646 45.208-122.522 45.208-3.404 0-6.894-0.104-10.326-0.296-47.516-2.778-69.742-23.032-97.88-48.676-14.842-13.526-30.19-27.514-49.976-39.124l-0.424-0.244c-42.706-24.104-69.212-54.082-70.908-80.194-0.842-12.98 4.938-24.218 17.182-33.4 26.636-19.972 44.478-33.022 56.284-41.658 13.11-9.588 17.068-12.48 20-15.264 2.096-1.986 4.364-4.188 6.804-6.562 24.446-23.774 65.36-63.562 128.15-63.562 38.404 0 80.898 14.8 126.17 43.902 21.324 13.878 39.882 20.286 63.38 28.4 16.156 5.578 34.468 11.902 58.992 22.404l0.396 0.164c22.88 9.404 49.896 26.564 48.66 54.932zM652.646 657.806c-4.4-2.214-8.974-4.32-13.744-6.286-22.106-9.456-39.832-15.874-54.534-20.998 8.116-15.894 13.16-35.72 13.624-57.242 0-0.010 0-0.022 0-0.030 1.126-52.374-25.288-94.896-58.996-94.976-33.71-0.078-61.95 42.314-63.076 94.686 0 0.010 0 0.018 0 0.028-0.038 1.714-0.042 3.416-0.020 5.11-20.762-9.552-41.18-16.49-61.166-20.76-0.092-1.968-0.204-3.932-0.244-5.92 0-0.016 0-0.036 0-0.050-1.938-95.412 56.602-174.39 130.754-176.402 74.15-2.014 135.828 73.7 137.772 169.11 0 0.018 0 0.038 0 0.052 0.874 43.146-10.66 82.866-30.37 113.678z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "tux", + "brand", + "linux" + ], + "defaultCode": 60093, + "grid": 16 + }, + { + "id": 446, + "paths": [ + "M791.498 544.092c-1.294-129.682 105.758-191.876 110.542-194.966-60.152-88.020-153.85-100.078-187.242-101.472-79.742-8.074-155.596 46.948-196.066 46.948-40.368 0-102.818-45.754-168.952-44.552-86.916 1.292-167.058 50.538-211.812 128.38-90.304 156.698-23.126 388.84 64.89 515.926 43.008 62.204 94.292 132.076 161.626 129.58 64.842-2.588 89.362-41.958 167.756-41.958s100.428 41.958 169.050 40.67c69.774-1.296 113.982-63.398 156.692-125.796 49.39-72.168 69.726-142.038 70.924-145.626-1.548-0.706-136.060-52.236-137.408-207.134zM662.562 163.522c35.738-43.358 59.86-103.512 53.28-163.522-51.478 2.096-113.878 34.29-150.81 77.55-33.142 38.376-62.148 99.626-54.374 158.436 57.466 4.484 116.128-29.204 151.904-72.464z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "apple", + "brand" + ], + "defaultCode": 60094, + "grid": 16 + }, + { + "id": 447, + "paths": [ + "M569.226 778.256c-0.002-0.044-0.002-0.088-0.004-0.132 0.002 0.044 0.002 0.088 0.004 0.132z", + "M570.596 814.538c-0.012-0.234-0.022-0.466-0.032-0.702 0.010 0.234 0.020 0.466 0.032 0.702z", + "M569.814 796.312c-0.006-0.178-0.012-0.356-0.020-0.536 0.010 0.182 0.016 0.358 0.020 0.536z", + "M960 0h-896c-35.2 0-64 28.8-64 64v896c0 35.2 28.8 64 64 64h493.832c0.044 0 0.088 0.006 0.132 0.006 0.042 0 0.084-0.006 0.126-0.006h401.91c35.2 0 64-28.8 64-64v-896c0-35.2-28.8-64-64-64zM192 224c0-17.672 14.328-32 32-32s32 14.328 32 32v64c0 17.672-14.328 32-32 32s-32-14.328-32-32v-64zM960 960h-375.058c-6.7-42.082-10.906-85.476-13.388-127.604 0.006 0.116 0.010 0.228 0.018 0.344-19.696 2.146-39.578 3.26-59.572 3.26-133.65 0-262.382-48.656-362.484-137.006-14.906-13.156-16.326-35.906-3.168-50.812 13.158-14.904 35.906-16.326 50.814-3.168 86.936 76.728 198.748 118.986 314.838 118.986 19.086 0 38.052-1.166 56.816-3.416-2.192-118.194 6.876-211.914 7.026-213.404 0.898-8.996-2.050-17.952-8.118-24.654-6.066-6.702-14.682-10.526-23.724-10.526h-95.174c1.384-34.614 5.082-93.814 14.958-160.188 18.864-126.76 51.994-225.77 96.152-287.812h400.064v896z", + "M800 320c-17.674 0-32-14.328-32-32v-64c0-17.672 14.326-32 32-32s32 14.328 32 32v64c0 17.672-14.326 32-32 32z", + "M540.496 835.232c-3.646 0.192-7.298 0.336-10.956 0.454 3.658-0.116 7.31-0.264 10.956-0.454z", + "M512 836c4.692 0 9.374-0.074 14.050-0.196-4.676 0.122-9.358 0.196-14.050 0.196z", + "M539.074 763.202c0.784-0.044 1.568-0.084 2.352-0.132-0.782 0.048-1.568 0.088-2.352 0.132z", + "M525.084 763.8c1.074-0.030 2.146-0.072 3.218-0.11-1.072 0.038-2.144 0.082-3.218 0.11z", + "M877.65 648.182c-13.156-14.91-35.908-16.322-50.812-3.168-72.642 64.114-162.658 104.136-258.022 115.57 0.43 23.278 1.294 47.496 2.754 72.156 111.954-12.21 217.786-58.614 302.912-133.746 14.908-13.156 16.326-35.906 3.168-50.812z", + "M571.498 832.748c-4.606 0.5-9.222 0.936-13.848 1.322 4.626-0.384 9.244-0.822 13.848-1.322z", + "M555.488 834.242c-3.906 0.312-7.822 0.576-11.742 0.806 3.92-0.226 7.834-0.496 11.742-0.806z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "finder", + "brand", + "mac", + "os" + ], + "defaultCode": 60095, + "grid": 16 + }, + { + "id": 448, + "paths": [ + "M896 384c-35.2 0-64 28.8-64 64v256c0 35.2 28.8 64 64 64s64-28.8 64-64v-256c0-35.2-28.8-64-64-64zM128 384c-35.2 0-64 28.8-64 64v256c0 35.2 28.8 64 64 64s64-28.8 64-64v-256c0-35.2-28.802-64-64-64zM224 736c0 53.020 42.98 96 96 96v0 128c0 35.2 28.8 64 64 64s64-28.8 64-64v-128h128v128c0 35.2 28.8 64 64 64s64-28.8 64-64v-128c53.020 0 96-42.98 96-96v-352h-576v352z", + "M798.216 320.002c-9.716-87.884-59.004-163.792-129.62-209.646l32.024-64.046c7.904-15.806 1.496-35.028-14.31-42.932s-35.030-1.496-42.932 14.312l-32.142 64.286-8.35-3.316c-28.568-9.502-59.122-14.66-90.886-14.66-31.762 0-62.316 5.158-90.888 14.656l-8.348 3.316-32.142-64.282c-7.904-15.808-27.128-22.212-42.932-14.312-15.808 7.904-22.214 27.126-14.312 42.932l32.022 64.046c-70.616 45.852-119.904 121.762-129.622 209.644v32h574.222v-31.998h-1.784zM416 256c-17.674 0-32-14.328-32-32 0-17.648 14.288-31.958 31.93-31.996 0.032 0 0.062 0.002 0.094 0.002 0.018 0 0.036-0.002 0.052-0.002 17.638 0.042 31.924 14.35 31.924 31.996 0 17.672-14.326 32-32 32zM608 256c-17.674 0-32-14.328-32-32 0-17.646 14.286-31.954 31.924-31.996 0.016 0 0.034 0.002 0.050 0.002 0.032 0 0.064-0.002 0.096-0.002 17.64 0.038 31.93 14.348 31.93 31.996 0 17.672-14.326 32-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "android", + "brand", + "os", + "mobile" + ], + "defaultCode": 60096, + "grid": 16 + }, + { + "id": 449, + "paths": [ + "M412.23 511.914c-47.708-24.518-94.086-36.958-137.88-36.958-5.956 0-11.952 0.18-17.948 0.708-55.88 4.624-106.922 19.368-139.75 30.828-8.708 3.198-17.634 6.576-26.83 10.306l-89.822 311.394c61.702-22.832 116.292-33.938 166.27-33.938 80.846 0 139.528 30.208 187.992 61.304 22.962-77.918 78.044-266.090 94.482-322.324-11.95-7.284-24.076-14.57-36.514-21.32zM528.348 591.070l-90.446 314.148c26.832 15.372 117.098 64.050 186.212 64.050 55.792 0 118.252-14.296 190.834-43.792l86.356-301.976c-58.632 18.922-114.876 28.52-167.464 28.52-95.95 0-163.114-31.098-205.492-60.95zM292.822 368.79c77.118 0.798 134.152 30.208 181.416 60.502l92.752-317.344c-19.546-11.196-70.806-39.094-107.858-48.6-24.386-5.684-50.020-8.616-77.204-8.616-51.796 0.976-108.388 13.946-172.888 39.8l-88.44 310.596c64.808-24.436 120.644-36.34 172.086-36.34 0.046 0.002 0.136 0.002 0.136 0.002zM1024 198.124c-58.814 22.832-116.208 34.466-171.028 34.466-91.686 0-159.292-31.802-203.094-62.366l-91.95 318.236c61.746 39.708 128.29 59.878 198.122 59.878 56.948 0 115.94-13.68 175.462-40.688l-0.182-2.222 3.734-0.886 88.936-306.418z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "windows", + "brand", + "os" + ], + "defaultCode": 60097, + "grid": 16 + }, + { + "id": 450, + "paths": [ + "M0.35 512l-0.35-312.074 384-52.144v364.218zM448 138.482l511.872-74.482v448h-511.872zM959.998 576l-0.126 448-511.872-72.016v-375.984zM384 943.836l-383.688-52.594-0.020-315.242h383.708z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "windows8", + "brand", + "os" + ], + "defaultCode": 60098, + "grid": 16 + }, + { + "id": 451, + "paths": [ + "M891.96 514.204c-18.086 0-35.348 3.52-51.064 9.856-10.506-114.358-110.29-204.060-232-204.060-29.786 0-58.682 5.63-84.318 15.164-9.96 3.702-12.578 7.52-12.578 14.916v402.714c0 7.766 6.24 14.234 14.124 14.996 0.336 0.034 363.536 0.21 365.89 0.21 72.904 0 131.986-56.816 131.986-126.894s-59.134-126.902-132.040-126.902zM400 768h32l16-224.22-16-223.78h-32l-16 223.78zM304 768h-32l-16-162.75 16-157.25h32l16 160zM144 768h32l16-128-16-128h-32l-16 128zM16 704h32l16-64-16-64h-32l-16 64z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "soundcloud", + "brand", + "social" + ], + "defaultCode": 60099, + "grid": 16 + }, + { + "id": 452, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM176 704h-32l-16-96 16-96h32l16 96-16 96zM304 704h-32l-16-128 16-128h32l16 128-16 128zM432 704h-32l-16-192 16-192h32l16 192-16 192zM825.2 704c-2 0-301.2-0.2-301.4-0.2-6.4-0.6-11.6-6.2-11.8-12.8v-345.2c0-6.4 2.2-9.6 10.4-12.8 21.2-8.2 45-13 69.6-13 100.2 0 182.4 76.8 191.2 175 13-5.4 27.2-8.4 42-8.4 60 0 108.8 48.8 108.8 108.8s-48.8 108.6-108.8 108.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "soundcloud", + "brand", + "social" + ], + "defaultCode": 60100, + "grid": 16 + }, + { + "id": 453, + "paths": [ + "M425.6 37.4c-1.6-1-3.4-1.8-5-2.6-1.8 0.4-3.4 0.6-5.2 1l10.2 1.6z", + "M36.8 421c-0.4 1.8-0.6 3.6-0.8 5.2 1 1.6 1.6 3.2 2.6 4.8l-1.8-10z", + "M986.8 602.6c0.4-1.8 0.6-3.6 1-5.4-1-1.6-1.6-3.2-2.6-4.8l1.6 10.2z", + "M592 983c1.6 1 3.4 1.8 5 2.6 1.8-0.4 3.6-0.6 5.4-0.8l-10.4-1.8z", + "M987.8 597.2c-0.4 1.8-0.6 3.6-1 5.4l-1.8-10.4c1 1.8 1.8 3.4 2.8 5 5.2-28.8 8-58.2 8-87.6 0-65.2-12.8-128.6-38-188.2-24.4-57.6-59.2-109.4-103.6-153.8s-96.2-79.2-153.6-103.6c-59.6-25.2-123-38-188.2-38-30.8 0-61.6 2.8-91.6 8.6 0 0-0.2 0-0.2 0 1.6 0.8 3.4 1.6 5 2.6l-10.2-1.6c1.8-0.4 3.4-0.6 5.2-1-41.2-21.8-87.4-33.6-134.2-33.6-76.4 0-148.4 29.8-202.4 83.8s-83.8 126-83.8 202.4c0 48.6 12.6 96.6 36 138.8 0.4-1.8 0.6-3.6 0.8-5.2l1.8 10.2c-1-1.6-1.8-3.2-2.6-4.8-4.8 27.4-7.2 55.4-7.2 83.4 0 65.2 12.8 128.6 38 188.2 24.4 57.6 59.2 109.2 103.6 153.6s96.2 79.2 153.8 103.6c59.6 25.2 123 38 188.2 38 28.4 0 56.8-2.6 84.6-7.6-1.6-1-3.2-1.8-5-2.6l10.4 1.8c-1.8 0.4-3.6 0.6-5.4 0.8 42.8 24.2 91.4 37.2 140.8 37.2 76.4 0 148.4-29.8 202.4-83.8s83.8-126 83.8-202.4c-0.2-48.6-12.8-96.6-36.4-139.2zM514.2 805.8c-171.8 0-248.6-84.4-248.6-147.8 0-32.4 24-55.2 57-55.2 73.6 0 54.4 105.6 191.6 105.6 70.2 0 109-38.2 109-77.2 0-23.4-11.6-49.4-57.8-60.8l-152.8-38.2c-123-30.8-145.4-97.4-145.4-160 0-129.8 122.2-178.6 237-178.6 105.8 0 230.4 58.4 230.4 136.4 0 33.4-29 52.8-62 52.8-62.8 0-51.2-86.8-177.6-86.8-62.8 0-97.4 28.4-97.4 69s49.6 53.6 92.6 63.4l113.2 25.2c123.8 27.6 155.2 100 155.2 168 0 105.4-81 184.2-244.4 184.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "skype", + "brand", + "social" + ], + "defaultCode": 60101, + "grid": 16 + }, + { + "id": 454, + "paths": [ + "M256 640c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 640c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM643.112 776.778c16.482-12.986 40.376-10.154 53.364 6.332s10.152 40.378-6.334 53.366c-45.896 36.158-115.822 59.524-178.142 59.524-62.322 0-132.248-23.366-178.144-59.522-16.486-12.99-19.32-36.882-6.332-53.368 12.99-16.482 36.882-19.318 53.366-6.332 26.422 20.818 78.722 43.222 131.11 43.222s104.688-22.404 131.112-43.222zM1024 512c0-70.692-57.308-128-128-128-48.116 0-89.992 26.57-111.852 65.82-65.792-35.994-145.952-59.246-233.28-64.608l76.382-171.526 146.194 42.2c13.152 37.342 48.718 64.114 90.556 64.114 53.020 0 96-42.98 96-96s-42.98-96-96-96c-36.56 0-68.342 20.442-84.554 50.514l-162.906-47.024c-18.224-5.258-37.538 3.722-45.252 21.052l-103.77 233.026c-85.138 5.996-163.262 29.022-227.636 64.236-21.864-39.25-63.766-65.804-111.882-65.804-70.692 0-128 57.308-128 128 0 52.312 31.402 97.254 76.372 117.102-8.070 24.028-12.372 49.104-12.372 74.898 0 176.73 200.576 320 448 320 247.422 0 448-143.27 448-320 0-25.792-4.3-50.862-12.368-74.886 44.97-19.85 76.368-64.802 76.368-117.114zM864 188c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zM64 512c0-35.29 28.71-64 64-64 25.508 0 47.572 15.004 57.846 36.646-33.448 25.366-61.166 54.626-81.666 86.738-23.524-9.47-40.18-32.512-40.18-59.384zM512 948c-205.45 0-372-109.242-372-244s166.55-244 372-244c205.45 0 372 109.242 372 244s-166.55 244-372 244zM919.82 571.384c-20.5-32.112-48.218-61.372-81.666-86.738 10.276-21.642 32.338-36.646 57.846-36.646 35.29 0 64 28.71 64 64 0 26.872-16.656 49.914-40.18 59.384z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "reddit", + "brand", + "social" + ], + "defaultCode": 60102, + "grid": 16 + }, + { + "id": 455, + "paths": [ + "M0 0v1024h1024v-1024h-1024zM544 584v216h-64v-216l-175-328h72.6l134.4 252 134.4-252h72.6l-175 328z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "hackernews", + "brand", + "ycombinator", + "yc", + "social" + ], + "defaultCode": 60103, + "grid": 16 + }, + { + "id": 456, + "paths": [ + "M966.8 233.6c0 3.2-1 6.2-3 9-2 2.6-4.2 4-6.8 4-20 2-36.4 8.4-49 19.2-12.8 10.8-25.8 31.8-39.2 62.4l-206.4 465.4c-1.4 4.4-5.2 6.4-11.4 6.4-4.8 0-8.6-2.2-11.4-6.4l-115.8-242-133.2 242c-2.8 4.4-6.4 6.4-11.4 6.4-6 0-9.8-2.2-11.8-6.4l-202.6-465.2c-12.6-28.8-26-49-40-60.4s-33.6-18.6-58.6-21.2c-2.2 0-4.2-1.2-6-3.4-2-2.2-2.8-4.8-2.8-7.8 0-7.6 2.2-11.4 6.4-11.4 18 0 37 0.8 56.8 2.4 18.4 1.6 35.6 2.4 51.8 2.4 16.4 0 36-0.8 58.4-2.4 23.4-1.6 44.2-2.4 62.4-2.4 4.4 0 6.4 3.8 6.4 11.4s-1.4 11.2-4 11.2c-18 1.4-32.4 6-42.8 13.8s-15.6 18-15.6 30.8c0 6.4 2.2 14.6 6.4 24.2l167.4 378.4 95.2-179.6-88.6-185.8c-16-33.2-29-54.6-39.2-64.2s-25.8-15.4-46.6-17.6c-2 0-3.6-1.2-5.4-3.4s-2.6-4.8-2.6-7.8c0-7.6 1.8-11.4 5.6-11.4 18 0 34.6 0.8 49.8 2.4 14.6 1.6 30 2.4 46.6 2.4 16.2 0 33.2-0.8 51.4-2.4 18.6-1.6 37-2.4 55-2.4 4.4 0 6.4 3.8 6.4 11.4s-1.2 11.2-4 11.2c-36.2 2.4-54.2 12.8-54.2 30.8 0 8 4.2 20.6 12.6 37.6l58.6 119 58.4-108.8c8-15.4 12.2-28.4 12.2-38.8 0-24.8-18-38-54.2-39.6-3.2 0-4.8-3.8-4.8-11.2 0-2.8 0.8-5.2 2.4-7.6s3.2-3.6 4.8-3.6c13 0 28.8 0.8 47.8 2.4 18 1.6 33 2.4 44.6 2.4 8.4 0 20.6-0.8 36.8-2 20.4-1.8 37.6-2.8 51.4-2.8 3.2 0 4.8 3.2 4.8 9.6 0 8.6-3 13-8.8 13-21 2.2-38 8-50.8 17.4s-28.8 30.8-48 64.4l-78.2 143.2 105.2 214.4 155.4-361.4c5.4-13.2 8-25.4 8-36.4 0-26.4-18-40.4-54.2-42.2-3.2 0-4.8-3.8-4.8-11.2 0-7.6 2.4-11.4 7.2-11.4 13.2 0 28.8 0.8 47 2.4 16.8 1.6 30.8 2.4 42 2.4 12 0 25.6-0.8 41.2-2.4 16.2-1.6 30.8-2.4 43.8-2.4 4 0 6 3.2 6 9.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "wikipedia", + "brand" + ], + "defaultCode": 60104, + "grid": 16 + }, + { + "id": 457, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 832h-128v-448h128v448zM320 320c-35.4 0-64-28.6-64-64s28.6-64 64-64c35.4 0 64 28.6 64 64s-28.6 64-64 64zM832 832h-128v-256c0-35.4-28.6-64-64-64s-64 28.6-64 64v256h-128v-448h128v79.4c26.4-36.2 66.8-79.4 112-79.4 79.6 0 144 71.6 144 160v288z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "linkedin", + "brand", + "social" + ], + "defaultCode": 60105, + "grid": 16 + }, + { + "id": 458, + "paths": [ + "M384 384h177.106v90.782h2.532c24.64-44.194 84.958-90.782 174.842-90.782 186.946 0 221.52 116.376 221.52 267.734v308.266h-184.61v-273.278c0-65.184-1.334-149.026-96.028-149.026-96.148 0-110.82 70.986-110.82 144.292v278.012h-184.542v-576z", + "M64 384h192v576h-192v-576z", + "M256 224c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "linkedin", + "brand", + "social" + ], + "defaultCode": 60106, + "grid": 16 + }, + { + "id": 459, + "paths": [ + "M451.6 766.2l-37.6-102c0 0-61 68-152.4 68-81 0-138.4-70.4-138.4-183 0-144.2 72.8-195.8 144.2-195.8 103.2 0 136 66.8 164.2 152.4l37.6 117.2c37.6 113.8 108 205.2 310.8 205.2 145.4 0 244-44.6 244-161.8 0-95-54-144.2-154.8-167.8l-75-16.4c-51.6-11.8-66.8-32.8-66.8-68 0-39.8 31.6-63.4 83.2-63.4 56.4 0 86.8 21.2 91.4 71.6l117.2-14c-9.4-105.6-82.2-149-201.8-149-105.6 0-208.8 39.8-208.8 167.8 0 79.8 38.8 130.2 136 153.6l79.8 18.8c59.8 14 79.8 38.8 79.8 72.8 0 43.4-42.2 61-122 61-118.4 0-167.8-62.2-195.8-147.8l-38.8-117.2c-49-152.6-127.6-208.8-283.6-208.8-172.4 0-264 109-264 294.4 0 178.2 91.4 274.4 255.8 274.4 132.4 0 195.8-62.2 195.8-62.2v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lastfm", + "brand", + "social" + ], + "defaultCode": 60107, + "grid": 16 + }, + { + "id": 460, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM746.6 760.8c-177.6 0-239.2-80-272-179.6l-32.8-102.6c-24.6-75-53.4-133.4-143.6-133.4-62.6 0-126.2 45.2-126.2 171.4 0 98.6 50.2 160.2 121.2 160.2 80 0 133.4-59.6 133.4-59.6l32.8 89.2c0 0-55.4 54.4-171.4 54.4-144 0-224-84-224-240 0-162.2 80-257.6 231-257.6 136.6 0 205.2 49.2 248.4 182.6l33.8 102.6c24.6 75 67.8 129.4 171.4 129.4 69.8 0 106.8-15.4 106.8-53.4 0-29.8-17.4-51.4-69.8-63.6l-69.8-16.4c-85.2-20.6-119-64.6-119-134.4 0-111.8 90.4-146.8 182.6-146.8 104.6 0 168.4 38 176.6 130.4l-102.6 12.4c-4.2-44.2-30.8-62.6-80-62.6-45.2 0-72.8 20.6-72.8 55.4 0 30.8 13.4 49.2 58.4 59.6l65.6 14.4c88.2 20.6 135.4 63.6 135.4 146.8 0 102.2-86.2 141.2-213.4 141.2z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "lastfm", + "brand", + "social" + ], + "defaultCode": 60108, + "grid": 16 + }, + { + "id": 461, + "paths": [ + "M0 0v1024h1024v-1024h-1024zM512 960v-448h-448v-448h448v448h448v448h-448z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "delicious", + "brand", + "social" + ], + "defaultCode": 60109, + "grid": 16 + }, + { + "id": 462, + "paths": [ + "M512 320c-35.2 0-64 28.8-64 64v256c0 105.8-86.2 192-192 192s-192-86.2-192-192v-128h128v128c0 35.2 28.8 64 64 64s64-28.8 64-64v-256c0-105.8 86.2-192 192-192s192 86.2 192 178v62l-82 24-46-24v-62c0-21.2-28.8-50-64-50z", + "M960 640c0 105.8-86.2 192-192 192s-192-86.2-192-206v-124l46 24 82-24v124c0 49.2 28.8 78 64 78s64-28.8 64-64v-128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stumbleupon", + "brand", + "social" + ], + "defaultCode": 60110, + "grid": 16 + }, + { + "id": 463, + "paths": [ + "M852 0h-680c-94.6 0-172 77.4-172 172v680c0 94.6 77.4 172 172 172h680c94.6 0 172-77.4 172-172v-680c0-94.6-77.4-172-172-172zM512 320c-35.29 0-64 28.71-64 64v256c0 105.872-86.13 192-192 192s-192-86.128-192-192v-128h128v128c0 35.29 28.71 64 64 64s64-28.71 64-64v-256c0-105.87 86.13-192 192-192s192 86.13 192 178v62l-82 24-46-24v-62c0-21.29-28.71-50-64-50zM960 640c0 105.872-86.13 192-192 192s-192-86.128-192-206v-124l46 24 82-24v124c0 49.29 28.71 78 64 78s64-28.71 64-64v-128h128v128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stumbleupon", + "brand", + "social" + ], + "defaultCode": 60111, + "grid": 16 + }, + { + "id": 464, + "paths": [ + "M1024 640v384h-1024v-384h128v256h768v-256zM192 704h640v128h-640zM207.152 565.466l27.698-124.964 624.832 138.496-27.698 124.964zM279.658 308.558l54.092-116.006 580.032 270.464-54.092 116.006zM991.722 361.476l-77.922 101.55-507.746-389.608 56.336-73.418h58.244z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "stackoverflow", + "brand", + "social" + ], + "defaultCode": 60112, + "grid": 16 + }, + { + "id": 465, + "paths": [ + "M512 68.4c-245 0-443.6 198.6-443.6 443.6 0 188 117 348.4 282 413-3.8-35-7.4-89 1.6-127.2 8-34.6 52-220.4 52-220.4s-13.2-26.6-13.2-65.8c0-61.6 35.8-107.8 80.2-107.8 37.8 0 56.2 28.4 56.2 62.4 0 38-24.2 95-36.8 147.6-10.6 44.2 22 80.2 65.6 80.2 78.8 0 139.4-83.2 139.4-203.2 0-106.2-76.4-180.4-185.2-180.4-126.2 0-200.2 94.6-200.2 192.6 0 38.2 14.6 79 33 101.2 3.6 4.4 4.2 8.2 3 12.8-3.4 14-10.8 44.2-12.4 50.4-2 8.2-6.4 9.8-14.8 6-55.4-25.8-90-106.8-90-171.8 0-140 101.6-268.4 293-268.4 153.8 0 273.4 109.6 273.4 256.2 0 152.8-96.4 276-230.2 276-45 0-87.2-23.4-101.6-51 0 0-22.2 84.6-27.6 105.4-10 38.6-37 86.8-55.2 116.2 41.6 12.8 85.6 19.8 131.4 19.8 245 0 443.6-198.6 443.6-443.6 0-245.2-198.6-443.8-443.6-443.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pinterest", + "brand", + "social" + ], + "defaultCode": 60113, + "grid": 16 + }, + { + "id": 466, + "paths": [ + "M512 0c-282.4 0-512 229.6-512 512s229.6 512 512 512 512-229.6 512-512-229.6-512-512-512zM512 955.6c-45.8 0-89.8-7-131.4-19.8 18-29.4 45.2-77.8 55.2-116.2 5.4-20.8 27.6-105.4 27.6-105.4 14.4 27.6 56.8 51 101.6 51 133.8 0 230.2-123 230.2-276 0-146.6-119.6-256.2-273.4-256.2-191.4 0-293 128.6-293 268.4 0 65 34.6 146 90 171.8 8.4 4 12.8 2.2 14.8-6 1.4-6.2 9-36.2 12.4-50.4 1-4.4 0.6-8.4-3-12.8-18.4-22.2-33-63.2-33-101.2 0-97.8 74-192.6 200.2-192.6 109 0 185.2 74.2 185.2 180.4 0 120-60.6 203.2-139.4 203.2-43.6 0-76.2-36-65.6-80.2 12.6-52.8 36.8-109.6 36.8-147.6 0-34-18.2-62.4-56.2-62.4-44.6 0-80.2 46-80.2 107.8 0 39.2 13.2 65.8 13.2 65.8s-44 185.8-52 220.4c-9 38.4-5.4 92.2-1.6 127.2-165-64.4-282-224.8-282-412.8 0-245 198.6-443.6 443.6-443.6s443.6 198.6 443.6 443.6c0 245-198.6 443.6-443.6 443.6z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "pinterest", + "brand", + "social" + ], + "defaultCode": 60114, + "grid": 16 + }, + { + "id": 467, + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h832c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM312.6 666h-110.6c-6.6 0-11.6-3-14.4-7.6-3-4.8-3-10.8 0-17l117.6-207.6c0.2-0.2 0.2-0.4 0-0.6l-74.8-129.6c-3-6.2-3.6-12.2-0.6-17 2.8-4.6 8.4-7 15.2-7h110.8c17 0 25.4 11 30.8 20.8 0 0 75.6 132 76.2 132.8-4.4 8-119.6 211.4-119.6 211.4-6 10.4-14 21.4-30.6 21.4zM836.4 152.2l-245.2 433.6c-0.2 0.2-0.2 0.6 0 0.8l156.2 285.2c3 6.2 3.2 12.4 0.2 17.2-2.8 4.6-8 7-14.8 7h-110.6c-17 0-25.4-11.2-31-21 0 0-157-288-157.4-288.8 7.8-13.8 246.4-437 246.4-437 6-10.6 13.2-21 29.6-21h112.2c6.6 0 12 2.6 14.8 7 2.8 4.6 2.8 10.8-0.4 17z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "xing", + "brand", + "social" + ], + "defaultCode": 60115, + "grid": 16 + }, + { + "id": 468, + "paths": [ + "M155.6 202.2c-8.8 0-16.4 3.2-20.2 9.2-3.8 6.4-3.2 14.4 0.8 22.6l99.8 172.8c0.2 0.4 0.2 0.6 0 0.8l-156.8 277.2c-4 8.2-3.8 16.4 0 22.6 3.8 6 10.4 10 19.2 10h147.6c22 0 32.8-15 40.2-28.6 0 0 153.4-271.4 159.4-282-0.6-1-101.6-177-101.6-177-7.4-13-18.4-27.6-41.2-27.6h-147.2z", + "M776 0c-22 0-31.6 13.8-39.6 28.2 0 0-318.2 564.2-328.6 582.8 0.6 1 209.8 385 209.8 385 7.4 13 18.6 28.2 41.2 28.2h147.6c8.8 0 15.8-3.4 19.6-9.4 4-6.4 3.8-14.6-0.4-22.8l-208-380.6c-0.2-0.4-0.2-0.6 0-1l327-578.2c4-8.2 4.2-16.4 0.4-22.8-3.8-6-10.8-9.4-19.6-9.4h-149.4z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "xing", + "brand", + "social" + ], + "defaultCode": 60116, + "grid": 16 + }, + { + "id": 469, + "paths": [ + "M367.562 0c-243.358 0-367.562 140.162-367.562 401.856v0 549.034l238.39-238.628v-278.896c0-108.416 28.73-177.406 125.118-192.894v0c33.672-6.584 103.75-4.278 148.306-4.278v0 165.596c0 1.51 0.208 4.206 0.594 5.586v0c1.87 6.704 7.93 11.616 15.116 11.63v0c4.062 0.008 7.868-2.104 11.79-5.97v0l413.122-412.974-584.874-0.062zM785.61 311.746v278.89c0 108.414-28.736 177.414-125.116 192.894v0c-33.672 6.582-103.756 4.278-148.312 4.278v0-165.594c0-1.5-0.206-4.204-0.594-5.582v0c-1.864-6.712-7.922-11.622-15.112-11.63v0c-4.064-0.008-7.866 2.112-11.79 5.966v0l-413.124 412.966 584.874 0.066c243.354 0 367.564-140.168 367.564-401.852v0-549.028l-238.39 238.626z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flattr", + "brand", + "donate", + "social" + ], + "defaultCode": 60117, + "grid": 16 + }, + { + "id": 470, + "paths": [ + "M851.564 90.090c-12.060-16.404-31.204-26.090-51.564-26.090h-608c-35.346 0-64 28.654-64 64v768c0 25.884 15.592 49.222 39.508 59.128 7.918 3.28 16.234 4.874 24.478 4.874 16.656 0 33.026-6.504 45.268-18.748l237.256-237.254h165.49c27.992 0 52.736-18.192 61.086-44.91l160-512c6.074-19.432 2.538-40.596-9.522-57zM672.948 320h-224.948c-35.346 0-64 28.654-64 64s28.654 64 64 64h184.948l-40 128h-144.948c-16.974 0-33.252 6.742-45.254 18.746l-146.746 146.744v-549.49h456.948l-40 128z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "foursquare", + "brand", + "social" + ], + "defaultCode": 60118, + "grid": 16 + }, + { + "id": 471, + "paths": [ + "M608.876 653.468c-17.282 17.426-2.668 49.128-2.668 49.128l130.090 217.218c0 0 21.36 28.64 39.864 28.64 18.59 0 36.954-15.27 36.954-15.27l102.844-147.008c0 0 10.36-18.546 10.598-34.792 0.372-23.106-34.454-29.434-34.454-29.434l-243.488-78.192c-0.002 0.004-23.858-6.328-39.74 9.71zM596.532 543.984c12.46 21.128 46.828 14.972 46.828 14.972l242.938-71.006c0 0 33.106-13.466 37.832-31.418 4.64-17.954-5.46-39.622-5.46-39.622l-116.098-136.752c0 0-10.062-17.292-30.938-19.032-23.016-1.958-37.18 25.898-37.18 25.898l-137.27 216.010c0 0.004-12.134 21.516-0.652 40.95zM481.754 459.768c28.608-7.044 33.148-48.604 33.148-48.604l-1.944-345.87c0 0-4.314-42.666-23.486-54.232-30.070-18.242-38.982-8.718-47.596-7.444l-201.696 74.944c0 0-19.754 6.536-30.042 23.018-14.69 23.352 14.928 57.544 14.928 57.544l209.644 285.756c0 0 20.69 21.396 47.044 14.888zM431.944 599.738c0.722-26.676-32.030-42.7-32.030-42.7l-216.796-109.524c0 0-32.126-13.246-47.722-4.016-11.95 7.060-22.536 19.84-23.572 31.134l-14.12 173.812c0 0-2.116 30.114 5.69 43.82 11.054 19.442 47.428 5.902 47.428 5.902l253.096-55.942c9.832-6.61 27.074-7.204 28.026-42.486zM494.88 693.542c-21.726-11.156-47.724 11.95-47.724 11.95l-169.468 186.566c0 0-21.144 28.528-15.768 46.050 5.066 16.418 13.454 24.578 25.318 30.328l170.192 53.726c0 0 20.634 4.286 36.258-0.242 22.18-6.43 18.094-41.152 18.094-41.152l3.848-252.602c-0.002 0.002-0.868-24.334-20.75-34.624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "yelp", + "brand", + "social" + ], + "defaultCode": 60119, + "grid": 16 + }, + { + "id": 472, + "paths": [ + "M930 308.6c-47.8 212.2-195.4 324.2-428 324.2h-77.4l-53.8 341.6h-64.8l-3.4 22c-2.2 14.6 9 27.6 23.6 27.6h165.6c19.6 0 36.2-14.2 39.4-33.6l1.6-8.4 31.2-197.8 2-10.8c3-19.4 19.8-33.6 39.4-33.6h24.6c160.4 0 286-65.2 322.8-253.6 13.8-71.6 8.6-132.4-22.8-177.6z", + "M831 77.2c-47.4-54-133.2-77.2-242.8-77.2h-318.2c-22.4 0-41.6 16.2-45 38.4l-132.6 840.4c-2.6 16.6 10.2 31.6 27 31.6h196.6l49.4-313-1.6 9.8c3.4-22.2 22.4-38.4 44.8-38.4h93.4c183.4 0 327-74.4 369-290 1.2-6.4 2.4-12.6 3.2-18.6 12.4-79.6 0-134-43.2-183z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "paypal", + "brand", + "donate" + ], + "defaultCode": 60120, + "grid": 16 + }, + { + "id": 473, + "paths": [ + "M258.278 446.542l-146.532-253.802c93.818-117.464 238.234-192.74 400.254-192.74 187.432 0 351.31 100.736 440.532 251h-417.77c-7.504-0.65-15.092-1-22.762-1-121.874 0-224.578 83.644-253.722 196.542zM695.306 325h293.46c22.74 57.93 35.234 121.004 35.234 187 0 280.826-226.1 508.804-506.186 511.926l209.394-362.678c29.48-42.378 46.792-93.826 46.792-149.248 0-73.17-30.164-139.42-78.694-187zM326 512c0-102.56 83.44-186 186-186s186 83.44 186 186c0 102.56-83.44 186-186 186s-186-83.44-186-186zM582.182 764.442l-146.578 253.878c-246.532-36.884-435.604-249.516-435.604-506.32 0-91.218 23.884-176.846 65.696-251.024l209.030 362.054c41.868 89.112 132.476 150.97 237.274 150.97 24.3 0 47.836-3.34 70.182-9.558z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chrome", + "browser", + "internet", + "brand" + ], + "defaultCode": 60121, + "grid": 16 + }, + { + "id": 474, + "paths": [ + "M1022.526 334.14l-11.86 76.080c0 0-16.954-140.856-37.732-193.514-31.846-80.688-46.014-80.040-46.108-79.922 21.33 54.204 17.462 83.324 17.462 83.324s-37.792-102.998-137.712-135.768c-110.686-36.282-170.57-26.364-177.488-24.486-1.050-0.008-2.064-0.010-3.030-0.010 0.818 0.062 1.612 0.146 2.426 0.212-0.034 0.020-0.090 0.042-0.082 0.052 0.45 0.548 122.306 21.302 143.916 50.996 0 0-51.76 0-103.272 14.842-2.328 0.666 189.524 23.964 228.746 215.674 0 0-21.030-43.876-47.040-51.328 17.106 52.036 12.714 150.776-3.576 199.85-2.096 6.312-4.24-27.282-36.328-41.75 10.28 73.646-0.616 190.456-51.708 222.632-3.982 2.504 32.030-115.31 7.242-69.762-142.708 218.802-311.404 100.972-387.248 49.11 38.866 8.462 112.654-1.318 145.314-25.612 0.042-0.030 0.078-0.056 0.118-0.086 35.468-24.252 56.472-41.964 75.334-37.772 18.874 4.214 31.438-14.726 16.78-31.53-14.676-16.838-50.314-39.978-98.524-27.366-34 8.904-76.134 46.522-140.448 8.432-49.364-29.25-54.012-53.546-54.45-70.376 1.218-5.966 2.754-11.536 4.576-16.624 5.682-15.87 22.912-20.658 32.494-24.438 16.256 2.792 30.262 7.862 44.968 15.406 0.19-4.894 0.252-11.39-0.018-18.76 1.41-2.802 0.538-11.252-1.722-21.58-1.302-10.308-3.42-20.974-6.752-30.692 0.012-0.002 0.020-0.010 0.030-0.014 0.056-0.018 0.108-0.040 0.156-0.070 0.078-0.044 0.146-0.112 0.208-0.19 0.012-0.020 0.030-0.034 0.044-0.052 0.082-0.124 0.154-0.272 0.198-0.466 1.020-4.618 12.022-13.524 25.718-23.1 12.272-8.58 26.702-17.696 38.068-24.752 10.060-6.248 17.72-10.882 19.346-12.098 0.618-0.466 1.358-1.012 2.164-1.636 0.15-0.116 0.3-0.232 0.454-0.354 0.094-0.074 0.19-0.148 0.286-0.226 5.41-4.308 13.484-12.448 15.178-29.578 0.004-0.042 0.010-0.080 0.012-0.122 0.050-0.504 0.092-1.014 0.13-1.534 0.028-0.362 0.050-0.726 0.072-1.096 0.014-0.284 0.032-0.566 0.044-0.856 0.030-0.674 0.050-1.364 0.060-2.064 0-0.040 0.002-0.076 0.004-0.116 0.022-1.658-0.006-3.386-0.104-5.202-0.054-1.014-0.126-1.93-0.298-2.762-0.008-0.044-0.018-0.092-0.028-0.136-0.018-0.082-0.036-0.164-0.058-0.244-0.036-0.146-0.076-0.292-0.122-0.43-0.006-0.018-0.010-0.032-0.016-0.046-0.052-0.16-0.112-0.314-0.174-0.464-0.004-0.006-0.004-0.010-0.006-0.016-1.754-4.108-8.32-5.658-35.442-6.118-0.026-0.002-0.050-0.002-0.076-0.002v0c-11.066-0.188-25.538-0.194-44.502-0.118-33.25 0.134-51.628-32.504-57.494-45.132 8.040-44.46 31.276-76.142 69.45-97.626 0.722-0.406 0.58-0.742-0.274-0.978 7.464-4.514-90.246-0.124-135.186 57.036-39.888-9.914-74.654-9.246-104.616-2.214-5.754-0.162-12.924-0.88-21.434-2.652-19.924-18.056-48.448-51.402-49.976-91.208 0 0-0.092 0.072-0.252 0.204-0.020-0.382-0.056-0.76-0.072-1.142 0 0-60.716 46.664-51.628 173.882-0.022 2.036-0.064 3.986-0.12 5.874-16.432 22.288-24.586 41.020-25.192 45.156-14.56 29.644-29.334 74.254-41.356 141.98 0 0 8.408-26.666 25.284-56.866-12.412 38.022-22.164 97.156-16.436 185.856 0 0 1.514-19.666 6.874-47.994 4.186 55.010 22.518 122.924 68.858 202.788 88.948 153.32 225.67 230.74 376.792 242.616 26.836 2.212 54.050 2.264 81.424 0.186 2.516-0.178 5.032-0.364 7.55-0.574 30.964-2.174 62.134-6.852 93.238-14.366 425.172-102.798 378.942-616.198 378.942-616.198z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "firefox", + "browser", + "internet", + "brand" + ], + "defaultCode": 60122, + "grid": 16 + }, + { + "id": 475, + "paths": [ + "M734.202 628.83h236.050c1.82-16.37 2.548-33.098 2.548-50.196 0-80.224-21.534-155.468-59.124-220.266 38.88-103.308 37.492-190.988-14.556-243.39-49.496-49.28-182.29-41.28-332.412 25.198-11.104-0.84-22.318-1.272-33.638-1.272-206.048 0-378.926 141.794-426.708 332.85 64.638-82.754 132.638-142.754 223.478-186.448-8.26 7.74-56.454 55.652-64.56 63.764-239.548 239.478-315.090 552.306-233.806 633.604 61.786 61.774 173.758 51.342 302.376-11.648 59.806 30.458 127.5 47.63 199.218 47.63 193.134 0 356.804-124.316 416.090-297.448h-237.868c-32.734 60.382-96.748 101.48-170.218 101.48-73.468 0-137.484-41.098-170.216-101.48-14.55-27.274-22.914-58.554-22.914-91.656v-0.722h386.26zM348.302 512.804c5.456-97.11 86.2-174.584 184.766-174.584s179.312 77.472 184.766 174.584h-369.532zM896.966 163.808c33.526 33.88 32.688 96.214 4.012 174.022-49.136-74.908-120.518-133.936-204.792-167.64 90.106-38.638 163.406-43.756 200.78-6.382zM93.482 967.256c-42.782-42.796-29.884-132.618 25.23-240.832 34.308 96.27 101.156 177.090 187.336 229.154-95.43 43.318-173.536 50.674-212.566 11.678z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "IE", + "browser", + "internet-explorer", + "brand" + ], + "defaultCode": 60123, + "grid": 16 + }, + { + "id": 476, + "paths": [ + "M15.4 454.6c30-236.8 191.6-451.6 481.2-454.6 174.8 3.4 318.6 82.6 404.2 233.6 43 78.8 56.4 161.6 59.2 253v107.4h-642.6c3 265 390 256 556.6 139.2v215.8c-97.6 58.6-319 111-490.4 43.6-146-54.8-250-207.6-249.4-354.6-4.8-190.6 94.8-316.8 249.4-388.6-32.8 40.6-57.8 85.4-70.8 163h362.8c0 0 21.2-216.8-205.4-216.8-213.6 7.4-367.6 131.6-454.8 259v0z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "edge", + "browser", + "brand" + ], + "defaultCode": 60124, + "grid": 16 + }, + { + "id": 477, + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM958.4 472.8l-1-10.6c0.2 3.6 0.6 7 1 10.6zM888.4 268.8l-7.2-10.8c2.4 3.6 4.8 7.2 7.2 10.8zM860.6 230.6l-4.4-5.4c1.6 1.8 3 3.6 4.4 5.4zM798.6 167.6l-5.4-4.4c2 1.6 3.6 3 5.4 4.4zM766 142.8l-10.8-7.2c3.6 2.4 7.2 4.8 10.8 7.2zM561.8 66.8l-10.8-1c3.6 0.2 7.2 0.6 10.8 1zM472.8 65.6l-10.8 1c3.6-0.2 7.2-0.6 10.8-1zM268.8 135.6l-10.8 7.2c3.6-2.4 7.2-4.8 10.8-7.2zM230.6 163.4l-5.2 4.2c1.8-1.4 3.4-2.8 5.2-4.2zM167.6 225.4l-4.4 5.4c1.6-1.8 3-3.6 4.4-5.4zM142.8 258l-7.2 10.8c2.4-3.6 4.8-7.2 7.2-10.8zM66.8 462.2l-1 10.8c0.2-3.6 0.6-7.2 1-10.8zM65.6 551.2l1 10.8c-0.2-3.6-0.6-7.2-1-10.8zM135.6 755l7.2 10.8c-2.4-3.4-4.8-7-7.2-10.8zM144 767.6l79.8-53.4-8.8-13.4-79.8 53.4c-36.2-56.2-60-120.8-68-190.4l47.8-4.8-1.6-16-47.8 4.8c-0.8-9.2-1.2-18.6-1.4-28h96v-16h-96c0.2-9.4 0.6-18.6 1.4-28l47.8 4.6 1.6-16-47.8-4.6c8-69.6 32-134.2 68.2-190.4l79.8 53.4 8.8-13.4-80-53c5.4-7.6 10.8-15.2 16.6-22.4l37 30.4 10.2-12.4-37-30.4c6-7.2 12.4-14 18.8-20.8l67.8 67.8 11.4-11.4-67.8-67.8c6.8-6.4 13.6-12.8 20.6-18.8l30.4 37.2 12.4-10.2-30.4-37c7.4-5.8 14.8-11.4 22.4-16.8l53.4 79.8 13.4-8.8-53.4-79.8c56.2-36.2 120.8-60 190.4-68l4.8 47.8 16-1.6-4.8-47.8c9.2-0.8 18.6-1.2 28-1.4v96h16v-96c9.4 0.2 18.6 0.6 28 1.4l-4.6 47.8 16 1.6 4.6-47.8c69.6 8 134.2 32 190.4 68.2l-53.4 79.8 13.4 8.8 53.4-79.8c7.6 5.4 15.2 10.8 22.4 16.6l-30.4 37 12.4 10.2 30.4-37c7.2 6 14 12.4 20.8 18.8l-25.6 25-350 233.4-233.4 350-25 25c-6.4-6.8-12.8-13.6-18.8-20.6l37-30.4-10.2-12.4-37 30.4c-5.8-7.2-11.2-14.8-16.6-22.4zM167.6 798.6c-1.4-1.8-2.8-3.4-4.2-5.2l4.2 5.2zM225.4 856.4l5.2 4.2c-1.8-1.4-3.4-2.8-5.2-4.2zM258 881l10.8 7.2c-3.6-2.2-7.2-4.6-10.8-7.2zM462.2 957.2l10.8 1c-3.6-0.2-7.2-0.6-10.8-1zM551.2 958.4l10.6-1c-3.6 0.2-7 0.6-10.6 1zM755.2 888.4l10.8-7.2c-3.6 2.4-7.2 4.8-10.8 7.2zM793.4 860.6l5.4-4.4c-1.8 1.6-3.6 3-5.4 4.4zM828.4 829.2l0.8-0.8c-0.2 0.2-0.6 0.6-0.8 0.8zM856.4 798.6l4.4-5.4c-1.6 1.8-3 3.6-4.4 5.4zM863.4 790l-37-30.4-10.2 12.4 37 30.4c-6 7.2-12.4 14-18.8 20.8l-67.8-67.8-11.4 11.4 67.8 67.8c-6.8 6.4-13.6 12.8-20.6 18.8l-30.4-37.2-12.4 10.2 30.4 37c-7.4 5.8-14.8 11.4-22.4 16.8l-53.4-79.8-13.4 8.8 53.4 79.8c-56.2 36.2-120.8 60-190.4 68l-4.8-47.8-16 1.6 4.8 47.8c-9.2 0.8-18.6 1.2-28 1.4v-96h-16v96c-9.4-0.2-18.6-0.6-28-1.4l4.6-47.8-16-1.6-4.6 47.8c-69.6-8-134.2-32-190.4-68.2l53.4-79.8-13.4-8.8-53 79.8c-7.6-5.4-15.2-10.8-22.4-16.6l30.4-37-12.4-10.2-30.4 37c-7.2-6-14-12.4-20.8-18.8l25.2-25 350-233.4 233.4-350 25-25c6.4 6.8 12.8 13.6 18.8 20.6l-37 30.4 10.2 12.4 37-30.4c5.8 7.4 11.4 14.8 16.8 22.4l-79.8 53.4 8.8 13.4 79.8-53.4c36.2 56.2 60 120.8 68 190.4l-47.8 4.8 1.6 16 47.8-4.8c0.8 9.2 1.2 18.6 1.4 28h-96v16h96c-0.2 9.4-0.6 18.6-1.4 28l-47.8-4.6-1.6 16 47.8 4.6c-8 69.6-32 134.2-68.2 190.4l-79.8-53.4-8.8 13.4 79.8 53.4c-5.2 7.2-10.8 14.6-16.6 22zM958.4 551c-0.4 3.6-0.6 7.2-1 10.8l1-10.8zM888.4 755.2c-2.4 3.6-4.8 7.2-7.2 10.8l7.2-10.8z", + "M432.535 71.075l18.73 94.157-15.693 3.122-18.73-94.157 15.693-3.122z", + "M591.656 952.95l-18.73-94.157 15.693-3.122 18.73 94.157-15.693 3.122z", + "M389.628 80.89l13.939 45.931-15.31 4.646-13.939-45.931 15.31-4.646z", + "M634.434 942.887l-13.939-45.931 15.31-4.646 13.939 45.931-15.31 4.646z", + "M348.014 95.099l36.739 88.694-14.782 6.123-36.739-88.694 14.782-6.123z", + "M676.123 928.965l-36.739-88.694 14.782-6.123 36.739 88.694-14.782 6.123z", + "M293.62 120.659l14.11-7.544 22.632 42.331-14.11 7.544-22.632-42.331z", + "M730.101 903.289l-14.11 7.544-22.632-42.331 14.11-7.544 22.632 42.331z", + "M120.601 293.826l42.336 22.622-7.541 14.112-42.336-22.622 7.541-14.112z", + "M903.244 730.195l-42.336-22.622 7.541-14.112 42.336 22.622-7.541 14.112z", + "M183.811 384.623l-88.694-36.739 6.123-14.782 88.694 36.739-6.123 14.782z", + "M840.32 639.301l88.694 36.739-6.123 14.782-88.694-36.739 6.123-14.782z", + "M85.543 374.387l45.936 13.93-4.643 15.312-45.936-13.93 4.643-15.312z", + "M938.308 649.667l-45.936-13.93 4.643-15.312 45.936 13.93-4.643 15.312z", + "M74.069 416.782l94.157 18.73-3.122 15.693-94.157-18.73 3.122-15.693z", + "M949.741 607.243l-94.157-18.73 3.122-15.693 94.157 18.73-3.122 15.693z", + "M70.965 591.548l94.157-18.73 3.122 15.693-94.157 18.73-3.122-15.693z", + "M952.842 432.427l-94.157 18.73-3.122-15.693 94.157-18.73 3.122 15.693z", + "M80.974 634.514l45.931-13.939 4.646 15.31-45.931 13.939-4.646-15.31z", + "M942.969 389.707l-45.931 13.939-4.646-15.31 45.931-13.939 4.646 15.31z", + "M101.142 690.912l-6.123-14.782 88.694-36.739 6.123 14.782-88.694 36.739z", + "M922.794 333.231l6.122 14.782-88.694 36.73-6.122-14.782 88.694-36.73z", + "M120.824 730.267l-7.544-14.11 42.331-22.632 7.544 14.11-42.331 22.632z", + "M903.455 293.785l7.544 14.11-42.331 22.632-7.544-14.11 42.331-22.632z", + "M307.878 910.846l-14.11-7.542 22.627-42.331 14.11 7.542-22.627 42.331z", + "M716.073 113.074l14.112 7.541-22.622 42.336-14.112-7.541 22.622-42.336z", + "M333.267 922.799l36.739-88.694 14.782 6.123-36.739 88.694-14.782-6.123z", + "M690.884 101.11l-36.739 88.694-14.782-6.123 36.739-88.694 14.782 6.123z", + "M389.634 943.028l-15.31-4.645 13.934-45.931 15.31 4.645-13.934 45.931z", + "M634.349 80.882l15.312 4.642-13.925 45.936-15.312-4.642 13.925-45.936z", + "M432.472 952.839l-15.693-3.122 18.73-94.157 15.693 3.122-18.73 94.157z", + "M591.536 70.969l15.693 3.122-18.73 94.157-15.693-3.122 18.73-94.157z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "safari", + "browser", + "internet", + "brand" + ], + "defaultCode": 60125, + "grid": 16 + }, + { + "id": 478, + "paths": [ + "M1024 512v0 0c0 151.6-66 288-170.8 381.6-131.4 64-253.8 19.2-294.2-8.8 129-28.2 226.4-184.2 226.4-372.8s-97.4-344.6-226.4-373c40.6-28 163-72.8 294.2-8.8 104.8 93.8 170.8 230.2 170.8 381.8v0 0z", + "M343.4 223.4c-56.6 66.8-93.2 165.6-95.6 276.6 0 0.2 0 23.8 0 24.2 2.4 110.8 39.2 209.6 95.8 276.4 73.4 95.4 182.6 155.8 304.6 155.8 75 0 145.2-22.8 205.2-62.6-90.8 81-210.4 130.2-341.4 130.2-8.2 0-16.4-0.2-24.4-0.6-271.4-12.8-487.6-236.8-487.6-511.4 0-282.8 229.2-512 512-512 0.6 0 1.2 0 2 0 130.4 0.4 249.2 49.6 339.4 130.4-60-39.8-130.2-62.8-205.2-62.8-122 0-231.2 60.4-304.8 155.8z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "opera", + "browser", + "internet", + "brand" + ], + "defaultCode": 60126, + "grid": 16 + }, + { + "id": 479, + "paths": [ + "M842.012 589.48c-13.648-13.446-43.914-20.566-89.972-21.172-31.178-0.344-68.702 2.402-108.17 7.928-17.674-10.198-35.892-21.294-50.188-34.658-38.462-35.916-70.568-85.772-90.576-140.594 1.304-5.12 2.414-9.62 3.448-14.212 0 0 21.666-123.060 15.932-164.666-0.792-5.706-1.276-7.362-2.808-11.796l-1.882-4.834c-5.894-13.592-17.448-27.994-35.564-27.208l-10.916-0.344c-20.202 0-36.664 10.332-40.986 25.774-13.138 48.434 0.418 120.892 24.98 214.738l-6.288 15.286c-17.588 42.876-39.63 86.060-59.078 124.158l-2.528 4.954c-20.46 40.040-39.026 74.028-55.856 102.822l-17.376 9.188c-1.264 0.668-31.044 16.418-38.028 20.644-59.256 35.38-98.524 75.542-105.038 107.416-2.072 10.17-0.53 23.186 10.014 29.212l16.806 8.458c7.292 3.652 14.978 5.502 22.854 5.502 42.206 0 91.202-52.572 158.698-170.366 77.93-25.37 166.652-46.458 244.412-58.090 59.258 33.368 132.142 56.544 178.142 56.544 8.168 0 15.212-0.78 20.932-2.294 8.822-2.336 16.258-7.368 20.792-14.194 8.926-13.432 10.734-31.932 8.312-50.876-0.72-5.622-5.21-12.574-10.068-17.32zM211.646 814.048c7.698-21.042 38.16-62.644 83.206-99.556 2.832-2.296 9.808-8.832 16.194-14.902-47.104 75.124-78.648 105.066-99.4 114.458zM478.434 199.686c13.566 0 21.284 34.194 21.924 66.254s-6.858 54.56-16.158 71.208c-7.702-24.648-11.426-63.5-11.426-88.904 0 0-0.566-48.558 5.66-48.558v0zM398.852 637.494c9.45-16.916 19.282-34.756 29.33-53.678 24.492-46.316 39.958-82.556 51.478-112.346 22.91 41.684 51.444 77.12 84.984 105.512 4.186 3.542 8.62 7.102 13.276 10.65-68.21 13.496-127.164 29.91-179.068 49.862v0zM828.902 633.652c-4.152 2.598-16.052 4.1-23.708 4.1-24.708 0-55.272-11.294-98.126-29.666 16.468-1.218 31.562-1.838 45.102-1.838 24.782 0 32.12-0.108 56.35 6.072 24.228 6.18 24.538 18.734 20.382 21.332v0z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-pdf", + "file", + "file-format" + ], + "defaultCode": 60127, + "grid": 16 + }, + { + "id": 480, + "paths": [ + "M690.22 471.682c-60.668-28.652-137.97-34.42-194.834 6.048 69.14-6.604 144.958 4.838 195.106 57.124 48-55.080 124.116-65.406 192.958-59.732-57.488-38.144-133.22-33.024-193.23-3.44v0zM665.646 605.75c-68.376-1.578-134.434 23.172-191.1 60.104-107.176-45.588-242.736-37.124-334.002 38.982 26.33-0.934 52.006-7.446 78.056-10.792 95.182-9.488 196.588 14.142 268.512 79.824 29.772-43.542 71.644-78.242 119.652-99.922 63.074-30.52 134.16-33.684 202.82-34.52-41.688-28.648-94.614-33.954-143.938-33.676z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-openoffice", + "file", + "file-format" + ], + "defaultCode": 60128, + "grid": 16 + }, + { + "id": 481, + "paths": [ + "M639.778 475.892h44.21l-51.012 226.178-66.324-318.010h-106.55l-77.114 318.010-57.816-318.010h-111.394l113.092 511.88h108.838l76.294-302.708 68.256 302.708h100.336l129.628-511.88h-170.446v91.832z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-word", + "file", + "file-format", + "word", + "docx" + ], + "defaultCode": 60129, + "grid": 16 + }, + { + "id": 482, + "paths": [ + "M743.028 384h-135.292l-95.732 141.032-95.742-141.032h-135.29l162.162 242.464-182.972 269.536h251.838v-91.576h-50.156l50.156-74.994 111.396 166.57h140.444l-182.976-269.536 162.164-242.464z", + "M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "file-excel", + "file", + "file-format", + "xlc" + ], + "defaultCode": 60130, + "grid": 16 + }, + { + "id": 483, + "paths": [ + "M534.626 22.628c-12.444-12.444-37.026-22.628-54.626-22.628h-384c-17.6 0-32 14.4-32 32v960c0 17.6 14.4 32 32 32h768c17.6 0 32-14.4 32-32v-576c0-17.6-10.182-42.182-22.626-54.626l-338.748-338.746zM832 960h-704v-896h351.158c2.916 0.48 8.408 2.754 10.81 4.478l337.556 337.554c1.722 2.402 3.996 7.894 4.476 10.81v543.158zM864 0h-192c-17.6 0-21.818 10.182-9.374 22.626l210.746 210.746c12.446 12.446 22.628 8.228 22.628-9.372v-192c0-17.6-14.4-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "libreoffice", + "file", + "file-format" + ], + "defaultCode": 60131, + "grid": 16 + }, + { + "id": 484, + "paths": [ + "M60.538 0l82.144 921.63 368.756 102.37 369.724-102.524 82.3-921.476h-902.924zM784.63 301.428h-432.54l10.302 115.75h411.968l-31.042 347.010-231.844 64.254-231.572-64.254-15.83-177.512h113.494l8.048 90.232 125.862 33.916 0.278-0.078 125.934-33.992 13.070-146.55h-391.74l-30.494-341.8h566.214l-10.108 113.024z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "html-five", + "w3c" + ], + "defaultCode": 60132, + "grid": 16 + }, + { + "id": 485, + "paths": [ + "M60.538 0l82.144 921.63 368.756 102.37 369.724-102.524 82.3-921.476h-902.924zM810.762 862.824l-297.226 82.376v0.466l-0.776-0.234-0.782 0.234v-0.466l-297.222-82.376-70.242-787.486h736.496l-70.248 787.486zM650.754 530.204l-13.070 146.552-126.21 34.070-125.862-33.916-8.050-90.234h-113.49l15.83 177.512 232.076 64.176 231.342-64.176 31.040-347.012h-411.966l-10.302-115.748h432.534l10.112-113.026h-566.218l30.498 341.802z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "html-five", + "w3c" + ], + "defaultCode": 60133, + "grid": 16 + }, + { + "id": 486, + "paths": [ + "M152.388 48.522l-34.36 171.926h699.748l-21.884 111.054h-700.188l-33.892 171.898h699.684l-39.018 196.064-282.012 93.422-244.4-93.422 16.728-85.042h-171.898l-40.896 206.352 404.226 154.704 466.006-154.704 153.768-772.252z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "css3", + "w3c" + ], + "defaultCode": 60134, + "grid": 16 + }, + { + "id": 487, + "paths": [ + "M1004.692 466.394l-447.096-447.080c-25.738-25.754-67.496-25.754-93.268 0l-103.882 103.876 78.17 78.17c12.532-5.996 26.564-9.36 41.384-9.36 53.020 0 96 42.98 96 96 0 14.82-3.364 28.854-9.362 41.386l127.976 127.974c12.532-5.996 26.566-9.36 41.386-9.36 53.020 0 96 42.98 96 96s-42.98 96-96 96-96-42.98-96-96c0-14.82 3.364-28.854 9.362-41.386l-127.976-127.974c-3.042 1.456-6.176 2.742-9.384 3.876v266.968c37.282 13.182 64 48.718 64 90.516 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-41.796 26.718-77.334 64-90.516v-266.968c-37.282-13.18-64-48.72-64-90.516 0-14.82 3.364-28.852 9.36-41.384l-78.17-78.17-295.892 295.876c-25.75 25.776-25.75 67.534 0 93.288l447.12 447.080c25.738 25.75 67.484 25.75 93.268 0l445.006-445.006c25.758-25.762 25.758-67.54-0.002-93.29z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "git", + "brand" + ], + "defaultCode": 60135, + "grid": 16 + }, + { + "id": 488, + "paths": [ + "M945.75 368.042l-448-298.666c-10.748-7.166-24.752-7.166-35.5 0l-448 298.666c-8.902 5.934-14.25 15.926-14.25 26.624v298.666c0 10.7 5.348 20.692 14.25 26.624l448 298.666c5.374 3.584 11.562 5.376 17.75 5.376s12.376-1.792 17.75-5.376l448-298.666c8.902-5.934 14.25-15.926 14.25-26.624v-298.666c0-10.698-5.348-20.69-14.25-26.624zM480 654.876l-166.312-110.876 166.312-110.874 166.312 110.874-166.312 110.876zM512 377.542v-221.75l358.31 238.876-166.31 110.874-192-128zM448 377.542l-192 128-166.312-110.874 358.312-238.876v221.75zM198.312 544l-134.312 89.542v-179.082l134.312 89.54zM256 582.458l192 128v221.748l-358.312-238.872 166.312-110.876zM512 710.458l192-128 166.312 110.876-358.312 238.874v-221.75zM761.688 544l134.312-89.54v179.084l-134.312-89.544z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "codepen", + "brand" + ], + "defaultCode": 60136, + "grid": 16 + }, + { + "id": 489, + "paths": [ + "M928 416c-28.428 0-53.958 12.366-71.536 32h-189.956l134.318-134.318c26.312 1.456 53.11-7.854 73.21-27.956 37.49-37.49 37.49-98.274 0-135.764s-98.274-37.49-135.766 0c-20.102 20.102-29.41 46.898-27.956 73.21l-134.314 134.318v-189.954c19.634-17.578 32-43.108 32-71.536 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 28.428 12.366 53.958 32 71.536v189.954l-134.318-134.318c1.454-26.312-7.856-53.11-27.958-73.21-37.49-37.49-98.274-37.49-135.764 0-37.49 37.492-37.49 98.274 0 135.764 20.102 20.102 46.898 29.412 73.212 27.956l134.32 134.318h-189.956c-17.578-19.634-43.108-32-71.536-32-53.020 0-96 42.98-96 96s42.98 96 96 96c28.428 0 53.958-12.366 71.536-32h189.956l-134.318 134.318c-26.314-1.456-53.11 7.854-73.212 27.956-37.49 37.492-37.49 98.276 0 135.766 37.492 37.49 98.274 37.49 135.764 0 20.102-20.102 29.412-46.898 27.958-73.21l134.316-134.32v189.956c-19.634 17.576-32 43.108-32 71.536 0 53.020 42.98 96 96 96s96-42.98 96-96c0-28.428-12.366-53.958-32-71.536v-189.956l134.318 134.318c-1.456 26.312 7.854 53.11 27.956 73.21 37.492 37.49 98.276 37.49 135.766 0s37.49-98.274 0-135.766c-20.102-20.102-46.898-29.41-73.21-27.956l-134.32-134.316h189.956c17.576 19.634 43.108 32 71.536 32 53.020 0 96-42.98 96-96s-42.982-96-96.002-96z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "svg" + ], + "defaultCode": 60137, + "grid": 16 + }, + { + "id": 490, + "paths": [ + "M259.544 511.998c0-65.416 53.030-118.446 118.446-118.446s118.446 53.030 118.446 118.446c0 65.416-53.030 118.446-118.446 118.446s-118.446-53.030-118.446-118.446zM512.004 0c-282.774 0-512.004 229.232-512.004 512s229.226 512 512.004 512c282.764 0 511.996-229.23 511.996-512 0-282.768-229.23-512-511.996-512zM379.396 959.282c-153.956-89.574-257.468-256.324-257.468-447.282s103.512-357.708 257.462-447.282c154.010 89.562 257.59 256.288 257.59 447.282 0 190.988-103.58 357.718-257.584 447.282z" + ], + "attrs": [], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "IcoMoon", + "icomoon", + "brand" + ], + "defaultCode": 60138, + "grid": 16 + } + ] + }, { "selection": [ { @@ -13,7 +11443,7 @@ "name": "database", "prevSize": 32, "code": 59649, - "tempChar": "" + "tempChar": "" } ], "id": 2, diff --git a/bin/testdatarunner.js b/bin/testdatarunner.js new file mode 100644 index 000000000000..a5043a67c839 --- /dev/null +++ b/bin/testdatarunner.js @@ -0,0 +1,117 @@ + +'use strict'; + +const axios = require('axios'); +const moment = require('moment'); +const crypto = require('crypto'); +const shasum = crypto.createHash('sha1'); + +const FIVE_MINUTES = 1000 * 60 * 5; + +if (process.argv.length < 4) { + console.error('This is an utility to send continuous CGM entry data to a test Nightscout server') + console.error('USAGE: node testdatarunner.js '); + process.exit(); +} + +const URL = process.argv[2]; +const SECRET = process.argv[3]; +shasum.update(SECRET); +const SECRET_SHA1 = shasum.digest('hex'); + +const HEADERS = {'api-secret': SECRET_SHA1}; + +const ENTRIES_URL = URL + '/api/v1/entries'; + +var done = (function wait () { if (!done) setTimeout(wait, 1000); })(); + +console.log('NS data filler active'); + +const entry = { + device: 'Dev simulator', + date: 1609061083612, + dateString: '2020-12-27T09:24:43.612Z', + sgv: 100, + delta: 0, + direction: 'Flat', + type: 'sgv' +}; + +function addEntry () { + console.log('Sending add new entry'); + sendEntry(Date.now()); + setTimeout(addEntry, FIVE_MINUTES); +} + +function oscillator(time, frequency = 1, amplitude = 1, phase = 0, offset = 0){ + return Math.sin(time * frequency * Math.PI * 2 + phase * Math.PI * 2) * amplitude + offset; +} + +async function sendFail() { + try { + console.log('Sending fail'); + const response = await axios.post(ENTRIES_URL, entry, {headers: {'api-secret': 'incorrect' }}); + } catch (e) { } +} + +async function sendEntry (date) { + const m = moment(date); + entry.date = date; + entry.dateString = m.toISOString(); + entry.sgv = 100 + Math.round(oscillator(date / 1000, 1/(60*60), 30)); + + console.log('Adding entry', entry); + const response = await axios.post(ENTRIES_URL, entry, {headers: HEADERS}); + + if (date > Date.now() - 5000) sendFail(); +} + +(async () => { + try { + console.log('GETTING', ENTRIES_URL); + const response = await axios.get(ENTRIES_URL, {headers: HEADERS} ); + const latestEntry = response.data ? response.data[0] : null; + + if (!latestEntry) { + // Fill in history + console.log('I would fill in history'); + const totalToSave = 24; + const now = Date.now(); + const start = now - ( totalToSave * FIVE_MINUTES); + let current = start; + while (current <= now) { + await sendEntry(current); + current += FIVE_MINUTES; + } + + setTimeout(addEntry, 1000*60*5); + + } else { + let latestDate = latestEntry.date; + const now = Date.now(); + if ((now - latestDate) > FIVE_MINUTES) { + console.log('We got data but it is older than 5 minutes, makign a partial fill'); + + let current = latestDate + FIVE_MINUTES; + + while (current < now) { + await sendEntry(current); + current += FIVE_MINUTES; + } + + latestDate = current; + + } else { + console.log('Looks like we got history, not filling'); + } + setTimeout(addEntry, Date.now() - latestDate); + } + + sendFail(); + sendFail(); + + } catch (error) { + console.log(error.response.data); + } + })(); + diff --git a/env.js b/env.js index 275271bdf264..ccd9ebb48e4c 100644 --- a/env.js +++ b/env.js @@ -1,16 +1,19 @@ 'use strict'; -var _each = require('lodash/each'); -var _trim = require('lodash/trim'); -var _forIn = require('lodash/forIn'); -var _startsWith = require('lodash/startsWith'); -var _camelCase = require('lodash/camelCase'); +const _each = require('lodash/each'); +const _trim = require('lodash/trim'); +const _forIn = require('lodash/forIn'); +const _startsWith = require('lodash/startsWith'); +const _camelCase = require('lodash/camelCase'); -var fs = require('fs'); -var crypto = require('crypto'); -var consts = require('./lib/constants'); +const owasp = require('owasp-password-strength-test'); -var env = { + +const fs = require('fs'); +const crypto = require('crypto'); +const consts = require('./lib/constants'); + +const env = { settings: require('./lib/settings')() }; @@ -36,9 +39,8 @@ function config ( ) { minify: readENVTruthy('DEBUG_MINIFY', true) }; - if (env.err) { - delete env.err; - } + env.err = []; + env.notifies = []; setSSL(); setAPISecret(); @@ -81,10 +83,21 @@ function setAPISecret() { if (readENV('API_SECRET').length < consts.MIN_PASSPHRASE_LENGTH) { var msg = ['API_SECRET should be at least', consts.MIN_PASSPHRASE_LENGTH, 'characters'].join(' '); console.error(msg); - env.err = {desc: msg}; + env.err.push({ desc: msg }); } else { var shasum = crypto.createHash('sha1'); shasum.update(readENV('API_SECRET')); + + var testresult = owasp.test(readENV('API_SECRET')); + const messages = testresult.errors; + + if (messages) { + messages.forEach(message => { + const m = message.replace('The password must', 'API_SECRET should'); + + env.notifies.push({persistent: true, title: 'Security issue', message: m + ' Please change your API_SECRET to reduce risk of unauthorized access.'}); + }); + } env.api_secret = shasum.digest('hex'); } } diff --git a/lib/adminnotifies.js b/lib/adminnotifies.js new file mode 100644 index 000000000000..b035779d6729 --- /dev/null +++ b/lib/adminnotifies.js @@ -0,0 +1,52 @@ +'use strict'; + +const _ = require('lodash'); + +function init (ctx) { + + const adminnotifies = {}; + + adminnotifies.addNotify = function addnotify (notify) { + if (!notify) return; + + notify.title = notify.title || 'No title'; + notify.message = notify.message || 'No message'; + + const existingMessage = _.find(adminnotifies.notifies, function findExisting (obj) { + return obj.message == notify.message; + }); + + if (existingMessage) { + existingMessage.count += 1; + existingMessage.lastRecorded = Date.now(); + } else { + notify.count = 1; + notify.lastRecorded = Date.now(); + adminnotifies.notifies.push(notify); + } + } + + adminnotifies.getNotifies = function getNotifies () { + return adminnotifies.notifies; + } + + ctx.bus.on('admin-notify', adminnotifies.addNotify); + + adminnotifies.clean = function cleanNotifies () { + adminnotifies.notifies = _.filter(adminnotifies.notifies, function findExisting (obj) { + return obj.persistent || ((Date.now() - obj.lastRecorded) < 1000 * 60 * 60 * 12); + }); + } + + adminnotifies.cleanAll = function cleanAll() { + adminnotifies.notifies = []; + } + + adminnotifies.cleanAll(); + + ctx.bus.on('tick', adminnotifies.clean); + + return adminnotifies; +} + +module.exports = init; diff --git a/lib/api/adminnotifiesapi.js b/lib/api/adminnotifiesapi.js new file mode 100644 index 000000000000..7579d8e3a796 --- /dev/null +++ b/lib/api/adminnotifiesapi.js @@ -0,0 +1,35 @@ +'use strict'; + +const _ = require('lodash'); +const consts = require('../constants'); + +function configure (ctx) { + const express = require('express') + , api = express.Router(); + + api.get('/adminnotifies', function(req, res) { + ctx.authorization.resolveWithRequest(req, function resolved (err, result) { + + const isAdmin = ctx.authorization.checkMultiple('*:*:admin', result.shiros); //full admin permissions + const response = { + notifies: [] + , notifyCount: 0 + }; + + if (ctx.adminnotifies) { + const notifies = _.filter(ctx.adminnotifies.getNotifies(), function isOld (obj) { + return (obj.persistent || (Date.now() - obj.lastRecorded) < 1000 * 60 * 60 * 8); + }); + + if (isAdmin) { response.notifies = notifies } + response.notifyCount = notifies.length; + } + + res.sendJSONStatus(res, consts.HTTP_OK, response); + }); + }); + + return api; +} + +module.exports = configure; diff --git a/lib/api/devicestatus/index.js b/lib/api/devicestatus/index.js index 94dfb1c93853..ac0561030036 100644 --- a/lib/api/devicestatus/index.js +++ b/lib/api/devicestatus/index.js @@ -67,6 +67,9 @@ function configure (app, wares, ctx, env) { function doPost (req, res) { var obj = req.body; + + ctx.purifier.purifyObject(obj); + ctx.devicestatus.create(obj, function(err, created) { if (err) { res.sendJSONStatus(res, consts.HTTP_INTERNAL_ERROR, 'Mongo Error', err); diff --git a/lib/api/entries/index.js b/lib/api/entries/index.js index 5075df6ededf..f13ba9ed280b 100644 --- a/lib/api/entries/index.js +++ b/lib/api/entries/index.js @@ -274,6 +274,11 @@ function configure (app, wares, ctx, env) { incoming = incoming.concat(req.body); } + for (let i = 0; i < incoming.length; i++) { + const e = incoming[i]; + ctx.purifier.purifyObject(e); + } + /** * @function persist * @returns {WritableStream} a writable persistent storage stream diff --git a/lib/api/index.js b/lib/api/index.js index 156ee367a864..ad1ef6c1da9b 100644 --- a/lib/api/index.js +++ b/lib/api/index.js @@ -58,6 +58,9 @@ function create (env, ctx) { app.all('/activity*', require('./activity/')(app, wares, ctx)); app.use('/', wares.sendJSONStatus, require('./verifyauth')(ctx)); + + app.use('/', wares.sendJSONStatus, require('./adminnotifiesapi')(ctx)); + app.all('/food*', require('./food/')(app, wares, ctx)); // Status first diff --git a/lib/api/profile/index.js b/lib/api/profile/index.js index d00122f16bd1..7add11f4b215 100644 --- a/lib/api/profile/index.js +++ b/lib/api/profile/index.js @@ -61,6 +61,7 @@ function configure (app, wares, ctx) { // create new record api.post('/profile/', ctx.authorization.isPermitted('api:profile:create'), function(req, res) { var data = req.body; + ctx.purifier.purifyObject(data); ctx.profile.create(data, function (err, created) { if (err) { res.sendJSONStatus(res, consts.HTTP_INTERNAL_ERROR, 'Mongo Error', err); diff --git a/lib/api/treatments/index.js b/lib/api/treatments/index.js index 0e1d8a0ede83..c5d71bc917eb 100644 --- a/lib/api/treatments/index.js +++ b/lib/api/treatments/index.js @@ -119,6 +119,8 @@ function configure (app, wares, ctx, env) { t.created_at = new Date().toISOString(); } + ctx.purifier.purifyObject(t); + /* if (!t.created_at) { console.log('Trying to create treatment without created_at field', t); diff --git a/lib/authorization/delaylist.js b/lib/authorization/delaylist.js index 19e45985baa1..fe6c8096153e 100644 --- a/lib/authorization/delaylist.js +++ b/lib/authorization/delaylist.js @@ -9,8 +9,6 @@ function init (env) { const DELAY_ON_FAIL = _.get(env, 'settings.authFailDelay') || 5000; const FAIL_AGE = 60000; - const sleep = require('util').promisify(setTimeout); - ipDelayList.addFailedRequest = function addFailedRequest (ip) { const ipString = String(ip); let entry = ipDelayList[ipString]; diff --git a/lib/authorization/index.js b/lib/authorization/index.js index 5935a2332d3a..31e42b242e8c 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -5,10 +5,8 @@ const jwt = require('jsonwebtoken'); const shiroTrie = require('shiro-trie'); const consts = require('./../constants'); - const sleep = require('util').promisify(setTimeout); - function getRemoteIP (req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress; } @@ -208,7 +206,13 @@ function init (env, ctx) { console.error('Resolving secret/token to permissions failed'); addFailedRequest(data.ip); - if (callback) { callback('All validation failed', {}); } + + ctx.bus.emit('admin-notify', { + title: ctx.language.translate('Failed authentication') + , message: ctx.language.translate('A device at IP number') + ' ' + data.ip + ' ' + ctx.language.translate('attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?') + }); + + if (callback) { callback('All validation failed', {}); } return {}; }; diff --git a/lib/client/adminnotifiesclient.js b/lib/client/adminnotifiesclient.js new file mode 100644 index 000000000000..1e91ddc7cbd3 --- /dev/null +++ b/lib/client/adminnotifiesclient.js @@ -0,0 +1,100 @@ +'use strict'; + +function init (client, $) { + + var notifies = {}; + + client.notifies = notifies; + + notifies.notifies = []; + notifies.drawer = $('#adminNotifiesDrawer'); + notifies.button = $('#adminnotifies'); + + notifies.updateAdminNotifies = function updateAdminNotifies() { + + var src = '/api/v1/adminnotifies?t=' + new Date().getTime(); + + $.ajax({ + method: 'GET' + , url: src + , headers: client.headers() + }).done(function success (results) { + if (results.message) { + var m = results.message; + client.notifies.notifies = m.notifies; + client.notifies.notifyCount = m.notifyCount; + if (m.notifyCount > 0) { + notifies.button.show(); + } + } + window.setTimeout(notifies.updateAdminNotifies, 1000*60); + }).fail(function fail () { + console.error('Failed to load notifies'); + window.setTimeout(notifies.updateAdminNotifies, 1000*60); + }); + } + + notifies.updateAdminNotifies(); + + function wrapmessage(title, message, count, ago, persistent) { + let html = '

' + title + '

' + message + '

'; + + let additional = ''; + + if (count > 1) additional += 'Event repeated ' + count + ' times.' + ' '; + let units = 'minutes'; + if (ago > 60) { + ago = ago / 60; + units = 'hours'; + } + if (!persistent) additional += 'Last recorded ' + ago + ' '+ units + ' ago.'; + + if (additional) html += '

' + additional + '

' + return html; + } + + notifies.prepare = function prepare() { + + var translate = client.translate; + + var html = '
'; + var messages = client.notifies.notifies; + var messageCount = client.notifies.notifyCount; + + if (messages && messages.length > 0) { + html += '

' + translate('You have administration messages') + '

'; + for(var i = 0 ; i < messages.length; i++) { + var m = messages[i]; + const ago = Math.round((Date.now() - m.lastRecorded) / 60000); + html += wrapmessage(m.title, m.message, m.count, ago, m.persistent); + } + } else { + if (messageCount > 0) { + html = wrapmessage(translate('Admin messages in queue'), translate('Please sign in using the API_SECRET to see your administration messages')); + } else { + html = wrapmessage(translate('Queue empty'), translate('There are no admin messages in queue')); + } + } + html += '
'; + notifies.drawer.html(html); + } + + function maybePrevent (event) { + if (event) { + event.preventDefault(); + } + } + + notifies.toggleDrawer = function toggleDrawer (event) { + client.browserUtils.toggleDrawer('#adminNotifiesDrawer', notifies.prepare); + maybePrevent(event); + }; + + notifies.button.click(notifies.toggleDrawer); + notifies.button.css('color','red'); + + return notifies; + +} + +module.exports = init; diff --git a/lib/client/index.js b/lib/client/index.js index 31eca273ba50..16b08cf02a25 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -237,6 +237,8 @@ client.load = function load (serverSettings, callback) { //After plugins are initialized with browser settings; browserSettings.loadAndWireForm(); + client.adminnotifies = require('./adminnotifiesclient')(client, $); + if (serverSettings && serverSettings.authorized) { client.authorized = serverSettings.authorized; client.authorized.lat = Date.now(); @@ -266,6 +268,8 @@ client.load = function load (serverSettings, callback) { $('#treatmentDrawerToggle').toggle(treatmentCreateAllowed && client.settings.showPlugins.indexOf('careportal') > -1); $('#boluscalcDrawerToggle').toggle(treatmentCreateAllowed && client.settings.showPlugins.indexOf('boluscalc') > -1); + if (isAuthenticated) client.notifies.updateAdminNotifies(); + // Edit mode editButton.toggle(client.settings.editMode && treatmentUpdateAllowed); editButton.click(function editModeClick (event) { diff --git a/lib/server/bootevent.js b/lib/server/bootevent.js index 9a3c664dd171..5be451897596 100644 --- a/lib/server/bootevent.js +++ b/lib/server/bootevent.js @@ -1,8 +1,7 @@ 'use strict'; -var _ = require('lodash'); - -var UPDATE_THROTTLE = 5000; +const _ = require('lodash'); +const UPDATE_THROTTLE = 5000; function boot (env, language) { @@ -11,23 +10,19 @@ function boot (env, language) { console.log('Executing startBoot'); ctx.runtimeState = 'booting'; + ctx.bus = require('../bus')(env.settings, ctx); + ctx.adminnotifies = require('../adminnotifies')(ctx); + if (env.notifies) { + ctx.adminnotifies.addNotify(env.notifies[0]); // TODO iterate all + } + next(); } ////////////////////////////////////////////////// // Check Node version. - // Latest Node 8 LTS and Latest Node 10 LTS are recommended and supported. - // Latest Node version on Azure is tolerated, but not recommended - // Latest Node (non LTS) version works, but is not recommended + // Latest Node 10 to 14 LTS are recommended and supported. // Older Node versions or Node versions with known security issues will not work. - // More explicit: - // < 8 does not work, not supported - // >= 8.15.1 works, supported and recommended - // == 9.x does not work, not supported - // == 10.15.2 works, not fully supported and not recommended (Azure version) - // >= 10.16.0 works, supported and recommended - // == 11.x does not work, not supported - // >= 12.6.0 does work, not recommended, will not be supported. We only support Node LTS releases /////////////////////////////////////////////////// function checkNodeVersion (ctx, next) { @@ -56,7 +51,7 @@ function boot (env, language) { console.log('Executing checkEnv'); ctx.language = language; - if (env.err) { + if (env.err.length > 0) { ctx.bootErrors = ctx.bootErrors || [ ]; ctx.bootErrors.push({'desc': 'ENV Error', err: env.err}); } @@ -121,6 +116,15 @@ function boot (env, language) { err: 'API_SECRET setting is missing, cannot enable REST API'}); } + if (env.settings.authDefaultRoles == 'readable') { + const message = { + title: "Nightscout readable by world" + ,message: "Your Nightscout installation is readable by anyone who knows the web page URL. Please consider closing access to the site by following the instructions in the Nightscout documentation." + ,persistent: true + }; + ctx.adminnotifies.addNotify(message); + } + next(); } @@ -215,11 +219,11 @@ function boot (env, language) { ctx.food = require('./food')(env, ctx); ctx.pebble = require('./pebble')(env, ctx); ctx.properties = require('../api/properties')(env, ctx); - ctx.bus = require('../bus')(env.settings, ctx); ctx.ddata = require('../data/ddata')(); ctx.cache = require('./cache')(env,ctx); ctx.dataloader = require('../data/dataloader')(env, ctx); ctx.notifications = require('../notifications')(env, ctx); + ctx.purifier = require('./purifier')(env,ctx); if (env.settings.isEnabled('alexa') || env.settings.isEnabled('googlehome')) { ctx.virtAsstBase = require('../plugins/virtAsstBase')(env, ctx); diff --git a/lib/server/purifier.js b/lib/server/purifier.js new file mode 100644 index 000000000000..c9fe3c0230ef --- /dev/null +++ b/lib/server/purifier.js @@ -0,0 +1,36 @@ +'use strict'; + +const createDOMPurify = require('dompurify'); +const { JSDOM } = require('jsdom'); +const window = new JSDOM('').window; +const DOMPurify = createDOMPurify(window); + +function init (env, ctx) { + + const purifier = {}; + + function iterate (obj) { + for (var property in obj) { + if (obj.hasOwnProperty(property)) { + if (typeof obj[property] == 'object') + iterate(obj[property]); + else + if (isNaN(obj[property])) { + const clean = DOMPurify.sanitize(obj[property]); + if (obj[property] !== clean) { + obj[property] = clean; + } + } + } + } + } + + purifier.purifyObject = function purifyObject (obj) { + return iterate(obj); + } + + return purifier; + +} + +module.exports = init; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 018c970c18de..765f8d59121a 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1217,9 +1217,9 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" } } }, @@ -1551,6 +1551,15 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "requires": { + "follow-redirects": "^1.10.0" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2992,9 +3001,9 @@ }, "dependencies": { "abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, "whatwg-url": { "version": "7.1.0", @@ -3171,6 +3180,11 @@ "webidl-conversions": "^4.0.2" } }, + "dompurify": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.6.tgz", + "integrity": "sha512-7b7ZArhhH0SP6W2R9cqK6RjaU82FZ2UPM7RO8qN1b1wyvC/NY1FNWcX1Pu00fFOAnzEORtwXe4bPaClg6pUybQ==" + }, "dot-prop": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", @@ -3566,6 +3580,18 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, "eslint": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", @@ -3761,6 +3787,11 @@ } } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", @@ -3793,6 +3824,11 @@ } } }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4075,6 +4111,11 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -4253,6 +4294,12 @@ "readable-stream": "^2.3.6" } }, + "follow-redirects": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -5580,65 +5627,10 @@ "xml-name-validator": "^3.0.0" }, "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true } } }, @@ -5792,6 +5784,15 @@ "leven": "^3.1.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8551,6 +8552,19 @@ "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -8567,6 +8581,11 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "owasp-password-strength-test": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", + "integrity": "sha1-T2KeQpA+j20nmyMNZXq2HljkSxI=" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10340,6 +10359,12 @@ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", diff --git a/package.json b/package.json index 56adf27c4f4b..63f765b4e3d5 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,19 @@ "bundle-analyzer": "webpack --mode development --config webpack.config.js --profile --json > stats.json && webpack-bundle-analyzer stats.json", "update-buster": "node bin/generateCacheBuster.js >tmp/cacheBusterToken", "coverage": "cat ./coverage/lcov.info | env-cmd -f ./ci.test.env codacy-coverage", - "dev": "env-cmd -f ./my.env nodemon server.js 0.0.0.0", + "dev": "env-cmd -f ./my.env nodemon --inspect server.js 0.0.0.0", + "dev-test": "env-cmd -f ./my.devtest.env nodemon --inspect server.js 0.0.0.0", "prod": "env-cmd -f ./my.prod.env node server.js 0.0.0.0", "lint": "eslint lib" }, "main": "server.js", + "nodemonConfig": { + "ignore": [ + "tests/*", + "node_modules/*", + "bin/*" + ] + }, "config": { "blanket": { "pattern": [ @@ -75,6 +83,7 @@ "cssmin": "^0.4.3", "csv-stringify": "^5.5.1", "d3": "^5.16.0", + "dompurify": "^2.2.6", "easyxml": "^2.0.1", "ejs": "^2.7.4", "errorhandler": "^1.5.1", @@ -89,7 +98,7 @@ "jquery-ui-bundle": "^1.12.1-migrate", "jquery.tooltips": "^1.0.0", "js-storage": "^1.1.0", - "jsdom": "~11.11.0", + "jsdom": "^11.11.0", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.20", "memory-cache": "^0.2.0", @@ -102,6 +111,7 @@ "mongodb": "^3.6.0", "mongomock": "^0.1.2", "node-cache": "^4.2.1", + "owasp-password-strength-test": "^1.3.0", "parse-duration": "^0.1.3", "pem": "^1.14.4", "pushover-notifications": "^1.2.2", @@ -122,6 +132,7 @@ "webpack-cli": "^3.3.12" }, "devDependencies": { + "axios": "^0.21.1", "babel-eslint": "^10.1.0", "benv": "^3.3.0", "codacy-coverage": "^3.4.0", diff --git a/static/css/drawer.css b/static/css/drawer.css index 3e5e72542a47..7c54ee246639 100644 --- a/static/css/drawer.css +++ b/static/css/drawer.css @@ -49,7 +49,7 @@ input[type=number]:invalid { text-decoration: underline; } -#treatmentDrawer { +#treatmentDrawer, #adminNotifiesDrawer { background-color: #666; border-left: 1px solid #999; box-shadow: inset 4px 4px 5px 0 rgba(50, 50, 50, 0.75); @@ -66,6 +66,19 @@ input[type=number]:invalid { z-index: 1; } +#adminNotifyContent { + margin: 10px; +} + +.adminNotifyMessage { + margin-left: 10px; +} + +.adminNotifyMessageAdditionalInfo { + margin-left: 10px; + font-size: 11px; +} + #treatmentDrawer input { box-sizing: border-box; } diff --git a/static/css/main.css b/static/css/main.css index d6bee072d160..dd5abb9c9b42 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -9,15 +9,15 @@ font-style: normal; } -/* +/* Icon font for additional plugin icons. Please read assets/fonts/README.md about update process */ @font-face { font-family: 'pluginicons'; /* Plugin Icons font files content (from WOFF and SVG icon files, base64 encoded) */ - src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAWAAAsAAAAABTQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIE8mNtYXAAAAFoAAAAVAAAAFQXVdKJZ2FzcAAAAbwAAAAIAAAACAAAABBnbHlmAAABxAAAAUgAAAFIFA4eR2hlYWQAAAMMAAAANgAAADYXVLrVaGhlYQAAA0QAAAAkAAAAJAdQA8ZobXR4AAADaAAAABQAAAAUCY4AAGxvY2EAAAN8AAAADAAAAAwAKAC4bWF4cAAAA4gAAAAgAAAAIAAJAFxuYW1lAAADqAAAAbYAAAG2DBt7mXBvc3QAAAVgAAAAIAAAACAAAwAAAAMCxwGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6QEDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADgAAAAKAAgAAgACAAEAIOkB//3//wAAAAAAIOkB//3//wAB/+MXAwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAwAA/8ADjgPAABsAOgBZAAABIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmARUUFx4BFxYzMjc+ATc2PQEUBw4BBwYjIicuAScmNREVFBceARcWMzI3PgE3Nj0BFAcOAQcGIyInLgEnJjUBx15TU3skJCQke1NTXl5TU3wjJCQjfFNT/dskJHtTU15eU1N8IyQkI3xTU15eU1N7JCQkJHtTU15eU1N8IyQkI3xTU15eU1N7JCQDwBISPikpMC8pKj0SEhISPSopLzApKT4SEv6rqy8qKT4SEhISPikqL6svKik+EhISEj4pKi/+46owKSk+EhISEj4pKTCqLykqPhESEhE+KikvAAAAAAEAAAABAABgRbaTXw889QALBAAAAAAA2lO7LAAAAADaU7ssAAD/wAOOA8AAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAA44AAQAAAAAAAAAAAAAAAAAAAAUEAAAAAAAAAAAAAAACAAAAA44AAAAAAAAACgAUAB4ApAABAAAABQBaAAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEACwAAAAEAAAAAAAIABwCEAAEAAAAAAAMACwBCAAEAAAAAAAQACwCZAAEAAAAAAAUACwAhAAEAAAAAAAYACwBjAAEAAAAAAAoAGgC6AAMAAQQJAAEAFgALAAMAAQQJAAIADgCLAAMAAQQJAAMAFgBNAAMAAQQJAAQAFgCkAAMAAQQJAAUAFgAsAAMAAQQJAAYAFgBuAAMAAQQJAAoANADUcGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwcGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzcGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQBycGx1Z2luaWNvbnMAcABsAHUAZwBpAG4AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('woff'), - url(data:application/font-svg;charset=utf-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8bWV0YWRhdGE+R2VuZXJhdGVkIGJ5IEljb01vb248L21ldGFkYXRhPg0KPGRlZnM+DQo8Zm9udCBpZD0icGx1Z2luaWNvbnMiIGhvcml6LWFkdi14PSIxMDI0Ij4NCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMDI0IiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTY0IiAvPg0KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjEwMjQiIC8+DQo8Z2x5cGggdW5pY29kZT0iJiN4MjA7IiBob3Jpei1hZHYteD0iNTEyIiBkPSIiIC8+DQo8Z2x5cGggdW5pY29kZT0iJiN4ZTkwMTsiIGdseXBoLW5hbWU9ImRhdGFiYXNlIiBob3Jpei1hZHYteD0iOTEwIiBkPSJNNDU1LjExMSA5NjBjLTI1MS40NDkgMC00NTUuMTExLTEwMS44MzEtNDU1LjExMS0yMjcuNTU2czIwMy42NjItMjI3LjU1NiA0NTUuMTExLTIyNy41NTYgNDU1LjExMSAxMDEuODMxIDQ1NS4xMTEgMjI3LjU1Ni0yMDMuNjYyIDIyNy41NTYtNDU1LjExMSAyMjcuNTU2ek0wIDYxOC42Njd2LTE3MC42NjdjMC0xMjUuNzI0IDIwMy42NjItMjI3LjU1NiA0NTUuMTExLTIyNy41NTZzNDU1LjExMSAxMDEuODMxIDQ1NS4xMTEgMjI3LjU1NnYxNzAuNjY3YzAtMTI1LjcyNC0yMDMuNjYyLTIyNy41NTYtNDU1LjExMS0yMjcuNTU2cy00NTUuMTExIDEwMS44MzEtNDU1LjExMSAyMjcuNTU2ek0wIDMzNC4yMjJ2LTE3MC42NjdjMC0xMjUuNzI0IDIwMy42NjItMjI3LjU1NiA0NTUuMTExLTIyNy41NTZzNDU1LjExMSAxMDEuODMxIDQ1NS4xMTEgMjI3LjU1NnYxNzAuNjY3YzAtMTI1LjcyNC0yMDMuNjYyLTIyNy41NTYtNDU1LjExMS0yMjcuNTU2cy00NTUuMTExIDEwMS44MzEtNDU1LjExMSAyMjcuNTU2eiIgLz4NCjwvZm9udD48L2RlZnM+PC9zdmc+) format('svg'); + src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAcEAAsAAAAABrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIFc2NtYXAAAAFoAAAAXAAAAFzpVumzZ2FzcAAAAcQAAAAIAAAACAAAABBnbHlmAAABzAAAAuwAAALs3l4nFmhlYWQAAAS4AAAANgAAADYbA9uPaGhlYQAABPAAAAAkAAAAJAfCA8dobXR4AAAFFAAAABgAAAAYDY4AAGxvY2EAAAUsAAAADgAAAA4BngC4bWF4cAAABTwAAAAgAAAAIAAMAJRuYW1lAAAFXAAAAYYAAAGGmUoJ+3Bvc3QAAAbkAAAAIAAAACAAAwAAAAMDLwGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6RoDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAEAIOkB6Rr//f//AAAAAAAg6QHpGv/9//8AAf/jFwMW6wADAAEAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAADAAD/wAOOA8AAGwA6AFkAAAEiBw4BBwYVFBceARcWMzI3PgE3NjU0Jy4BJyYBFRQXHgEXFjMyNz4BNzY9ARQHDgEHBiMiJy4BJyY1ERUUFx4BFxYzMjc+ATc2PQEUBw4BBwYjIicuAScmNQHHXlNTeyQkJCR7U1NeXlNTfCMkJCN8U1P92yQke1NTXl5TU3wjJCQjfFNTXl5TU3skJCQke1NTXl5TU3wjJCQjfFNTXl5TU3skJAPAEhI+KSkwLykqPRISEhI9KikvMCkpPhIS/qurLyopPhISEhI+KSovqy8qKT4SEhISPikqL/7jqjApKT4SEhISPikpMKovKSo+ERISET4qKS8AAAAABQAAAAIEAAOAACoATgBjAG0AkQAAATQnLgEnJic4ATEjMAcOAQcGBw4BFRQWFxYXHgEXFjEzMDQxMjc+ATc2NQMiJicuAScuATU0Njc+ATc+ATMyFhceARceARUUBgcOAQcOAQE0NjcOASMqATEHFRcwMjMyFhcuARcnEx4BPwE+AScBIiYnLgEnLgE1NDY3PgE3PgEzMhYXHgEXHgEVFAYHDgEHDgEEAAoLIxgYG1MiI35XWGkGCAgGaVhXfiMiUxsYGCMLCp8HDgQJEggSEhISCBIJBA4HBw4ECRIIERMTEQgSCQQO/ZQFBiRCJjMRNzcRMyZCJAYFdIBSAxYMdgwJBwF2AwUCAwcDBwcHBwMHAwIFAwMFAQQHAwcHBwcDBwQBBQITS0JDYx0cARgYQSMiFiJRLi9RIhUjIkIYGAEdHWNCQkz+ygsECyAVLndCQncuFCEKBQsLBQohFC53QkJ3LhUgCwQLATYnSyMFBV9YXwUFI0uuGP6/DQsFMAQXDAFCBQEEDQgRLhoZLhIIDAQCBAQCBAwIEi4ZGi4RCA0EAQUAAQAAAAAAAPoSCcNfDzz1AAsEAAAAAADb8suJAAAAANvyy4kAAP/ABAADwAAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAAEAAABAAAAAAAAAAAAAAAAAAAABgQAAAAAAAAAAAAAAAIAAAADjgAABAAAAAAAAAAACgAUAB4ApAF2AAAAAQAAAAYAkgAFAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGljb21vb24AaQBjAG8AbQBvAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGljb21vb24AaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAcmljb21vb24AaQBjAG8AbQBvAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('woff'), + url(data:application/font-svg;charset=utf-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+R2VuZXJhdGVkIGJ5IEljb01vb248L21ldGFkYXRhPgo8ZGVmcz4KPGZvbnQgaWQ9Imljb21vb24iIGhvcml6LWFkdi14PSIxMDI0Ij4KPGZvbnQtZmFjZSB1bml0cy1wZXItZW09IjEwMjQiIGFzY2VudD0iOTYwIiBkZXNjZW50PSItNjQiIC8+CjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIxMDI0IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjA7IiBob3Jpei1hZHYteD0iNTEyIiBkPSIiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlOTAxOyIgZ2x5cGgtbmFtZT0iZGF0YWJhc2UiIGhvcml6LWFkdi14PSI5MTAiIGQ9Ik00NTUuMTExIDk2MGMtMjUxLjQ0OSAwLTQ1NS4xMTEtMTAxLjgzMS00NTUuMTExLTIyNy41NTZzMjAzLjY2Mi0yMjcuNTU2IDQ1NS4xMTEtMjI3LjU1NiA0NTUuMTExIDEwMS44MzEgNDU1LjExMSAyMjcuNTU2LTIwMy42NjIgMjI3LjU1Ni00NTUuMTExIDIyNy41NTZ6TTAgNjE4LjY2N3YtMTcwLjY2N2MwLTEyNS43MjQgMjAzLjY2Mi0yMjcuNTU2IDQ1NS4xMTEtMjI3LjU1NnM0NTUuMTExIDEwMS44MzEgNDU1LjExMSAyMjcuNTU2djE3MC42NjdjMC0xMjUuNzI0LTIwMy42NjItMjI3LjU1Ni00NTUuMTExLTIyNy41NTZzLTQ1NS4xMTEgMTAxLjgzMS00NTUuMTExIDIyNy41NTZ6TTAgMzM0LjIyMnYtMTcwLjY2N2MwLTEyNS43MjQgMjAzLjY2Mi0yMjcuNTU2IDQ1NS4xMTEtMjI3LjU1NnM0NTUuMTExIDEwMS44MzEgNDU1LjExMSAyMjcuNTU2djE3MC42NjdjMC0xMjUuNzI0LTIwMy42NjItMjI3LjU1Ni00NTUuMTExLTIyNy41NTZzLTQ1NS4xMTEgMTAxLjgzMS00NTUuMTExIDIyNy41NTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTkxYTsiIGdseXBoLW5hbWU9Im5vdGlmaWVzIiBkPSJNMTAyNCA1MzAuNzQ0YzAgMjAwLjkyNi01OC43OTIgMzYzLjkzOC0xMzEuNDgyIDM2NS4yMjYgMC4yOTIgMC4wMDYgMC41NzggMC4wMzAgMC44NzIgMC4wMzBoLTgyLjk0MmMwIDAtMTk0LjgtMTQ2LjMzNi00NzUuMjMtMjAzLjc1NC04LjU2LTQ1LjI5Mi0xNC4wMzAtOTkuMjc0LTE0LjAzMC0xNjEuNTAyczUuNDY2LTExNi4yMDggMTQuMDMwLTE2MS41YzI4MC40MjgtNTcuNDE4IDQ3NS4yMy0yMDMuNzU2IDQ3NS4yMy0yMDMuNzU2aDgyLjk0MmMtMC4yOTIgMC0wLjU3OCAwLjAyNC0wLjg3MiAwLjAzMiA3Mi42OTYgMS4yODggMTMxLjQ4MiAxNjQuMjk4IDEzMS40ODIgMzY1LjIyNHpNODY0LjgyNCAyMjAuNzQ4Yy05LjM4MiAwLTE5LjUzMiA5Ljc0Mi0yNC43NDYgMTUuNTQ4LTEyLjYzIDE0LjA2NC0yNC43OTIgMzUuOTYtMzUuMTg4IDYzLjMyOC0yMy4yNTYgNjEuMjMyLTM2LjA2NiAxNDMuMzEtMzYuMDY2IDIzMS4xMjQgMCA4Ny44MSAxMi44MSAxNjkuODkgMzYuMDY2IDIzMS4xMjIgMTAuMzk0IDI3LjM2OCAyMi41NjIgNDkuMjY2IDM1LjE4OCA2My4zMjggNS4yMTQgNS44MTIgMTUuMzY0IDE1LjU1MiAyNC43NDYgMTUuNTUyIDkuMzggMCAxOS41MzYtOS43NDQgMjQuNzQ0LTE1LjU1MiAxMi42MzQtMTQuMDY0IDI0Ljc5Ni0zNS45NTggMzUuMTg4LTYzLjMyOCAyMy4yNTgtNjEuMjMgMzYuMDY4LTE0My4zMTIgMzYuMDY4LTIzMS4xMjIgMC04Ny44MDQtMTIuODEtMTY5Ljg4OC0zNi4wNjgtMjMxLjEyNC0xMC4zOS0yNy4zNjgtMjIuNTYyLTQ5LjI2NC0zNS4xODgtNjMuMzI4LTUuMjA4LTUuODA2LTE1LjM2LTE1LjU0OC0yNC43NDQtMTUuNTQ4ek0yNTEuODEyIDUzMC43NDRjMCA1MS45NSAzLjgxIDEwMi40MyAxMS4wNTIgMTQ5LjA5NC00Ny4zNzItNi41NTQtODguOTQyLTEwLjMyNC0xNDAuMzQtMTAuMzI0LTY3LjA1OCAwLTY3LjA1OCAwLTY3LjA1OCAwbC01NS40NjYtOTQuNjg2di04OC4xN2w1NS40Ni05NC42ODZjMCAwIDAgMCA2Ny4wNjAgMCA1MS4zOTggMCA5Mi45NjgtMy43NzQgMTQwLjM0LTEwLjMyNC03LjIzNiA0Ni42NjQtMTEuMDQ4IDk3LjE0Ni0xMS4wNDggMTQ5LjA5NnpNMzY4LjE1IDMxNy44MjhsLTEyNy45OTggMjQuNTEgODEuODQyLTMyMS41NDRjNC4yMzYtMTYuNjM0IDIwLjc0NC0yNS4wMzggMzYuNjg2LTE4LjY1NGwxMTguNTU2IDQ3LjQ1MmMxNS45NDQgNi4zNzYgMjIuMzI4IDIzLjk2NCAxNC4xOTYgMzkuMDg0bC0xMjMuMjgyIDIyOS4xNTJ6TTg2NC44MjQgNDExLjI3Yy0zLjYxOCAwLTcuNTI4IDMuNzU0LTkuNTM4IDUuOTkyLTQuODcgNS40Mi05LjU1NiAxMy44Ni0xMy41NjIgMjQuNDA4LTguOTYyIDIzLjYtMTMuOSA1NS4yMzQtMTMuOSA4OS4wNzhzNC45MzggNjUuNDc4IDEzLjkgODkuMDc4YzQuMDA2IDEwLjU0OCA4LjY5NiAxOC45ODggMTMuNTYyIDI0LjQwOCAyLjAxMCAyLjI0IDUuOTIgNS45OTQgOS41MzggNS45OTQgMy42MTYgMCA3LjUzLTMuNzU2IDkuNTM4LTUuOTk0IDQuODctNS40MiA5LjU1Ni0xMy44NTggMTMuNTYtMjQuNDA4IDguOTY0LTIzLjU5OCAxMy45MDItNTUuMjM0IDEzLjkwMi04OS4wNzggMC0zMy44NDItNC45MzgtNjUuNDc4LTEzLjkwMi04OS4wNzgtNC4wMDQtMTAuNTQ4LTguNjk2LTE4Ljk4OC0xMy41Ni0yNC40MDgtMi4wMDgtMi4yMzgtNS45Mi01Ljk5Mi05LjUzOC01Ljk5MnoiIC8+CjwvZm9udD48L2RlZnM+PC9zdmc+) format('svg'); font-weight: normal; font-style: normal; } @@ -61,7 +61,7 @@ [class^="plugicon-"]:before, [class*=" plugicon-"]:before { font-family: "pluginicons"; } - + .icon-volume:before { content: '\e800'; } .icon-plus:before { content: '\e801'; } .icon-edit:before { content: '\e802'; } @@ -85,6 +85,7 @@ /* Plugin Icons id-s (copy from generated icon style.css) */ .plugicon-database:before { content: "\e901"; } +.plugicon-notifies:before { content: "\e91a"; } html, body { margin: 0; diff --git a/tests/XX_clean.test.js b/tests/XX_clean.test.js new file mode 100644 index 000000000000..0698c14f82ae --- /dev/null +++ b/tests/XX_clean.test.js @@ -0,0 +1,39 @@ +'use strict'; + +var _ = require('lodash'); +var language = require('../lib/language')(); + +describe('Clean MONGO after tests', function ( ) { + this.timeout(10000); + var self = this; + + var api = require('../lib/api/'); + beforeEach(function (done) { + process.env.API_SECRET = 'this is my long pass phrase'; + self.env = require('../env')(); + self.env.settings.authDefaultRoles = 'readable'; + self.env.settings.enable = ['careportal', 'api']; + this.wares = require('../lib/middleware/')(self.env); + self.app = require('express')(); + self.app.enable('api'); + require('../lib/server/bootevent')(self.env, language).boot(function booted(ctx) { + self.ctx = ctx; + self.ctx.ddata = require('../lib/data/ddata')(); + self.app.use('/api', api(self.env, ctx)); + done(); + }); + }); + + it('wipe treatment data', function (done) { + self.ctx.treatments().remove({ }, function ( ) { + done(); + }); + }); + + it('wipe entries data', function (done) { + self.ctx.entries().remove({ }, function ( ) { + done(); + }); + }); + +}); diff --git a/tests/adminnotifies.test.js b/tests/adminnotifies.test.js new file mode 100644 index 000000000000..76b9eba11ef3 --- /dev/null +++ b/tests/adminnotifies.test.js @@ -0,0 +1,30 @@ + +'use strict'; + +const should = require('should'); + +const ctx = {}; + +ctx.bus = {}; +ctx.bus.on = function mockOn(channel, f) { }; + +const adminnotifies = require('../lib/adminnotifies')(ctx); + +describe('adminnotifies', function ( ) { + + it('should aggregate a message', function () { + + const notify = { + title: 'Foo' + , message: 'Bar' + }; + + adminnotifies.addNotify(notify); + adminnotifies.addNotify(notify); + + const notifies = adminnotifies.getNotifies(); + + notifies.length.should.equal(1); + }); + +}); \ No newline at end of file diff --git a/tests/admintools.test.js b/tests/admintools.test.js index b151381cf075..b8ed0e102ceb 100644 --- a/tests/admintools.test.js +++ b/tests/admintools.test.js @@ -70,7 +70,7 @@ describe('admintools', function ( ) { before(function (done) { benv.setup(function() { - benv.require(__dirname + '/../tmp/js/bundle.report.js'); + benv.require(__dirname + '/../tmp/js/bundle.app.js'); self.$ = $; diff --git a/tests/api.devicestatus.test.js b/tests/api.devicestatus.test.js index 34a0908610ed..8a796dc3683e 100644 --- a/tests/api.devicestatus.test.js +++ b/tests/api.devicestatus.test.js @@ -60,6 +60,7 @@ describe('Devicestatus API', function ( ) { .set('api-secret', self.env.api_secret || '') .expect(200) .expect(function (response) { + console.log(JSON.stringify(response.body[0])); response.body[0].xdripjs.state.should.equal(6); response.body[0].utcOffset.should.equal(0); }) diff --git a/tests/api.treatments.test.js b/tests/api.treatments.test.js index 2b1d3ee877d5..567ea1da2782 100644 --- a/tests/api.treatments.test.js +++ b/tests/api.treatments.test.js @@ -38,7 +38,7 @@ describe('Treatment API', function ( ) { request(self.app) .post('/api/treatments/') .set('api-secret', self.env.api_secret || '') - .send({eventType: 'Meal Bolus', created_at: now, carbs: '30', insulin: '2.00', preBolus: '15', glucose: 100, glucoseType: 'Finger', units: 'mg/dl'}) + .send({eventType: 'Meal Bolus', created_at: now, carbs: '30', insulin: '2.00', preBolus: '15', glucose: 100, glucoseType: 'Finger', units: 'mg/dl', notes: ''}) .expect(200) .end(function (err) { if (err) { @@ -50,10 +50,10 @@ describe('Treatment API', function ( ) { }); sorted.length.should.equal(2); sorted[0].glucose.should.equal(100); + sorted[0].notes.should.equal(''); should.not.exist(sorted[0].eventTime); sorted[0].insulin.should.equal(2); sorted[1].carbs.should.equal(30); - done(); }); } diff --git a/tests/api3.create.test.js b/tests/api3.create.test.js index d6e1406bec1a..0ab4f3d5b422 100644 --- a/tests/api3.create.test.js +++ b/tests/api3.create.test.js @@ -423,7 +423,6 @@ describe('API3 CREATE', function() { delete doc._id; // APIv1 updates input document, we must get rid of _id for the next round oldBody.should.containEql(doc); - const doc2 = Object.assign({}, doc, { eventType: 'Meal Bolus', insulin: 0.4, diff --git a/tests/careportal.test.js b/tests/careportal.test.js index d16ec95e4720..2051448efa2c 100644 --- a/tests/careportal.test.js +++ b/tests/careportal.test.js @@ -13,7 +13,7 @@ var nowData = { }; describe('client', function ( ) { - this.timeout(30000); // TODO: see why this test takes longer on Travis to complete + this.timeout(40000); // TODO: see why this test takes longer on Travis to complete var self = this; @@ -47,7 +47,6 @@ describe('client', function ( ) { next(true); }; - client.init(); client.dataUpdate(nowData, true); diff --git a/tests/pebble.test.js b/tests/pebble.test.js index e6e683f78a68..4b4a5c5a7443 100644 --- a/tests/pebble.test.js +++ b/tests/pebble.test.js @@ -86,6 +86,9 @@ ctx.ddata.devicestatus = [{uploader: {battery: 100}}]; var bootevent = require('../lib/server/bootevent'); describe('Pebble Endpoint', function ( ) { + + this.timeout(10000); + var pebble = require('../lib/server/pebble'); before(function (done) { var env = require('../env')( ); diff --git a/tests/reports.test.js b/tests/reports.test.js index 3029b32a9e24..f2332aa47d2a 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -220,8 +220,10 @@ describe('reports', function ( ) { window.alert = function mockAlert () { return true; }; - - window.setTimeout = function mockSetTimeout (call) { + + + window.setTimeout = function mockSetTimeout (call, timer) { + if (timer == 60000) return; call(); }; @@ -296,9 +298,10 @@ describe('reports', function ( ) { window.alert = function mockAlert () { return true; }; - - window.setTimeout = function mockSetTimeout (call) { - call(); + + window.setTimeout = function mockSetTimeout (call, timer) { + if (timer == 60000) return; + call(); }; client.init(function afterInit ( ) { diff --git a/tests/security.test.js b/tests/security.test.js index 1f182970019e..4dfc51baeb3f 100644 --- a/tests/security.test.js +++ b/tests/security.test.js @@ -64,7 +64,7 @@ describe('API_SECRET', function ( ) { process.env.API_SECRET = 'tooshort'; var env = require('../env')( ); should.not.exist(env.api_secret); - env.err.desc.should.startWith('API_SECRET should be at least'); + env.err[0].desc.should.startWith('API_SECRET should be at least'); }); function ping_status (app, fn) { diff --git a/translations/en/en.json b/translations/en/en.json index 89345ce03f42..ebf44b088166 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -655,6 +655,11 @@ ,"virtAsstDatabaseSize":"%1 MiB. That is %2% of available database space." ,"virtAsstTitleDatabaseSize":"Database file size" ,"Carbs/Food/Time":"Carbs/Food/Time" + ,"You have administration messages":"You have administration messages" + ,"Admin messages in queue":"Admin messages in queue" + ,"Queue empty":"Queue empty" + ,"There are no admin messages in queue":"There are no admin messages in queue" + ,"Please sign in using the API_SECRET to see your administration messages":"Please sign in using the API_SECRET to see your administration messages" ,"Reads enabled in default permissions":"Reads enabled in default permissions" ,"Data reads enabled": "Data reads enabled" ,"Data writes enabled": "Data writes enabled" @@ -685,4 +690,7 @@ ,"view without token":"view without token" ,"Remove stored token":"Remove stored token" ,"Weekly Distribution":"Weekly Distribution" + ,"Failed authentication":"Failed authentication" + ,"A device at IP number":"A device at IP number" + ,"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?":"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/views/index.html b/views/index.html index da32087af6ca..b9a0a564585d 100644 --- a/views/index.html +++ b/views/index.html @@ -302,6 +302,9 @@
+
+
+
diff --git a/views/partials/toolbar.ejs b/views/partials/toolbar.ejs index b98f2756c3d1..e81e06bb8fad 100644 --- a/views/partials/toolbar.ejs +++ b/views/partials/toolbar.ejs @@ -23,6 +23,7 @@ +
<% } %> From cfdbaa8bbd6969dc84c468ecc28734fdfcf76b52 Mon Sep 17 00:00:00 2001 From: Petr Ondrusek <34578008+PetrOndrusek@users.noreply.github.com> Date: Thu, 7 Jan 2021 21:58:23 +0100 Subject: [PATCH 004/129] APIv3: wrapping all results in JSON (#6703) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * APIv3: isolating documents from tests (not allowing clashes of calculated identifiers) * removing unused async keyword * fixing api v3 swagger and moving it to /api3-docs * APIv3: adding cachedCollection stub of cachedCollection storage implementation * APIv3: mongo cachedCollection storage implementation * APIv3: testing and debugging cache updates * APIv3: more testing on cache updates * APIv3: fixing bad async functions * APIv3: finishing cache invalidation tests * APIv3: wrapping VERSION result * APIv3: wrapping STATUS result * APIv3: wrapping DELETE result * APIv3: wrapping READ result + partially SEARCH and HISTORY * APIv3: wrapping CREATE result * APIv3: wrapping UPDATE + PATCH result * APIv3: wrapping LAST MODIFIED result * APIv3: updating swagger doc * APIv3: updating tutorial.md * APIv3: tuning tests * APIv3: merge dev Co-authored-by: Petr Ondrusek Co-authored-by: Petr Ondrůšek Co-authored-by: Sulka Haro --- lib/api3/const.json | 5 +- lib/api3/doc/formats.md | 53 +- lib/api3/doc/tutorial.md | 240 +++--- lib/api3/generic/create/insert.js | 11 +- lib/api3/generic/delete/operation.js | 12 +- lib/api3/generic/history/operation.js | 3 +- lib/api3/generic/patch/operation.js | 10 +- lib/api3/generic/read/operation.js | 6 +- lib/api3/generic/update/operation.js | 6 +- lib/api3/generic/update/replace.js | 13 +- lib/api3/index.js | 5 + lib/api3/shared/operationTools.js | 34 +- lib/api3/shared/renderer.js | 17 +- lib/api3/specific/lastModified.js | 4 +- lib/api3/specific/status.js | 2 +- lib/api3/specific/version.js | 2 +- lib/api3/swagger.json | 1043 ++++++++++++++++++++----- lib/api3/swagger.yaml | 294 +++++-- tests/api3.basic.test.js | 10 +- tests/api3.create.test.js | 73 +- tests/api3.delete.test.js | 2 +- tests/api3.generic.workflow.test.js | 76 +- tests/api3.patch.test.js | 13 +- tests/api3.read.test.js | 56 +- tests/api3.renderer.test.js | 14 +- tests/api3.search.test.js | 72 +- tests/api3.socket.test.js | 6 +- tests/api3.update.test.js | 28 +- 28 files changed, 1543 insertions(+), 567 deletions(-) diff --git a/lib/api3/const.json b/lib/api3/const.json index fd874a1175a1..e82104ddb532 100644 --- a/lib/api3/const.json +++ b/lib/api3/const.json @@ -1,5 +1,5 @@ { - "API3_VERSION": "3.0.0-alpha", + "API3_VERSION": "3.0.2-alpha", "API3_SECURITY_ENABLE": true, "API3_TIME_SKEW_TOLERANCE": 5, "API3_DEDUP_FALLBACK_ENABLED": true, @@ -41,6 +41,7 @@ "HTTP_401_MISSING_OR_BAD_TOKEN": "Missing or bad access token or JWT", "HTTP_403_MISSING_PERMISSION": "Missing permission {0}", "HTTP_403_NOT_USING_HTTPS": "Not using SSL/TLS", + "HTTP_404_BAD_OPERATION": "Bad operation or collection", "HTTP_406_UNSUPPORTED_FORMAT": "Unsupported output format requested", "HTTP_422_READONLY_MODIFICATION": "Trying to modify read-only document", "HTTP_500_INTERNAL_ERROR": "Internal Server Error", @@ -52,4 +53,4 @@ "MIN_TIMESTAMP": 946684800000, "MIN_UTC_OFFSET": -1440, "MAX_UTC_OFFSET": 1440 -} \ No newline at end of file +} diff --git a/lib/api3/doc/formats.md b/lib/api3/doc/formats.md index 5a01a802f3e6..a0c9f73b3fa9 100644 --- a/lib/api3/doc/formats.md +++ b/lib/api3/doc/formats.md @@ -18,31 +18,34 @@ The server replies with `406 Not Acceptable` HTTP status in case of not supporte Default content type is JSON, output can look like this: -``` -[ - { - "type":"sgv", - "sgv":"171", - "dateString":"2014-07-19T02:44:15.000-07:00", - "date":1405763055000, - "device":"dexcom", - "direction":"Flat", - "identifier":"5c5a2404e0196f4d3d9a718a", - "srvModified":1405763055000, - "srvCreated":1405763055000 - }, - { - "type":"sgv", - "sgv":"176", - "dateString":"2014-07-19T03:09:15.000-07:00", - "date":1405764555000, - "device":"dexcom", - "direction":"Flat", - "identifier":"5c5a2404e0196f4d3d9a7187", - "srvModified":1405764555000, - "srvCreated":1405764555000 - } -] +```json +{ + "status": 200, + "result": [ + { + "type": "sgv", + "sgv": "171", + "dateString": "2014-07-19T02:44:15.000-07:00", + "date": 1405763055000, + "device": "dexcom", + "direction": "Flat", + "identifier": "5c5a2404e0196f4d3d9a718a", + "srvModified": 1405763055000, + "srvCreated": 1405763055000 + }, + { + "type": "sgv", + "sgv": "176", + "dateString": "2014-07-19T03:09:15.000-07:00", + "date": 1405764555000, + "device": "dexcom", + "direction": "Flat", + "identifier": "5c5a2404e0196f4d3d9a7187", + "srvModified": 1405764555000, + "srvCreated": 1405764555000 + } + ] +} ``` ### XML diff --git a/lib/api3/doc/tutorial.md b/lib/api3/doc/tutorial.md index d69e95ef4a4c..73bc6c99f8d8 100644 --- a/lib/api3/doc/tutorial.md +++ b/lib/api3/doc/tutorial.md @@ -22,15 +22,18 @@ request('https://nsapiv3.herokuapp.com/api/v3/version', (error, response, body) => console.log(body)); ``` Sample result: -```javascript -{ - "version":"0.12.2", - "apiVersion":"3.0.0-alpha", - "srvDate":1564386001772, - "storage":{ - "storage":"mongodb", - "version":"3.6.12" - } +```json +{ + "status": 200, + "result": { + "version": "14.1.0", + "apiVersion": "3.0.2-alpha", + "srvDate": 1609402081548, + "storage": { + "storage": "mongodb", + "version": "4.2.11" + } + } } ``` @@ -50,22 +53,25 @@ request(`https://nsapiv3.herokuapp.com/api/v3/status?${auth}`, (error, response, body) => console.log(body)); ``` Sample result: -```javascript -{ - "version":"0.12.2", - "apiVersion":"3.0.0-alpha", - "srvDate":1564391740738, - "storage":{ - "storage":"mongodb", - "version":"3.6.12" - }, - "apiPermissions":{ - "devicestatus":"crud", - "entries":"crud", - "food":"crud", - "profile":"crud", - "settings":"crud", - "treatments":"crud" +```json +{ + "status": 200, + "result": { + "version": "14.1.0", + "apiVersion": "3.0.2-alpha", + "srvDate": 1609427571833, + "storage": { + "storage": "mongodb", + "version": "4.2.11" + }, + "apiPermissions": { + "devicestatus": "crud", + "entries": "crud", + "food": "crud", + "profile": "crud", + "settings": "crud", + "treatments": "crud" + } } } ``` @@ -86,24 +92,27 @@ request(`https://nsapiv3.herokuapp.com/api/v3/entries?${auth}&sort$desc=date&lim (error, response, body) => console.log(body)); ``` Sample result: -``` -[ - { - "dateString":"2019-07-30T02:24:50.434+0200", - "sgv":115, - "direction":"FortyFiveDown" - }, - { - "dateString":"2019-07-30T02:19:50.374+0200", - "sgv":121, - "direction":"FortyFiveDown" - }, - { - "dateString":"2019-07-30T02:14:50.450+0200", - "sgv":129, - "direction":"FortyFiveDown" - } -] +```json +{ + "status": 200, + "result": [ + { + "dateString": "2019-07-30T02:24:50.434+0200", + "sgv": 115, + "direction": "FortyFiveDown" + }, + { + "dateString": "2019-07-30T02:19:50.374+0200", + "sgv": 121, + "direction": "FortyFiveDown" + }, + { + "dateString": "2019-07-30T02:14:50.450+0200", + "sgv": 129, + "direction": "FortyFiveDown" + } + ] +} ``` @@ -129,11 +138,15 @@ request({ json: true, url: `https://nsapiv3.herokuapp.com/api/v3/treatments?${auth}` }, - (error, response, body) => console.log(response.headers.location)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -/api/v3/treatments/95e1a6e3-1146-5d6a-a3f1-41567cae0895 +```json +{ + "status": 201, + "identifier": "95e1a6e3-1146-5d6a-a3f1-41567cae0895", + "lastModified": 1564591511711 +} ``` @@ -152,19 +165,22 @@ request(`https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}`, (error, response, body) => console.log(body)); ``` Sample result: -``` -{ - "date":1564591511232, - "app":"AndroidAPS", - "device":"Samsung XCover 4-861536030196001", - "eventType":"Correction Bolus", - "insulin":0.3, - "identifier":"95e1a6e3-1146-5d6a-a3f1-41567cae0895", - "utcOffset":0, - "created_at":"2019-07-31T16:45:11.232Z", - "srvModified":1564591627732, - "srvCreated":1564591511711, - "subject":"test-admin" +```json +{ + "status": 200, + "result": { + "date": 1564591511232, + "app": "AndroidAPS", + "device": "Samsung XCover 4-861536030196001", + "eventType": "Correction Bolus", + "insulin": 0.3, + "identifier": "95e1a6e3-1146-5d6a-a3f1-41567cae0895", + "utcOffset": 0, + "created_at": "2019-07-31T16:45:11.232Z", + "srvModified": 1564591627732, + "srvCreated": 1564591511711, + "subject": "test-admin" + } } ``` @@ -183,14 +199,17 @@ request(`https://nsapiv3.herokuapp.com/api/v3/lastModified?${auth}`, (error, response, body) => console.log(body)); ``` Sample result: -```javascript +```json { - "srvDate":1564591783202, - "collections":{ - "devicestatus":1564591490074, - "entries":1564591486801, - "profile":1548524042744, - "treatments":1564591627732 + "status": 200, + "result": { + "srvDate": 1564591783202, + "collections": { + "devicestatus": 1564591490074, + "entries": 1564591486801, + "profile": 1548524042744, + "treatments": 1564591627732 + } } } ``` @@ -220,11 +239,13 @@ request({ json: true, url: `https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}` }, - (error, response, body) => console.log(response.statusCode)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -204 +```json +{ + "status": 200 +} ``` @@ -248,11 +269,13 @@ request({ json: true, url: `https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}` }, - (error, response, body) => console.log(response.statusCode)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -204 +```json +{ + "status": 200 +} ``` @@ -271,11 +294,13 @@ request({ method: 'delete', url: `https://nsapiv3.herokuapp.com/api/v3/treatments/${identifier}?${auth}` }, - (error, response, body) => console.log(response.statusCode)); + (error, response, body) => console.log(body)); ``` Sample result: -``` -204 +```json +{ + "status": 200 +} ``` @@ -294,36 +319,39 @@ request(`https://nsapiv3.herokuapp.com/api/v3/treatments/history/${lastModified} (error, response, body) => console.log(response.body)); ``` Sample result: -``` -[ - { - "date":1564521267421, - "app":"AndroidAPS", - "device":"Samsung XCover 4-861536030196001", - "eventType":"Correction Bolus", - "insulin":0.5, - "utcOffset":0, - "created_at":"2019-07-30T21:14:27.421Z", - "identifier":"95e1a6e3-1146-5d6a-a3f1-41567cae0895", - "srvModified":1564592440416, - "srvCreated":1564592334853, - "subject":"test-admin", - "modifiedBy":"test-admin", - "isValid":false - }, - { - "date":1564592545299, - "app":"AndroidAPS", - "device":"Samsung XCover 4-861536030196001", - "eventType":"Snack Bolus", - "carbs":10, - "identifier":"267c43c2-f629-5191-a542-4f410c69e486", - "utcOffset":0, - "created_at":"2019-07-31T17:02:25.299Z", - "srvModified":1564592545781, - "srvCreated":1564592545781, - "subject":"test-admin" - } -] +```json +{ + "status": 200, + "result": [ + { + "date": 1564521267421, + "app": "AndroidAPS", + "device": "Samsung XCover 4-861536030196001", + "eventType": "Correction Bolus", + "insulin": 0.5, + "utcOffset": 0, + "created_at": "2019-07-30T21:14:27.421Z", + "identifier": "95e1a6e3-1146-5d6a-a3f1-41567cae0895", + "srvModified": 1564592440416, + "srvCreated": 1564592334853, + "subject": "test-admin", + "modifiedBy": "test-admin", + "isValid": false + }, + { + "date": 1564592545299, + "app": "AndroidAPS", + "device": "Samsung XCover 4-861536030196001", + "eventType": "Snack Bolus", + "carbs": 10, + "identifier": "267c43c2-f629-5191-a542-4f410c69e486", + "utcOffset": 0, + "created_at": "2019-07-31T17:02:25.299Z", + "srvModified": 1564592545781, + "srvCreated": 1564592545781, + "subject": "test-admin" + } + ] +} ``` Notice the `"isValid":false` field marking the deletion of the document. diff --git a/lib/api3/generic/create/insert.js b/lib/api3/generic/create/insert.js index b643818569a2..56cb608cdf24 100644 --- a/lib/api3/generic/create/insert.js +++ b/lib/api3/generic/create/insert.js @@ -4,6 +4,7 @@ const apiConst = require('../../const.json') , security = require('../../security') , validate = require('./validate.js') , path = require('path') + , opTools = require('../../shared/operationTools') ; /** @@ -35,7 +36,13 @@ async function insert (opCtx, doc) { res.setHeader('Last-Modified', now.toUTCString()); res.setHeader('Location', path.posix.join(req.baseUrl, req.path, identifier)); - res.status(apiConst.HTTP.CREATED).send({ }); + + + const fields = { + identifier: identifier, + lastModified: now.getTime() + }; + opTools.sendJSON({ res, status: apiConst.HTTP.CREATED, fields: fields }); ctx.bus.emit('storage-socket-create', { colName: col.colName, doc }); col.autoPrune(); @@ -43,4 +50,4 @@ async function insert (opCtx, doc) { } -module.exports = insert; \ No newline at end of file +module.exports = insert; diff --git a/lib/api3/generic/delete/operation.js b/lib/api3/generic/delete/operation.js index 8f9463f3ef98..f5e8c3b5b278 100644 --- a/lib/api3/generic/delete/operation.js +++ b/lib/api3/generic/delete/operation.js @@ -36,7 +36,7 @@ async function validateDelete (opCtx) { throw new Error('empty result'); if (result.length === 0) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } else { const storageDoc = result[0]; @@ -62,13 +62,13 @@ async function deletePermanently (opCtx) { throw new Error('empty result'); if (!result.deleted) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } col.autoPrune(); ctx.bus.emit('storage-socket-delete', { colName: col.colName, identifier }); ctx.bus.emit('data-received'); - return res.status(apiConst.HTTP.NO_CONTENT).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.OK }); } @@ -89,13 +89,13 @@ async function markAsDeleted (opCtx) { throw new Error('empty result'); if (!result.updated) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } ctx.bus.emit('storage-socket-delete', { colName: col.colName, identifier }); col.autoPrune(); ctx.bus.emit('data-received'); - return res.status(apiConst.HTTP.NO_CONTENT).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.OK }); } @@ -119,4 +119,4 @@ function deleteOperation (ctx, env, app, col) { }; } -module.exports = deleteOperation; \ No newline at end of file +module.exports = deleteOperation; diff --git a/lib/api3/generic/history/operation.js b/lib/api3/generic/history/operation.js index fb3ed0184ec0..47bd41b20563 100644 --- a/lib/api3/generic/history/operation.js +++ b/lib/api3/generic/history/operation.js @@ -39,7 +39,8 @@ async function history (opCtx, fieldsProjector) { throw new Error('empty result'); if (result.length === 0) { - return res.status(apiConst.HTTP.NO_CONTENT).end(); + res.status(apiConst.HTTP.OK); + return renderer.render(res, result); } _.each(result, col.resolveDates); diff --git a/lib/api3/generic/patch/operation.js b/lib/api3/generic/patch/operation.js index d7bb5fc2b4db..1e5cd0f129b4 100644 --- a/lib/api3/generic/patch/operation.js +++ b/lib/api3/generic/patch/operation.js @@ -36,7 +36,7 @@ async function patch (opCtx) { const storageDoc = result[0]; if (storageDoc.isValid === false) { - return res.status(apiConst.HTTP.GONE).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.GONE); } const modifiedDate = col.resolveDates(storageDoc) @@ -44,13 +44,13 @@ async function patch (opCtx) { if (ifUnmodifiedSince && dateTools.floorSeconds(modifiedDate) > dateTools.floorSeconds(new Date(ifUnmodifiedSince))) { - return res.status(apiConst.HTTP.PRECONDITION_FAILED).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.PRECONDITION_FAILED); } await applyPatch(opCtx, identifier, doc, storageDoc); } else { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.NOT_FOUND); } } @@ -82,7 +82,7 @@ async function applyPatch (opCtx, identifier, doc, storageDoc) { throw new Error('matchedCount empty'); res.setHeader('Last-Modified', now.toUTCString()); - res.status(apiConst.HTTP.NO_CONTENT).send({ }); + opTools.sendJSONStatus(res, apiConst.HTTP.OK); const fieldsProjector = new FieldsProjector('_all'); const patchedDocs = await col.storage.findOne(identifier, fieldsProjector); @@ -115,4 +115,4 @@ function patchOperation (ctx, env, app, col) { }; } -module.exports = patchOperation; \ No newline at end of file +module.exports = patchOperation; diff --git a/lib/api3/generic/read/operation.js b/lib/api3/generic/read/operation.js index c2e65a4afcc6..3f4efb75dd9f 100644 --- a/lib/api3/generic/read/operation.js +++ b/lib/api3/generic/read/operation.js @@ -26,12 +26,12 @@ async function read (opCtx) { throw new Error('empty result'); if (result.length === 0) { - return res.status(apiConst.HTTP.NOT_FOUND).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.NOT_FOUND }); } const doc = result[0]; if (doc.isValid === false) { - return res.status(apiConst.HTTP.GONE).end(); + return opTools.sendJSON({ res, status: apiConst.HTTP.GONE }); } @@ -74,4 +74,4 @@ function readOperation (ctx, env, app, col) { }; } -module.exports = readOperation; \ No newline at end of file +module.exports = readOperation; diff --git a/lib/api3/generic/update/operation.js b/lib/api3/generic/update/operation.js index 3e517a32d111..5098ffa1773d 100644 --- a/lib/api3/generic/update/operation.js +++ b/lib/api3/generic/update/operation.js @@ -48,7 +48,7 @@ async function updateConditional (opCtx, doc, storageDoc) { const { col, req, res } = opCtx; if (storageDoc.isValid === false) { - return res.status(apiConst.HTTP.GONE).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.GONE); } const modifiedDate = col.resolveDates(storageDoc) @@ -56,7 +56,7 @@ async function updateConditional (opCtx, doc, storageDoc) { if (ifUnmodifiedSince && dateTools.floorSeconds(modifiedDate) > dateTools.floorSeconds(new Date(ifUnmodifiedSince))) { - return res.status(apiConst.HTTP.PRECONDITION_FAILED).end(); + return opTools.sendJSONStatus(res, apiConst.HTTP.PRECONDITION_FAILED); } await replace(opCtx, doc, storageDoc); @@ -83,4 +83,4 @@ function updateOperation (ctx, env, app, col) { }; } -module.exports = updateOperation; \ No newline at end of file +module.exports = updateOperation; diff --git a/lib/api3/generic/update/replace.js b/lib/api3/generic/update/replace.js index fdf803ed16f1..c0c76c4b6eb3 100644 --- a/lib/api3/generic/update/replace.js +++ b/lib/api3/generic/update/replace.js @@ -4,6 +4,7 @@ const apiConst = require('../../const.json') , security = require('../../security') , validate = require('./validate.js') , path = require('path') + , opTools = require('../../shared/operationTools') ; /** @@ -37,12 +38,20 @@ async function replace (opCtx, doc, storageDoc, options) { throw new Error('empty matchedCount'); res.setHeader('Last-Modified', now.toUTCString()); + const fields = { + lastModified: now.getTime() + } if (storageDoc.identifier !== doc.identifier || isDeduplication) { res.setHeader('Location', path.posix.join(req.baseUrl, req.path, doc.identifier)); + fields.identifier = doc.identifier; + fields.isDeduplication = true; + if (storageDoc.identifier !== doc.identifier) { + fields.deduplicatedIdentifier = storageDoc.identifier; + } } - res.status(apiConst.HTTP.NO_CONTENT).send({ }); + opTools.sendJSON({ res, status: apiConst.HTTP.OK, fields }); ctx.bus.emit('storage-socket-update', { colName: col.colName, doc }); col.autoPrune(); @@ -50,4 +59,4 @@ async function replace (opCtx, doc, storageDoc, options) { } -module.exports = replace; \ No newline at end of file +module.exports = replace; diff --git a/lib/api3/index.js b/lib/api3/index.js index bff0899536fd..e1cde9f2ae82 100644 --- a/lib/api3/index.js +++ b/lib/api3/index.js @@ -7,6 +7,7 @@ const express = require('express') , apiConst = require('./const.json') , security = require('./security') , genericSetup = require('./generic/setup') + , opTools = require('./shared/operationTools') ; function configure (env, ctx) { @@ -104,6 +105,10 @@ function configure (env, ctx) { res.redirect(307, '../../../api3-docs'); }); + app.use((req, res) => { + opTools.sendJSONStatus(res, apiConst.HTTP.NOT_FOUND, apiConst.MSG.HTTP_404_BAD_OPERATION); + }) + ctx.storageSocket = new StorageSocket(app, env, ctx); return app; diff --git a/lib/api3/shared/operationTools.js b/lib/api3/shared/operationTools.js index 1955b9c20687..6b2e62e12e78 100644 --- a/lib/api3/shared/operationTools.js +++ b/lib/api3/shared/operationTools.js @@ -6,18 +6,41 @@ const apiConst = require('../const.json') , uuidNamespace = [...Buffer.from("NightscoutRocks!", "ascii")] // official namespace for NS :-) ; + +function sendJSON ({ res, result, status, fields }) { + + const json = { + status: status || apiConst.HTTP.OK, + result: result + }; + + if (result) { + json.result = result + } + + if (fields) { + Object.assign(json, fields); + } + + res.status(json.status).json(json); +} + + function sendJSONStatus (res, status, title, description, warning) { const json = { - status: status, - message: title, - description: description + status: status }; + if (title) { json.message = title } + + if (description) { json.description = description } + // Add optional warning message. if (warning) { json.warning = warning; } - res.status(status).json(json); + res.status(status) + .json(json); return title; } @@ -104,8 +127,9 @@ function resolveIdentifier (doc) { module.exports = { + sendJSON, sendJSONStatus, validateCommon, calculateIdentifier, resolveIdentifier -}; \ No newline at end of file +}; diff --git a/lib/api3/shared/renderer.js b/lib/api3/shared/renderer.js index a3588819a72b..842785709b6d 100644 --- a/lib/api3/shared/renderer.js +++ b/lib/api3/shared/renderer.js @@ -53,7 +53,7 @@ function extension2accept (req, res, next) { */ function render (res, data) { res.format({ - 'json': () => res.send(data), + 'json': () => renderJson(res, data), 'csv': () => renderCsv(res, data), 'xml': () => renderXml(res, data), 'default': () => @@ -62,6 +62,19 @@ function render (res, data) { } +/** + * Format data to output as JSON + * @param {Object} res + * @param {any} data + */ +function renderJson (res, data) { + res.send({ + status: apiConst.HTTP.OK, + result: data + }); +} + + /** * Format data to output as .csv * @param {Object} res @@ -96,4 +109,4 @@ function renderXml (res, data) { module.exports = { extension2accept, render -}; \ No newline at end of file +}; diff --git a/lib/api3/specific/lastModified.js b/lib/api3/specific/lastModified.js index b27ecaca8523..f550d56f89c3 100644 --- a/lib/api3/specific/lastModified.js +++ b/lib/api3/specific/lastModified.js @@ -38,7 +38,7 @@ function configure (app, ctx, env) { return { colName: col.colName, lastModified: result }; } - + async function collectionsAsync (auth) { const cols = app.get('collections') @@ -77,7 +77,7 @@ function configure (app, ctx, env) { info.collections = await collectionsAsync(auth); - res.json(info); + opTools.sendJSON({ res, result: info }); } diff --git a/lib/api3/specific/status.js b/lib/api3/specific/status.js index 7b70b24ab718..5ec28929fbe5 100644 --- a/lib/api3/specific/status.js +++ b/lib/api3/specific/status.js @@ -47,7 +47,7 @@ function configure (app, ctx, env) { } } - res.json(info); + opTools.sendJSON({ res, result: info }); } diff --git a/lib/api3/specific/version.js b/lib/api3/specific/version.js index 25392fe99d7a..ba7685fe4868 100644 --- a/lib/api3/specific/version.js +++ b/lib/api3/specific/version.js @@ -13,7 +13,7 @@ function configure (app) { try { const versionInfo = await storageTools.getVersionInfo(app); - res.json(versionInfo); + opTools.sendJSON({ res, result: versionInfo }); } catch(error) { console.error(error); diff --git a/lib/api3/swagger.json b/lib/api3/swagger.json index b20bb0e67619..a380be3e0f53 100644 --- a/lib/api3/swagger.json +++ b/lib/api3/swagger.json @@ -11,7 +11,7 @@ "name": "AGPL 3", "url": "https://www.gnu.org/licenses/agpl.txt" }, - "version": "3.0.1" + "version": "3.0.2" }, "servers": [ { @@ -35,7 +35,7 @@ "generic" ], "summary": "SEARCH: Search documents from the collection", - "description": "General search operation through documents of one collection, matching the specified filtering criteria. You can apply:\n\n1) filtering - combining any number of filtering parameters\n\n2) ordering - using `sort` or `sort$desc` parameter\n\n3) paging - using `limit` and `skip` parameters\n\nWhen there is no document matching the filtering criteria, HTTP status 204 is returned with empty response content. Otherwise HTTP 200 code is returned with JSON array of matching documents as a response content.\n\nThis operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`).\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", + "description": "General search operation through documents of one collection, matching the specified filtering criteria. You can apply:\n\n1) filtering - combining any number of filtering parameters\n\n2) ordering - using `sort` or `sort$desc` parameter\n\n3) paging - using `limit` and `skip` parameters\n\nIf successful, HTTP 200 code is returned with JSON array of matching documents as a response content (it may be empty).\n\nThis operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`).\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", "operationId": "SEARCH", "parameters": [ { @@ -172,7 +172,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -187,28 +187,63 @@ } } }, - "204": { - "description": "Successful operation - no documents matching the filtering criteria" - }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -217,7 +252,7 @@ "generic" ], "summary": "CREATE: Inserts a new document into the collection", - "description": "Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified and with an empty response content. `identifier` can be parsed from the `Location` response header.\n\nWhen the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 204 HTTP status code along with `Last-Modified` and correct `Location` headers.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `create` (and/or `update` for deduplication) permission for the API and the collection (e.g. `api:treatments:create` and `api:treatments:update`)", + "description": "Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified. `identifier` is included in response body or it can be parsed from the `Location` response header.\n\nWhen the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 200 HTTP status code along with `Last-Modified` and correct `Location` headers. The response body then includes `isDeduplication`=`true` and `deduplicatedIdentifier` fields.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `create` (and/or `update` for deduplication) permission for the API and the collection (e.g. `api:treatments:create` and `api:treatments:update`)", "parameters": [ { "name": "collection", @@ -277,8 +312,8 @@ "required": true }, "responses": { - "201": { - "description": "Successfully created a new document in collection", + "200": { + "description": "Successfully updated a duplicate document in the collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -286,10 +321,17 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_1" + } + } } }, - "204": { - "description": "Successfully finished operation", + "201": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -297,27 +339,72 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } + } } }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -328,7 +415,7 @@ "generic" ], "summary": "READ: Retrieves a single document from the collection", - "description": "Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. With `If-Modified-Since` header and less or equal timestamp `srvModified` a normal 200 HTTP status with full response is returned.\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)", + "description": "Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned.\n\nWhen `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. With `If-Modified-Since` header and less or equal timestamp `srvModified` a normal 200 HTTP status with full response is returned.\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)", "parameters": [ { "name": "collection", @@ -431,7 +518,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/inline_response_200_2" } }, "text/csv": { @@ -455,24 +542,62 @@ } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } }, "410": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -481,7 +606,7 @@ "generic" ], "summary": "UPDATE: Updates a document in the collection", - "description": "Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 204 HTTP status code will be returned with empty response body.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter).\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` (and/or `create`) permission for the API and the collection (e.g. `api:treatments:update` and `api:treatments:create`)", + "description": "Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 200 HTTP status code will be returned.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter).\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` (and/or `create`) permission for the API and the collection (e.g. `api:treatments:update` and `api:treatments:create`)", "parameters": [ { "name": "collection", @@ -563,50 +688,108 @@ "required": true }, "responses": { - "201": { - "description": "Successfully created a new document in collection", - "headers": { - "Last-Modified": { - "$ref": "#/components/schemas/headerLastModified" + "200": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } } } }, - "204": { - "description": "Successfully finished operation", + "201": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" - }, - "Location": { - "$ref": "#/components/schemas/headerLocation" + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } } } }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "410": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } }, "412": { - "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_412" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -686,25 +869,63 @@ } ], "responses": { - "204": { - "description": "Successful operation - empty response" + "200": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] }, @@ -713,7 +934,7 @@ "generic" ], "summary": "PATCH: Partially updates document in the collection", - "description": "Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 204 HTTP status code will be returned with empty response body.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code.\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\n`PATCH` operation can save some bandwidth for incremental document updates in comparison with `GET` - `UPDATE` operation sequence.\n\nWhile patching the document, the field `modifiedBy` is automatically set to the authorized subject's name.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` permission for the API and the collection (e.g. `api:treatments:update`)", + "description": "Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 200 HTTP status code will be returned.\n\nIf the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned.\n\nWhen no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code.\n\nYou can also specify `If-Unmodified-Since` request header including your timestamp of document's last modification. If the document has been modified by somebody else on the server afterwards (and you do not know about it), the 412 HTTP status code is returned cancelling the update operation. You can use this feature to prevent race condition problems.\n\n`PATCH` operation can save some bandwidth for incremental document updates in comparison with `GET` - `UPDATE` operation sequence.\n\nWhile patching the document, the field `modifiedBy` is automatically set to the authorized subject's name.\n\nThis operation provides autopruning of the collection (if autopruning is enabled).\n\nThis operation requires `update` permission for the API and the collection (e.g. `api:treatments:update`)", "parameters": [ { "name": "collection", @@ -795,42 +1016,93 @@ "required": true }, "responses": { - "204": { - "description": "Successfully finished operation", - "headers": { - "Last-Modified": { - "$ref": "#/components/schemas/headerLastModified" - }, - "Location": { - "$ref": "#/components/schemas/headerLocation" + "200": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } } } }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "410": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } }, "412": { - "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_412" + } + } + } }, "422": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -841,7 +1113,7 @@ "generic" ], "summary": "HISTORY: Retrieves incremental changes since timestamp", - "description": "HISTORY operation is intended for continuous data synchronization with other systems.\nEvery insertion, update and deletion will be included in the resulting JSON array of documents (since timestamp in `Last-Modified` request header value). All changes are listed chronologically in response with 200 HTTP status code. The maximum listed `srvModified` timestamp is also stored in `Last-Modified` and `ETag` response headers that you can use for future, directly following synchronization. You can also limit the array's length using `limit` parameter.\n\nDeleted documents will appear with `isValid` = `false` field.\n\nWhen there is no change detected since the timestamp the operation ends with 204 HTTP status code and empty response content.\n\nHISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections).\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", + "description": "HISTORY operation is intended for continuous data synchronization with other systems.\nEvery insertion, update and deletion will be included in the resulting JSON array of documents (since timestamp in `Last-Modified` request header value). All changes are listed chronologically in response with 200 HTTP status code. The maximum listed `srvModified` timestamp is also stored in `Last-Modified` and `ETag` response headers that you can use for future, directly following synchronization. You can also limit the array's length using `limit` parameter.\n\nDeleted documents will appear with `isValid` = `false` field.\n\nHISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections).\n\nThis operation requires `read` permission for the API and the collection (e.g. `api:treatments:read`)\n\nThe only exception is the `settings` collection which requires `admin` permission (`api:settings:admin`), because the settings of each application should be isolated and kept secret. You need to know the concrete identifier to access the app's settings.", "operationId": "HISTORY", "parameters": [ { @@ -950,7 +1222,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -965,28 +1237,63 @@ } } }, - "204": { - "description": "No changes detected" - }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1107,7 +1414,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -1122,28 +1429,63 @@ } } }, - "204": { - "description": "No changes detected" - }, "400": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1188,15 +1530,32 @@ } }, "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1251,21 +1610,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LastModifiedResult" + "$ref": "#/components/schemas/inline_response_200_4" + } + } + } + }, + "401": { + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" } } } }, - "401": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." - }, "403": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } } }, "security": [ { - "apiKeyAuth": [] + "accessToken": [] + }, + { + "jwtoken": [] } ] } @@ -1305,6 +1681,32 @@ "type": "string", "example": "53409478-105f-11e9-ab14-d663bd873d93" }, + "identifierField": { + "type": "string", + "description": "Identifier of created or modified document", + "example": "53409478-105f-11e9-ab14-d663bd873d93" + }, + "lastModifiedField": { + "type": "integer", + "description": "Timestamp of the last document modification on the server, formatted as\nUnix epoch in milliseconds (1525383610088)", + "format": "int64", + "example": 1525383610088 + }, + "statusField": { + "type": "integer", + "description": "HTTP response status code. The status appears also in response body's field for those clients that are unable to process standard HTTP status code.", + "example": 200 + }, + "isDeduplicationField": { + "type": "boolean", + "description": "Flag whether the operation found a duplicate document (to update)", + "example": true + }, + "deduplicatedIdentifierField": { + "type": "string", + "description": "The original document that has been marked as a duplicate document and which has been updated", + "example": "abc09478-105f-11e9-ab14-d663bd873d93" + }, "DocumentBase": { "required": [ "app", @@ -1795,6 +2197,18 @@ ] }, "Version": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/statusField" + }, + "result": { + "$ref": "#/components/schemas/VersionResult" + } + }, + "description": "Information about versions" + }, + "VersionResult": { "type": "object", "properties": { "version": { @@ -1813,56 +2227,31 @@ "example": 1532936118000 }, "storage": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type of storage engine used", - "example": "mongodb" - }, - "version": { - "type": "string", - "description": "Version of the storage engine", - "example": "4.0.6" - } - } + "$ref": "#/components/schemas/VersionResult_storage" } - }, - "description": "Information about versions" + } }, "Status": { - "description": "Information about versions and API permissions", + "properties": { + "status": { + "$ref": "#/components/schemas/statusField" + }, + "result": { + "$ref": "#/components/schemas/StatusResult" + } + }, + "description": "Information about versions and API permissions" + }, + "StatusResult": { "allOf": [ { - "$ref": "#/components/schemas/Version" + "$ref": "#/components/schemas/VersionResult" }, { "type": "object", "properties": { "apiPermissions": { - "type": "object", - "properties": { - "devicestatus": { - "type": "string", - "example": "crud" - }, - "entries": { - "type": "string", - "example": "r" - }, - "food": { - "type": "string", - "example": "crud" - }, - "profile": { - "type": "string", - "example": "r" - }, - "treatments": { - "type": "string", - "example": "crud" - } - } + "$ref": "#/components/schemas/StatusResult_apiPermissions" } } } @@ -1877,50 +2266,231 @@ "example": 1556260878776 }, "collections": { - "type": "object", - "properties": { - "devicestatus": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1556260760974 - }, - "treatments": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1553374184169 - }, - "entries": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1556260758768 - }, - "profile": { - "type": "integer", - "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", - "format": "int64", - "example": 1548524042744 - } - }, - "description": "Collections which the user have read access to." + "$ref": "#/components/schemas/LastModifiedResult_collections" } }, "description": "Result of LAST MODIFIED operation" + }, + "inline_response_200": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "result": { + "$ref": "#/components/schemas/DocumentArray" + } + } + }, + "inline_response_400": { + "properties": { + "status": { + "type": "integer", + "example": 400 + } + } + }, + "inline_response_401": { + "properties": { + "status": { + "type": "integer", + "example": 401 + } + } + }, + "inline_response_403": { + "properties": { + "status": { + "type": "integer", + "example": 403 + } + } + }, + "inline_response_404": { + "properties": { + "status": { + "type": "integer", + "example": 404 + } + } + }, + "inline_response_406": { + "properties": { + "status": { + "type": "integer", + "example": 406 + } + } + }, + "inline_response_200_1": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "identifier": { + "$ref": "#/components/schemas/identifierField" + }, + "isDeduplication": { + "$ref": "#/components/schemas/isDeduplicationField" + }, + "deduplicatedIdentifier": { + "$ref": "#/components/schemas/deduplicatedIdentifierField" + } + } + }, + "inline_response_201": { + "properties": { + "status": { + "type": "integer", + "example": 201 + }, + "identifier": { + "$ref": "#/components/schemas/identifierField" + }, + "lastModified": { + "$ref": "#/components/schemas/lastModifiedField" + } + } + }, + "inline_response_422": { + "properties": { + "status": { + "type": "integer", + "example": 422 + } + } + }, + "inline_response_200_2": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "result": { + "$ref": "#/components/schemas/Document" + } + } + }, + "inline_response_410": { + "properties": { + "status": { + "type": "integer", + "example": 410 + } + } + }, + "inline_response_200_3": { + "properties": { + "status": { + "type": "integer", + "example": 200 + } + } + }, + "inline_response_412": { + "properties": { + "status": { + "type": "integer", + "example": 412 + } + } + }, + "inline_response_200_4": { + "properties": { + "status": { + "type": "integer", + "example": 200 + }, + "result": { + "$ref": "#/components/schemas/LastModifiedResult" + } + } + }, + "VersionResult_storage": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of storage engine used", + "example": "mongodb" + }, + "version": { + "type": "string", + "description": "Version of the storage engine", + "example": "4.0.6" + } + } + }, + "StatusResult_apiPermissions": { + "type": "object", + "properties": { + "devicestatus": { + "type": "string", + "example": "crud" + }, + "entries": { + "type": "string", + "example": "r" + }, + "food": { + "type": "string", + "example": "crud" + }, + "profile": { + "type": "string", + "example": "r" + }, + "treatments": { + "type": "string", + "example": "crud" + } + } + }, + "LastModifiedResult_collections": { + "type": "object", + "properties": { + "devicestatus": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1556260760974 + }, + "treatments": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1553374184169 + }, + "entries": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1556260758768 + }, + "profile": { + "type": "integer", + "description": "Timestamp of the last modification (Unix epoch in ms), `null` when there is no timestamp found.", + "format": "int64", + "example": 1548524042744 + } + }, + "description": "Collections which the user have read access to." } }, "responses": { - "201Created": { - "description": "Successfully created a new document in collection", - "headers": { - "Last-Modified": { - "$ref": "#/components/schemas/headerLastModified" + "200Ok": { + "description": "The request was successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_3" + } } } }, - "201CreatedLocation": { - "description": "Successfully created a new document in collection", + "200Deduplication": { + "description": "Successfully updated a duplicate document in the collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -1928,18 +2498,32 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_200_1" + } + } } }, - "204NoContent": { - "description": "Successfully finished operation", + "201Created": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } + } } }, - "204NoContentLocation": { - "description": "Successfully finished operation", + "201CreatedLocation": { + "description": "Successfully created a new document in collection", "headers": { "Last-Modified": { "$ref": "#/components/schemas/headerLastModified" @@ -1947,6 +2531,13 @@ "Location": { "$ref": "#/components/schemas/headerLocation" } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_201" + } + } } }, "304NotModified": { @@ -1958,35 +2549,91 @@ } }, "400BadRequest": { - "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present." + "description": "The request is malformed. There may be some required parameters missing or there are unrecognized parameters present.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_400" + } + } + } }, "401Unauthorized": { - "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy." + "description": "The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_401" + } + } + } }, "403Forbidden": { - "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation." + "description": "Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_403" + } + } + } }, "404NotFound": { - "description": "The collection or document specified was not found." + "description": "The collection or document specified was not found.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_404" + } + } + } }, "406NotAcceptable": { - "description": "The requested content type (in `Accept` header) is not supported." + "description": "The requested content type (in `Accept` header) is not supported.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_406" + } + } + } }, "412PreconditionFailed": { - "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header)." + "description": "The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_412" + } + } + } }, "410Gone": { - "description": "The requested document has already been deleted." + "description": "The requested document has already been deleted.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_410" + } + } + } }, "422UnprocessableEntity": { - "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`)." + "description": "The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/inline_response_422" + } + } + } }, "search200": { "description": "Successful operation returning array of documents matching the filtering criteria", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -2001,9 +2648,6 @@ } } }, - "search204": { - "description": "Successful operation - no documents matching the filtering criteria" - }, "read200": { "description": "The document has been succesfully found and its JSON form returned in the response content.", "headers": { @@ -2014,7 +2658,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/inline_response_200_2" } }, "text/csv": { @@ -2042,7 +2686,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DocumentArray" + "$ref": "#/components/schemas/inline_response_200" } }, "text/csv": { @@ -2057,15 +2701,12 @@ } } }, - "history204": { - "description": "No changes detected" - }, "lastModified200": { "description": "Successful operation returning the timestamps", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LastModifiedResult" + "$ref": "#/components/schemas/inline_response_200_4" } } } diff --git a/lib/api3/swagger.yaml b/lib/api3/swagger.yaml index 5cbb2a055442..56175263924b 100644 --- a/lib/api3/swagger.yaml +++ b/lib/api3/swagger.yaml @@ -2,7 +2,7 @@ openapi: 3.0.0 servers: - url: '/api/v3' info: - version: "3.0.1" + version: "3.0.2" title: Nightscout API contact: name: NS development discussion channel @@ -102,7 +102,7 @@ paths: 3) paging - using `limit` and `skip` parameters - When there is no document matching the filtering criteria, HTTP status 204 is returned with empty response content. Otherwise HTTP 200 code is returned with JSON array of matching documents as a response content. + If successful, HTTP 200 code is returned with JSON array of matching documents as a response content (it may be empty). This operation requires `read` permission for the API and the collection (e.g. `*:*:read`, `api:*:read`, `*:treatments:read`, `api:treatments:read`). @@ -120,13 +120,12 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: $ref: '#/components/responses/search200' - 204: - $ref: '#/components/responses/search204' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -145,10 +144,11 @@ paths: - generic summary: 'CREATE: Inserts a new document into the collection' description: - Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified and with an empty response content. `identifier` can be parsed from the `Location` response header. + Using this operation you can insert new documents into collection. Normally the operation ends with 201 HTTP status code, `Last-Modified` and `Location` headers specified. + `identifier` is included in response body or it can be parsed from the `Location` response header. - When the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 204 HTTP status code along with `Last-Modified` and correct `Location` headers. + When the document to post is marked as a duplicate (using rules described at `API3_DEDUP_FALLBACK_ENABLED` switch), the update operation takes place instead of inserting. In this case the original document in the collection is found and it gets updated by the actual operation POST body. Finally the operation ends with 200 HTTP status code along with `Last-Modified` and correct `Location` headers. The response body then includes `isDeduplication`=`true` and `deduplicatedIdentifier` fields. This operation provides autopruning of the collection (if autopruning is enabled). @@ -165,13 +165,14 @@ paths: $ref: '#/components/schemas/DocumentToPost' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: + 200: + $ref: '#/components/responses/200Deduplication' 201: $ref: '#/components/responses/201CreatedLocation' - 204: - $ref: '#/components/responses/204NoContentLocation' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -215,7 +216,7 @@ paths: Basically this operation looks for a document matching the `identifier` field returning 200 or 404 HTTP status code. - If the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned. + If the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned. When `If-Modified-Since` header is used and its value is greater than the timestamp of the document in the collection, 304 HTTP status code with empty response content is returned. It means that the document has not been modified on server since the last retrieval to client side. @@ -229,7 +230,8 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: @@ -254,10 +256,10 @@ paths: - generic summary: 'UPDATE: Updates a document in the collection' description: - Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 204 HTTP status code will be returned with empty response body. + Normally the document with the matching `identifier` will be replaced in the collection by the whole JSON request body and 200 HTTP status code will be returned. - If the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned. + If the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned. When no document with `identifier` has been found in the collection, then an insert operation takes place instead of updating. Finally 201 HTTP status code is returned with only `Last-Modified` header (`identifier` is already known from the path parameter). @@ -283,13 +285,14 @@ paths: $ref: '#/components/schemas/DocumentToPost' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: + 200: + $ref: '#/components/responses/200Ok' 201: $ref: '#/components/responses/201Created' - 204: - $ref: '#/components/responses/204NoContentLocation' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -312,10 +315,10 @@ paths: - generic summary: 'PATCH: Partially updates document in the collection' description: - Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 204 HTTP status code will be returned with empty response body. + Normally the document with the matching `identifier` will be retrieved from the collection and it will be patched by all specified fields from the JSON request body. Finally 200 HTTP status code will be returned. - If the document has been found in the collection but it had already been deleted, 410 HTTP status code with empty response content is to be returned. + If the document has been found in the collection but it had already been deleted, 410 HTTP status code is to be returned. When no document with `identifier` has been found in the collection, then the operation ends with 404 HTTP status code. @@ -347,11 +350,12 @@ paths: $ref: '#/components/schemas/DocumentToPost' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: - 204: - $ref: '#/components/responses/204NoContentLocation' + 200: + $ref: '#/components/responses/200Ok' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -360,10 +364,10 @@ paths: $ref: '#/components/responses/403Forbidden' 404: $ref: '#/components/responses/404NotFound' - 412: - $ref: '#/components/responses/412PreconditionFailed' 410: $ref: '#/components/responses/410Gone' + 412: + $ref: '#/components/responses/412PreconditionFailed' 422: $ref: '#/components/responses/422UnprocessableEntity' @@ -387,11 +391,12 @@ paths: - $ref: '#/components/parameters/permanentParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: - 204: - description: Successful operation - empty response + 200: + $ref: '#/components/responses/200Ok' 401: $ref: '#/components/responses/401Unauthorized' 403: @@ -430,9 +435,6 @@ paths: Deleted documents will appear with `isValid` = `false` field. - When there is no change detected since the timestamp the operation ends with 204 HTTP status code and empty response content. - - HISTORY operation has a fallback mechanism in place for documents, which were not created by API v3. For such documents `srvModified` is virtually assigned from the `date` field (for `entries` collection) or from the `created_at` field (for other collections). @@ -448,13 +450,12 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: $ref: '#/components/responses/history200' - 204: - $ref: '#/components/responses/history204' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -509,13 +510,12 @@ paths: - $ref: '#/components/parameters/fieldsParam' security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: $ref: '#/components/responses/history200' - 204: - $ref: '#/components/responses/history204' 400: $ref: '#/components/responses/400BadRequest' 401: @@ -556,7 +556,8 @@ paths: This operation requires authorization in contrast with VERSION operation. security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: @@ -591,7 +592,8 @@ paths: This operation requires `read` permission for the API and the collections (e.g. `api:treatments:read`). For each collection the permission is checked separately, you will get timestamps only for those collections that you have access to. security: - - apiKeyAuth: [] + - accessToken: [] + - jwtoken: [] responses: 200: @@ -850,33 +852,73 @@ components: ###################################################################################### responses: - 201Created: - description: Successfully created a new document in collection - headers: - 'Last-Modified': - $ref: '#/components/schemas/headerLastModified' + 200Ok: + description: The request was successfully processed + content: + application/json: + schema: + properties: + status: + type: integer + example: 200 - 201CreatedLocation: - description: Successfully created a new document in collection + 200Deduplication: + description: Successfully updated a duplicate document in the collection headers: 'Last-Modified': $ref: '#/components/schemas/headerLastModified' 'Location': $ref: '#/components/schemas/headerLocation' + content: + application/json: + schema: + properties: + status: + type: integer + example: 200 + identifier: + $ref: '#/components/schemas/identifierField' + isDeduplication: + $ref: '#/components/schemas/isDeduplicationField' + deduplicatedIdentifier: + $ref: '#/components/schemas/deduplicatedIdentifierField' + - 204NoContent: - description: Successfully finished operation + 201Created: + description: Successfully created a new document in collection headers: 'Last-Modified': $ref: '#/components/schemas/headerLastModified' + content: + application/json: + schema: + properties: + status: + type: integer + example: 201 + identifier: + $ref: '#/components/schemas/identifierField' + lastModified: + $ref: '#/components/schemas/lastModifiedField' - 204NoContentLocation: - description: Successfully finished operation + 201CreatedLocation: + description: Successfully created a new document in collection headers: 'Last-Modified': $ref: '#/components/schemas/headerLastModified' 'Location': $ref: '#/components/schemas/headerLocation' + content: + application/json: + schema: + properties: + status: + type: integer + example: 201 + identifier: + $ref: '#/components/schemas/identifierField' + lastModified: + $ref: '#/components/schemas/lastModifiedField' 304NotModified: description: The document has not been modified on the server since timestamp specified in If-Modified-Since header @@ -886,34 +928,95 @@ components: 400BadRequest: description: The request is malformed. There may be some required parameters missing or there are unrecognized parameters present. + content: + application/json: + schema: + properties: + status: + type: integer + example: 400 401Unauthorized: description: The request was not successfully authenticated using access token or JWT, or the request has missing `Date` header or it contains an expired timestamp, so that the request cannot continue due to the security policy. + content: + application/json: + schema: + properties: + status: + type: integer + example: 401 403Forbidden: description: Insecure HTTP scheme used or the request has been successfully authenticated, but the security subject is not authorized for the operation. + content: + application/json: + schema: + properties: + status: + type: integer + example: 403 404NotFound: description: The collection or document specified was not found. + content: + application/json: + schema: + properties: + status: + type: integer + example: 404 406NotAcceptable: description: The requested content type (in `Accept` header) is not supported. + content: + application/json: + schema: + properties: + status: + type: integer + example: 406 412PreconditionFailed: description: The document has already been modified on the server since specified timestamp (in If-Unmodified-Since header). + content: + application/json: + schema: + properties: + status: + type: integer + example: 412 410Gone: description: The requested document has already been deleted. + content: + application/json: + schema: + properties: + status: + type: integer + example: 410 422UnprocessableEntity: description: The client request is well formed but a server validation error occured. Eg. when trying to modify or delete a read-only document (having `isReadOnly=true`). + content: + application/json: + schema: + properties: + status: + type: integer + example: 422 search200: description: Successful operation returning array of documents matching the filtering criteria content: application/json: schema: - $ref: '#/components/schemas/DocumentArray' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/DocumentArray' text/csv: schema: $ref: '#/components/schemas/DocumentArray' @@ -921,15 +1024,17 @@ components: schema: $ref: '#/components/schemas/DocumentArray' - search204: - description: Successful operation - no documents matching the filtering criteria - read200: description: The document has been succesfully found and its JSON form returned in the response content. content: application/json: schema: - $ref: '#/components/schemas/Document' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/Document' text/csv: schema: $ref: '#/components/schemas/Document' @@ -946,7 +1051,12 @@ components: content: application/json: schema: - $ref: '#/components/schemas/DocumentArray' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/DocumentArray' text/csv: schema: $ref: '#/components/schemas/DocumentArray' @@ -959,15 +1069,18 @@ components: 'ETag': $ref: '#/components/schemas/headerEtagLastModifiedMaximum' - history204: - description: No changes detected - lastModified200: description: Successful operation returning the timestamps content: application/json: schema: - $ref: '#/components/schemas/LastModifiedResult' + properties: + status: + type: integer + example: 200 + result: + $ref: '#/components/schemas/LastModifiedResult' + ###################################################################################### schemas: @@ -1025,6 +1138,44 @@ components: example: '53409478-105f-11e9-ab14-d663bd873d93' + identifierField: + description: + Identifier of created or modified document + type: string + example: '53409478-105f-11e9-ab14-d663bd873d93' + + + lastModifiedField: + type: integer + format: int64 + description: + Timestamp of the last document modification on the server, formatted as + + Unix epoch in milliseconds (1525383610088) + example: 1525383610088 + + statusField: + type: integer + description: + HTTP response status code. The status appears also in response body's field for those clients + that are unable to process standard HTTP status code. + example: 200 + + + isDeduplicationField: + type: boolean + description: + Flag whether the operation found a duplicate document (to update) + example: true + + + deduplicatedIdentifierField: + type: string + description: + The original document that has been marked as a duplicate document and which has been updated + example: 'abc09478-105f-11e9-ab14-d663bd873d93' + + DocumentBase: description: Shared base for all documents properties: @@ -1527,6 +1678,17 @@ components: Version: description: Information about versions + type: object + properties: + + status: + $ref: '#/components/schemas/statusField' + + result: + $ref: '#/components/schemas/VersionResult' + + + VersionResult: type: object properties: @@ -1562,8 +1724,17 @@ components: Status: description: Information about versions and API permissions + properties: + status: + $ref: '#/components/schemas/statusField' + + result: + $ref: '#/components/schemas/StatusResult' + + + StatusResult: allOf: - - $ref: '#/components/schemas/Version' + - $ref: '#/components/schemas/VersionResult' - type: object properties: @@ -1586,7 +1757,6 @@ components: type: string example: 'crud' - LastModifiedResult: description: Result of LAST MODIFIED operation properties: @@ -1644,4 +1814,4 @@ components: type: http scheme: bearer description: Use this if you know the temporary json webtoken. - bearerFormat: JWT \ No newline at end of file + bearerFormat: JWT diff --git a/tests/api3.basic.test.js b/tests/api3.basic.test.js index d13b86285622..28f4c667ee1f 100644 --- a/tests/api3.basic.test.js +++ b/tests/api3.basic.test.js @@ -29,11 +29,13 @@ describe('Basic REST API3', function() { .expect(200); const apiConst = require('../lib/api3/const.json') - , software = require('../package.json'); + , software = require('../package.json') + , result = res.body.result; - res.body.version.should.equal(software.version); - res.body.apiVersion.should.equal(apiConst.API3_VERSION); - res.body.srvDate.should.be.within(testConst.YEAR_2019, testConst.YEAR_2050); + res.body.status.should.equal(200); + result.version.should.equal(software.version); + result.apiVersion.should.equal(apiConst.API3_VERSION); + result.srvDate.should.be.within(testConst.YEAR_2019, testConst.YEAR_2050); }); }); diff --git a/tests/api3.create.test.js b/tests/api3.create.test.js index 0ab4f3d5b422..5d155f4ecc1e 100644 --- a/tests/api3.create.test.js +++ b/tests/api3.create.test.js @@ -29,8 +29,10 @@ describe('API3 CREATE', function() { * Cleanup after successful creation */ self.delete = async function deletePermanent (identifier) { - await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + let res = await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) + .expect(200); + + res.body.status.should.equal(200); }; @@ -41,7 +43,8 @@ describe('API3 CREATE', function() { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -52,7 +55,8 @@ describe('API3 CREATE', function() { let res = await self.instance.get(`${self.url}?date$eq=${date}&token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -103,7 +107,8 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); + should.not.exist(res.body.result); }); @@ -118,9 +123,11 @@ describe('API3 CREATE', function() { it('should reject empty body', async () => { - await self.instance.post(self.urlToken) + let res = await self.instance.post(self.urlToken) .send({ }) .expect(400); + + res.body.status.should.equal(400); }); @@ -129,12 +136,15 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(self.validDoc.identifier); res.headers.location.should.equal(`${self.url}/${self.validDoc.identifier}`); + const lastModifiedBody = res.body.lastModified; const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds let body = await self.get(self.validDoc.identifier); body.should.containEql(self.validDoc); + body.srvModified.should.equal(lastModifiedBody); self.cache.nextShouldEql(self.col, self.validDoc) const ms = body.srvModified % 1000; @@ -331,7 +341,7 @@ describe('API3 CREATE', function() { }); - it('should deduplicate document by identifier', async () => { + it('should upsert document (matched by identifier)', async () => { self.validDoc.date = (new Date()).getTime(); self.validDoc.identifier = utils.randomString('32', 'aA#'); @@ -349,9 +359,11 @@ describe('API3 CREATE', function() { insulin: 0.5 }); - await self.instance.post(`${self.url}?token=${self.token.all}`) + let resPost2 = await self.instance.post(`${self.url}?token=${self.token.all}`) .send(doc2) - .expect(204); + .expect(200); + + resPost2.body.status.should.equal(200); let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); @@ -387,9 +399,15 @@ describe('API3 CREATE', function() { }); delete doc2._id; // APIv1 updates input document, we must get rid of _id for the next round - await self.instance.post(`${self.url}?token=${self.token.all}`) + const resPost2 = await self.instance.post(`${self.url}?token=${self.token.all}`) .send(doc2) - .expect(204); + .expect(200); + + resPost2.body.status.should.equal(200); + resPost2.body.identifier.should.equal(doc2.identifier); + resPost2.body.isDeduplication.should.equal(true); + // doc (first document) was created "the old way" without identifier, so _id becomes the identifier for doc + resPost2.body.deduplicatedIdentifier.should.equal(doc._id); let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); @@ -436,6 +454,8 @@ describe('API3 CREATE', function() { let updatedBody = await self.get(doc2.identifier); updatedBody.should.containEql(doc2); updatedBody.identifier.should.not.equal(oldBody.identifier); + should.not.exist(updatedBody.isDeduplication); + should.not.exist(updatedBody.deduplicatedIdentifier); self.cache.nextShouldEql(self.col, doc2) await self.delete(doc2.identifier); @@ -456,25 +476,27 @@ describe('API3 CREATE', function() { .expect(201); self.cache.nextShouldEql(self.col, Object.assign({}, doc, { date: date1.getTime() })); - await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) - .expect(204); + let res = await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) + .expect(200); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) const date2 = new Date(); - let res = await self.instance.post(self.urlToken) + res = await self.instance.post(self.urlToken) .send(Object.assign({}, self.validDoc, { identifier, date: date2.toISOString() })) .expect(403); - res.body.status.should.be.equal(403); - res.body.message.should.be.equal('Missing permission api:treatments:update'); + res.body.status.should.equal(403); + res.body.message.should.equal('Missing permission api:treatments:update'); self.cache.shouldBeEmpty() const doc2 = Object.assign({}, self.validDoc, { identifier, date: date2.toISOString() }); res = await self.instance.post(`${self.url}?token=${self.token.all}`) .send(doc2) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); + res.body.identifier.should.equal(identifier); self.cache.nextShouldEql(self.col, Object.assign({}, doc2, { date: date2.getTime() })); let body = await self.get(identifier); @@ -495,7 +517,8 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(validIdentifier); res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; @@ -517,7 +540,8 @@ describe('API3 CREATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(validIdentifier); res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; @@ -528,9 +552,12 @@ describe('API3 CREATE', function() { delete self.validDoc.identifier; res = await self.instance.post(`${self.url}?token=${self.token.update}`) .send(self.validDoc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); + res.body.identifier.should.equal(validIdentifier); + res.body.isDeduplication.should.equal(true); + should.not.exist(res.body.deduplicatedIdentifier); // no identifier change occured res.headers.location.should.equal(`${self.url}/${validIdentifier}`); self.validDoc.identifier = validIdentifier; self.cache.nextShouldEql(self.col, self.validDoc); diff --git a/tests/api3.delete.test.js b/tests/api3.delete.test.js index 5ca87a0d57be..fb15754ed9d5 100644 --- a/tests/api3.delete.test.js +++ b/tests/api3.delete.test.js @@ -57,7 +57,7 @@ describe('API3 UPDATE', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); }); }); diff --git a/tests/api3.generic.workflow.test.js b/tests/api3.generic.workflow.test.js index 49bd7664d30b..a4888505fe8f 100644 --- a/tests/api3.generic.workflow.test.js +++ b/tests/api3.generic.workflow.test.js @@ -65,8 +65,9 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlHistory}/${self.historyTimestamp}?token=${self.token.read}`) .expect(200); - res.body.length.should.be.above(0); - res.body.should.matchAny(value => { + res.body.status.should.equal(200); + res.body.result.length.should.be.above(0); + res.body.result.should.matchAny(value => { value.identifier.should.be.eql(self.identifier); value.srvModified.should.be.above(self.historyTimestamp); @@ -83,9 +84,10 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlLastModified}?token=${self.token.read}`) .expect(200); - self.historyTimestamp = res.body.collections.treatments; + res.body.status.should.equal(200); + self.historyTimestamp = res.body.result.collections.treatments; if (!self.historyTimestamp) { - self.historyTimestamp = res.body.srvDate - (10 * 60 * 1000); + self.historyTimestamp = res.body.result.srvDate - (10 * 60 * 1000); } self.historyTimestamp.should.be.aboveOrEqual(testConst.YEAR_2019); }); @@ -95,7 +97,8 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`/api/v3/status?token=${self.token.read}`) .expect(200); - self.historyTimestamp = res.body.srvDate; + res.body.status.should.equal(200); + self.historyTimestamp = res.body.result.srvDate; self.historyTimestamp.should.be.aboveOrEqual(testConst.YEAR_2019); }); @@ -111,7 +114,8 @@ describe('Generic REST API3', function() { .query({ 'identifier_eq': self.identifier }) .expect(200); - res.body.should.have.length(0); + res.body.status.should.equal(200); + res.body.result.should.have.length(0); }); @@ -134,8 +138,9 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(self.docOriginal); - self.docActual = res.body; + res.body.status.should.equal(200); + res.body.result.should.containEql(self.docOriginal); + self.docActual = res.body.result; if (self.historyTimestamp >= self.docActual.srvModified) { self.historyTimestamp = self.docActual.srvModified - 1; @@ -148,8 +153,9 @@ describe('Generic REST API3', function() { .query({ 'identifier$eq': self.identifier }) .expect(200); - res.body.length.should.be.above(0); - res.body.should.matchAny(value => { + res.body.status.should.equal(200); + res.body.result.length.should.be.above(0); + res.body.result.should.matchAny(value => { value.identifier.should.be.eql(self.identifier); }); }); @@ -163,10 +169,11 @@ describe('Generic REST API3', function() { it('UPDATE document', async () => { self.docActual.insulin = 0.5; - await self.instance.put(`${self.urlResource}?token=${self.token.update}`) + let res = await self.instance.put(`${self.urlResource}?token=${self.token.update}`) .send(self.docActual) - .expect(204); + .expect(200); + res.body.status.should.equal(200); self.docActual.subject = self.subject.apiUpdate.name; delete self.docActual.srvModified; @@ -183,9 +190,10 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); delete self.docActual.srvModified; - res.body.should.containEql(self.docActual); - self.docActual = res.body; + res.body.result.should.containEql(self.docActual); + self.docActual = res.body.result; }); @@ -193,10 +201,11 @@ describe('Generic REST API3', function() { self.docActual.carbs = 5; self.docActual.insulin = 0.4; - await self.instance.patch(`${self.urlResource}?token=${self.token.update}`) + let res = await self.instance.patch(`${self.urlResource}?token=${self.token.update}`) .send({ 'carbs': self.docActual.carbs, 'insulin': self.docActual.insulin }) - .expect(204); + .expect(200); + res.body.status.should.equal(200); delete self.docActual.srvModified; self.cache.nextShouldEql(self.col, self.docActual) @@ -212,16 +221,18 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); delete self.docActual.srvModified; - res.body.should.containEql(self.docActual); - self.docActual = res.body; + res.body.result.should.containEql(self.docActual); + self.docActual = res.body.result; }); it('soft DELETE', async () => { - await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) - .expect(204); + let res = await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) + .expect(200); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) }); @@ -238,7 +249,8 @@ describe('Generic REST API3', function() { .query({ 'identifier_eq': self.identifier }) .expect(200); - res.body.should.have.length(0); + res.body.status.should.equal(200); + res.body.result.should.have.length(0); }); @@ -250,10 +262,11 @@ describe('Generic REST API3', function() { it('permanent DELETE', async () => { - await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) + let res = await self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) .query({ 'permanent': 'true' }) - .expect(204); + .expect(200); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) }); @@ -267,13 +280,10 @@ describe('Generic REST API3', function() { it('document permanently deleted not in HISTORY', async () => { let res = await self.instance.get(`${self.urlHistory}/${self.historyTimestamp}?token=${self.token.read}`); - if (res.status === 200) { - res.body.should.matchEach(value => { - value.identifier.should.not.be.eql(self.identifier); - }); - } else { - res.status.should.equal(204); - } + res.body.status.should.equal(200); + res.body.result.should.matchEach(value => { + value.identifier.should.not.be.eql(self.identifier); + }); }); @@ -285,7 +295,8 @@ describe('Generic REST API3', function() { let res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); - self.docActual = res.body; + res.body.status.should.equal(200); + self.docActual = res.body.result; delete self.docActual.srvModified; const readOnlyMessage = 'Trying to modify read-only document'; @@ -314,7 +325,8 @@ describe('Generic REST API3', function() { res = await self.instance.get(`${self.urlResource}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(self.docOriginal); + res.body.status.should.equal(200); + res.body.result.should.containEql(self.docOriginal); }); }); diff --git a/tests/api3.patch.test.js b/tests/api3.patch.test.js index 750bb37b7456..8bf13a68f4f3 100644 --- a/tests/api3.patch.test.js +++ b/tests/api3.patch.test.js @@ -31,7 +31,8 @@ describe('API3 PATCH', function() { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -81,7 +82,7 @@ describe('API3 PATCH', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); }); @@ -90,14 +91,14 @@ describe('API3 PATCH', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); // now let's insert the document for further patching res = await self.instance.post(`${self.url}?token=${self.token.create}`) .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -217,9 +218,9 @@ describe('API3 PATCH', function() { let res = await self.instance.patch(self.urlToken) .send(self.validDoc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); let body = await self.get(self.validDoc.identifier); body.carbs.should.equal(10); diff --git a/tests/api3.read.test.js b/tests/api3.read.test.js index 3c7f0eaf964c..7a330769f7c0 100644 --- a/tests/api3.read.test.js +++ b/tests/api3.read.test.js @@ -68,16 +68,18 @@ describe('API3 READ', function () { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); - + res.body.status.should.equal(404); + should.not.exist(res.body.result); self.cache.shouldBeEmpty() }); it('should not found not existing document', async () => { - await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) + let res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(404); + res.body.status.should.equal(404); + should.not.exist(res.body.result); self.cache.shouldBeEmpty() }); @@ -87,16 +89,18 @@ describe('API3 READ', function () { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(self.validDoc); - res.body.should.have.property('srvCreated').which.is.a.Number(); - res.body.should.have.property('srvModified').which.is.a.Number(); - res.body.should.have.property('subject'); - self.validDoc.subject = res.body.subject; // let's store subject for later tests + res.body.status.should.equal(200); + const result = res.body.result; + result.should.containEql(self.validDoc); + result.should.have.property('srvCreated').which.is.a.Number(); + result.should.have.property('srvModified').which.is.a.Number(); + result.should.have.property('subject'); + self.validDoc.subject = result.subject; // let's store subject for later tests self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -106,12 +110,13 @@ describe('API3 READ', function () { let res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?fields=date,device,subject&token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); const correct = { date: self.validDoc.date, device: self.validDoc.device, subject: self.validDoc.subject }; - res.body.should.eql(correct); + res.body.result.should.eql(correct); }); @@ -119,8 +124,9 @@ describe('API3 READ', function () { let res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?fields=_all&token=${self.token.read}`) .expect(200); + res.body.status.should.equal(200); for (let fieldName of ['app', 'date', 'device', 'identifier', 'srvModified', 'uploaderBattery', 'subject']) { - res.body.should.have.property(fieldName); + res.body.result.should.have.property(fieldName); } }); @@ -139,39 +145,42 @@ describe('API3 READ', function () { .set('If-Modified-Since', new Date(new Date(self.validDoc.date).getTime() - 1000).toUTCString()) .expect(200); - res.body.should.containEql(self.validDoc); + res.body.status.should.equal(200); + res.body.result.should.containEql(self.validDoc); }); it('should recognize softly deleted document', async () => { let res = await self.instance.delete(`${self.url}/${self.validDoc.identifier}?token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(410); - res.body.should.be.empty(); + res.body.status.should.equal(410); + should.not.exist(res.body.result); }); - it('should not found permanently deleted document', async () => { + it('should not find permanently deleted document', async () => { let res = await self.instance.delete(`${self.url}/${self.validDoc.identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) res = await self.instance.get(`${self.url}/${self.validDoc.identifier}?token=${self.token.read}`) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); + should.not.exist(res.body.result); }); - it('should found document created by APIv1', async () => { + it('should find document created by APIv1', async () => { const doc = Object.assign({}, self.validDoc, { created_at: new Date(self.validDoc.date).toISOString() @@ -195,12 +204,13 @@ describe('API3 READ', function () { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - res.body.should.containEql(doc); + res.body.status.should.equal(200); + res.body.result.should.containEql(doc); res = await self.instance.delete(`${self.url}/${identifier}?permanent=true&token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) }); diff --git a/tests/api3.renderer.test.js b/tests/api3.renderer.test.js index f92af5b7d72d..d897cf96306b 100644 --- a/tests/api3.renderer.test.js +++ b/tests/api3.renderer.test.js @@ -143,7 +143,7 @@ describe('API3 output renderers', function() { .send(doc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); res = await self.instance.get(`${self.url}/${doc.identifier}?token=${self.token.read}`) .expect(200); @@ -163,7 +163,9 @@ describe('API3 output renderers', function() { async function check406 (request) { const res = await request .expect(406); + res.status.should.equal(406); res.body.message.should.eql('Unsupported output format requested'); + should.not.exist(res.body.result); } await check406(self.instance.get(`${self.url}/${self.doc1.identifier}.ttf?fields=_all&token=${self.token.read}`)); @@ -271,16 +273,16 @@ describe('API3 output renderers', function() { it('should remove mock documents', async () => { async function deleteDoc (identifier) { - await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) + let res = await self.instance.delete(`${self.url}/${identifier}?token=${self.token.delete}`) .query({ 'permanent': 'true' }) - .expect(204); + .expect(200); + + res.body.status.should.equal(200); + self.cache.nextShouldDeleteLast(self.col); } await deleteDoc(self.doc1.identifier); - self.cache.nextShouldDeleteLast(self.col) - await deleteDoc(self.doc2.identifier); - self.cache.nextShouldDeleteLast(self.col) }); }); diff --git a/tests/api3.search.test.js b/tests/api3.search.test.js index af109a18451c..d504bdb79379 100644 --- a/tests/api3.search.test.js +++ b/tests/api3.search.test.js @@ -75,6 +75,7 @@ describe('API3 SEARCH', function() { res.body.status.should.equal(401); res.body.message.should.equal('Missing or bad access token or JWT'); + should.not.exist(res.body.result); }); @@ -83,7 +84,8 @@ describe('API3 SEARCH', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); + should.not.exist(res.body.result); }); @@ -91,7 +93,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(self.urlToken) .expect(200); - res.body.length.should.be.aboveOrEqual(self.docs.length); + res.body.status.should.equal(200); + res.body.result.length.should.be.aboveOrEqual(self.docs.length); }); @@ -99,7 +102,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(self.urlTest) .expect(200); - res.body.length.should.be.aboveOrEqual(self.docs.length); + res.body.status.should.equal(200); + res.body.result.length.should.be.aboveOrEqual(self.docs.length); }); @@ -107,8 +111,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=INVALID`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); + should.not.exist(res.body.result); }); @@ -116,8 +121,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=-1`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); + should.not.exist(res.body.result); }); @@ -125,8 +131,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=0`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); + should.not.exist(res.body.result); }); @@ -134,7 +141,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=3`) .expect(200); - res.body.length.should.be.equal(3); + res.body.status.should.equal(200); + res.body.result.length.should.equal(3); }); @@ -142,8 +150,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&skip=INVALID`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter skip out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter skip out of tolerance'); + should.not.exist(res.body.result); }); @@ -151,8 +160,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&skip=-5`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter skip out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter skip out of tolerance'); + should.not.exist(res.body.result); }); @@ -160,8 +170,9 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&sort=date&sort$desc=created_at`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameters sort and sort_desc cannot be combined'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameters sort and sort_desc cannot be combined'); + should.not.exist(res.body.result); }); @@ -169,14 +180,16 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlTest}&sort=date`) .expect(200); - const ascending = res.body; + res.body.status.should.equal(200); + const ascending = res.body.result; const length = ascending.length; length.should.be.aboveOrEqual(self.docs.length); res = await self.instance.get(`${self.urlTest}&sort$desc=date`) .expect(200); - const descending = res.body; + res.body.status.should.equal(200); + const descending = res.body.result; descending.length.should.equal(length); for (let i in ascending) { @@ -193,14 +206,16 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&sort=date&limit=8`) .expect(200); - const fullDocs = res.body; - fullDocs.length.should.be.equal(8); + res.body.status.should.equal(200); + const fullDocs = res.body.result; + fullDocs.length.should.equal(8); res = await self.instance.get(`${self.urlToken}&sort=date&skip=3&limit=5`) .expect(200); - const skipDocs = res.body; - skipDocs.length.should.be.equal(5); + res.body.status.should.equal(200); + const skipDocs = res.body.result; + skipDocs.length.should.equal(5); for (let i = 0; i < 3; i++) { skipDocs[i].should.be.eql(fullDocs[i + 3]); @@ -212,7 +227,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&fields=date,app,subject`) .expect(200); - res.body.forEach(doc => { + res.body.status.should.equal(200); + res.body.result.forEach(doc => { const docFields = Object.getOwnPropertyNames(doc); docFields.sort().should.be.eql(['app', 'date', 'subject']); }); @@ -223,7 +239,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&fields=_all`) .expect(200); - res.body.forEach(doc => { + res.body.status.should.equal(200); + res.body.result.forEach(doc => { Object.getOwnPropertyNames(doc).length.should.be.aboveOrEqual(10); Object.prototype.hasOwnProperty.call(doc, '_id').should.not.be.true(); Object.prototype.hasOwnProperty.call(doc, 'identifier').should.be.true(); @@ -240,8 +257,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}&limit=10`) .expect(400); - res.body.status.should.be.equal(400); - res.body.message.should.be.equal('Parameter limit out of tolerance'); + res.body.status.should.equal(400); + res.body.message.should.equal('Parameter limit out of tolerance'); apiApp.set('API3_MAX_LIMIT', limitBackup); }); @@ -253,7 +270,8 @@ describe('API3 SEARCH', function() { let res = await self.instance.get(`${self.urlToken}`) .expect(200); - res.body.length.should.be.equal(5); + res.body.status.should.equal(200); + res.body.result.length.should.equal(5); apiApp.set('API3_MAX_LIMIT', limitBackup); }); diff --git a/tests/api3.socket.test.js b/tests/api3.socket.test.js index 9560c200c650..8c63486bba16 100644 --- a/tests/api3.socket.test.js +++ b/tests/api3.socket.test.js @@ -128,7 +128,7 @@ describe('Socket.IO in REST API3', function() { self.instance.put(`${self.urlResource}?token=${self.token.update}`) .send(self.docActual) - .expect(204) + .expect(200) .end((err) => { should.not.exist(err); self.docActual.subject = self.subject.apiUpdate.name; @@ -152,7 +152,7 @@ describe('Socket.IO in REST API3', function() { self.instance.patch(`${self.urlResource}?token=${self.token.update}`) .send({ 'carbs': self.docActual.carbs, 'insulin': self.docActual.insulin }) - .expect(204) + .expect(200) .end((err) => { should.not.exist(err); }); @@ -168,7 +168,7 @@ describe('Socket.IO in REST API3', function() { }); self.instance.delete(`${self.urlResource}?token=${self.token.delete}`) - .expect(204) + .expect(200) .end((err) => { should.not.exist(err); }); diff --git a/tests/api3.update.test.js b/tests/api3.update.test.js index 71f1c021192c..7c28dbb22053 100644 --- a/tests/api3.update.test.js +++ b/tests/api3.update.test.js @@ -32,7 +32,8 @@ describe('API3 UPDATE', function() { let res = await self.instance.get(`${self.url}/${identifier}?token=${self.token.read}`) .expect(200); - return res.body; + res.body.status.should.equal(200); + return res.body.result; }; @@ -82,7 +83,7 @@ describe('API3 UPDATE', function() { .send(self.validDoc) .expect(404); - res.body.should.be.empty(); + res.body.status.should.equal(404); }); @@ -101,7 +102,8 @@ describe('API3 UPDATE', function() { .send(self.validDoc) .expect(201); - res.body.should.be.empty(); + res.body.status.should.equal(201); + res.body.identifier.should.equal(self.validDoc.identifier); self.cache.nextShouldEql(self.col, self.validDoc) const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds @@ -123,9 +125,9 @@ describe('API3 UPDATE', function() { let res = await self.instance.put(self.urlToken) .send(self.validDoc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldEql(self.col, self.validDoc) const lastModified = new Date(res.headers['last-modified']).getTime(); // Last-Modified has trimmed milliseconds @@ -148,9 +150,9 @@ describe('API3 UPDATE', function() { let res = await self.instance.put(self.urlToken) .set('If-Unmodified-Since', new Date(new Date().getTime() + 1000).toUTCString()) .send(doc) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldEql(self.col, doc) let body = await self.get(self.validDoc.identifier); @@ -170,7 +172,7 @@ describe('API3 UPDATE', function() { .send(doc) .expect(412); - res.body.should.be.empty(); + res.body.status.should.equal(412); body = await self.get(doc.identifier); body.should.eql(self.validDoc); @@ -282,9 +284,9 @@ describe('API3 UPDATE', function() { let res = await self.instance.put(self.urlToken) .send(Object.assign({}, self.validDoc, { identifier: 'MODIFIED' })) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); delete self.validDoc.srvModified; self.cache.nextShouldEql(self.col, self.validDoc) }); @@ -292,16 +294,16 @@ describe('API3 UPDATE', function() { it('should not update deleted document', async () => { let res = await self.instance.delete(`${self.url}/${self.validDoc.identifier}?token=${self.token.delete}`) - .expect(204); + .expect(200); - res.body.should.be.empty(); + res.body.status.should.equal(200); self.cache.nextShouldDeleteLast(self.col) res = await self.instance.put(self.urlToken) .send(self.validDoc) .expect(410); - res.body.should.be.empty(); + res.body.status.should.equal(410); }); }); From 1351d35066bd889be16c6ab665dd3e355ffb142f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Fri, 8 Jan 2021 16:25:51 +0200 Subject: [PATCH 005/129] * Improved internal API for injecting values into localization keys * Fix a hard to translate key that was split to two separate values --- lib/authorization/index.js | 2 +- lib/language.js | 80 ++++++++++++++++++++++++-------------- tests/language.test.js | 8 ++++ translations/en/en.json | 3 +- 4 files changed, 61 insertions(+), 32 deletions(-) diff --git a/lib/authorization/index.js b/lib/authorization/index.js index 31e42b242e8c..b63038c0533b 100644 --- a/lib/authorization/index.js +++ b/lib/authorization/index.js @@ -209,7 +209,7 @@ function init (env, ctx) { ctx.bus.emit('admin-notify', { title: ctx.language.translate('Failed authentication') - , message: ctx.language.translate('A device at IP number') + ' ' + data.ip + ' ' + ctx.language.translate('attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?') + , message: ctx.language.translate('A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?', data.ip) }); if (callback) { callback('All validation failed', {}); } diff --git a/lib/language.js b/lib/language.js index 951ddb7c07d9..ea3f7e711438 100644 --- a/lib/language.js +++ b/lib/language.js @@ -2,9 +2,9 @@ var _ = require('lodash'); -function init(fs) { +function init (fs) { - function language() { + function language () { return language; } @@ -16,7 +16,7 @@ function init(fs) { , { code: 'cs', file: 'cs_CZ', language: 'Čeština', speechCode: 'cs-CZ' } , { code: 'de', file: 'de_DE', language: 'Deutsch', speechCode: 'de-DE' } , { code: 'dk', file: 'da_DK', language: 'Dansk', speechCode: 'dk-DK' } - , { code: 'el', file: 'el_GR', language: 'Ελληνικά', speechCode: 'el-GR'} + , { code: 'el', file: 'el_GR', language: 'Ελληνικά', speechCode: 'el-GR' } , { code: 'en', file: 'en_US', language: 'English', speechCode: 'en-US' } , { code: 'es', file: 'es_ES', language: 'Español', speechCode: 'es-ES' } , { code: 'fi', file: 'fi_FI', language: 'Suomi', speechCode: 'fi-FI' } @@ -33,7 +33,7 @@ function init(fs) { , { code: 'pt', file: 'pt_BR', language: 'Português (Brasil)', speechCode: 'pt-BR' } , { code: 'ro', file: 'ro_RO', language: 'Română', speechCode: 'ro-RO' } , { code: 'ru', file: 'ru_RU', language: 'Русский', speechCode: 'ru-RU' } - , { code: 'sk', file: 'sl_SL', language: 'Slovenčina', speechCode: 'sk-SK' } + , { code: 'sk', file: 'sl_SL', language: 'Slovenčina', speechCode: 'sk-SK' } , { code: 'sv', file: 'sv_SE', language: 'Svenska', speechCode: 'sv-SE' } , { code: 'tr', file: 'tr_TR', language: 'Türkçe', speechCode: 'tr-TR' } , { code: 'zh_cn', file: 'zh_CN', language: '中文(简体)', speechCode: 'cmn-Hans-CN' } @@ -41,27 +41,27 @@ function init(fs) { ]; var translations = {}; - + language.translations = translations; - language.offerTranslations = function offerTranslations(localization) { + language.offerTranslations = function offerTranslations (localization) { translations = localization; language.translations = translations; } // case sensitive - language.translateCS = function translateCaseSensitive(text) { + language.translateCS = function translateCaseSensitive (text) { if (translations[text]) { return translations[text]; } - // console.log('localization:', text, 'not found'); + // console.log('localization:', text, 'not found'); return text; }; // case insensitive - language.translateCI = function translateCaseInsensitive(text) { + language.translateCI = function translateCaseInsensitive (text) { var utext = text.toUpperCase(); - _.forEach(translations, function (ts, key) { + _.forEach(translations, function(ts, key) { var ukey = key.toUpperCase(); if (ukey === utext) { text = ts; @@ -70,69 +70,91 @@ function init(fs) { return text; }; - language.translate = function translate(text, options) { + language.translate = function translate (text, options) { var translated; if (options && options.ci) { translated = language.translateCI(text); } else { translated = language.translateCS(text); } + + let keys = null; + if (options && options.params) { - for (var i = 0; i < options.params.length; i++) { + keys = options.params; + } + + if (options && !options.hasOwnProperty('ci') && !options.hasOwnProperty('params')) { + keys = []; + for (var i = 1; i < arguments.length; i++) { + keys.push(arguments[i]); + } + } + + if (options && (options.hasOwnProperty('ci') || options.hasOwnProperty('params')) && arguments.length > 2) { + if (!keys) keys = []; + for (var i = 2; i < arguments.length; i++) { + keys.push(arguments[i]); + } + } + + if (keys) { + for (var i = 0; i < keys.length; i++) { // eslint-disable-next-line no-useless-escape - var r = new RegExp('\%' + (i+1), 'g'); - translated = translated.replace(r, options.params[i]); + var r = new RegExp('\%' + (i + 1), 'g'); + translated = translated.replace(r, keys[i]); } } + return translated; }; - language.DOMtranslate = function DOMtranslate($) { + language.DOMtranslate = function DOMtranslate ($) { // do translation of static text on load - $('.translate').each(function () { + $('.translate').each(function() { $(this).text(language.translate($(this).text())); - }); - $('.titletranslate, .tip').each(function () { - $(this).attr('title',language.translate($(this).attr('title'))); - $(this).attr('original-title',language.translate($(this).attr('original-title'))); - $(this).attr('placeholder',language.translate($(this).attr('placeholder'))); - }); + }); + $('.titletranslate, .tip').each(function() { + $(this).attr('title', language.translate($(this).attr('title'))); + $(this).attr('original-title', language.translate($(this).attr('original-title'))); + $(this).attr('placeholder', language.translate($(this).attr('placeholder'))); + }); }; - language.getFilename = function getFilename(code) { + language.getFilename = function getFilename (code) { if (code == 'en') { return 'en/en.json'; } let file; - language.languages.forEach(function (l) { + language.languages.forEach(function(l) { if (l.code == code) file = l.file; }); return file + '.json'; } // this is a server only call and needs fs by reference as the class is also used in the client - language.loadLocalization = function loadLocalization(fs, path) { + language.loadLocalization = function loadLocalization (fs, path) { let filename = './translations/' + this.getFilename(this.lang); if (path) filename = path.resolve(__dirname, filename); const l = fs.readFileSync(filename); this.offerTranslations(JSON.parse(l)); } - language.set = function set(newlang) { + language.set = function set (newlang) { language.lang = newlang; - language.languages.forEach(function (l) { + language.languages.forEach(function(l) { if (l.code === language.lang && l.speechCode) language.speechCode = l.speechCode; }); return language(); }; - language.get = function get(lang) { + language.get = function get (lang) { var r; - language.languages.forEach(function (l) { + language.languages.forEach(function(l) { if (l.code === lang) r = l; }); return r; diff --git a/tests/language.test.js b/tests/language.test.js index d61eec72dddd..0de87999b4a2 100644 --- a/tests/language.test.js +++ b/tests/language.test.js @@ -11,6 +11,14 @@ describe('language', function ( ) { language.translate('Carbs').should.equal('Carbs'); }); + it('replace strings in translations', function () { + var language = require('../lib/language')(); + language.translate('%1 records deleted', '1').should.equal('1 records deleted'); + language.translate('%1 records deleted', 1).should.equal('1 records deleted'); + language.translate('%1 records deleted', {params: ['1']}).should.equal('1 records deleted'); + language.translate('Sensor age %1 days %2 hours', '1', '2').should.equal('Sensor age 1 days 2 hours'); + }); + it('translate to French', function () { var language = require('../lib/language')(); language.set('fr'); diff --git a/translations/en/en.json b/translations/en/en.json index ebf44b088166..cb55e4a07367 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -691,6 +691,5 @@ ,"Remove stored token":"Remove stored token" ,"Weekly Distribution":"Weekly Distribution" ,"Failed authentication":"Failed authentication" - ,"A device at IP number":"A device at IP number" - ,"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?":"attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" + ,"A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } From 22c007120520e12468d99054800e6dc69b398bea Mon Sep 17 00:00:00 2001 From: Stephen Brown II Date: Fri, 8 Jan 2021 19:54:41 -0700 Subject: [PATCH 006/129] Don't run docker push on forks (#6718) Skip the docker push steps if the repo owner is not 'nightscout'. --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3c8e1db7bb6e..d867f073f9d5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: name: Publish dev branch to Docker Hub needs: test runs-on: ubuntu-latest - if: github.ref == 'refs/heads/dev' + if: github.ref == 'refs/heads/dev' && github.repository_owner == 'nightscout' env: DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: @@ -68,7 +68,7 @@ jobs: name: Publish master branch to Docker Hub needs: test runs-on: ubuntu-latest - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' && github.repository_owner == 'nightscout' env: DOCKER_IMAGE: nightscout/cgm-remote-monitor steps: From 44c544a9ac80401dfbd0405f8542abf96480e409 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Tue, 12 Jan 2021 16:45:23 +0200 Subject: [PATCH 007/129] Support pump status upload display override (#6698) --- lib/plugins/pump.js | 7 ++++- tests/pump.test.js | 71 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/lib/plugins/pump.js b/lib/plugins/pump.js index 33236b7b61fd..21b1261739b6 100644 --- a/lib/plugins/pump.js +++ b/lib/plugins/pump.js @@ -225,7 +225,11 @@ function init (ctx) { function updateReservoir (prefs, result) { if (result.reservoir) { result.reservoir.label = 'Reservoir'; - result.reservoir.display = result.reservoir.value.toPrecision(3) + 'U'; + if (result.reservoir_display_override) { + result.reservoir.display = result.reservoir_display_override; + } else { + result.reservoir.display = result.reservoir.value.toPrecision(3) + 'U'; + } if (result.reservoir.value < prefs.urgentRes) { result.reservoir.level = levels.URGENT; result.reservoir.message = 'URGENT: Pump Reservoir Low'; @@ -301,6 +305,7 @@ function init (ctx) { level: levels.NONE , clock: pump.clock ? { value: moment(pump.clock) } : null , reservoir: pump.reservoir || pump.reservoir === 0 ? { value: pump.reservoir } : null + , reservoir_display_override: pump.reservoir_display_override || null , manufacturer: pump.manufacturer , model: pump.model , extended: pump.extended || null diff --git a/tests/pump.test.js b/tests/pump.test.js index f82b9fb27c62..dc072c7fabef 100644 --- a/tests/pump.test.js +++ b/tests/pump.test.js @@ -51,12 +51,54 @@ var statuses = [{ } }]; + +var statuses2 = [{ + created_at: '2015-12-05T17:35:00.000Z' + , device: 'openaps://farawaypi' + , pump: { + battery: { + status: 'normal', + voltage: 1.52 + }, + status: { + status: 'normal', + bolusing: false, + suspended: false + }, + reservoir: 86.4, + reservoir_display_override: '50+U', + clock: '2015-12-05T17:32:00.000Z' + } +}, { + created_at: '2015-12-05T19:05:00.000Z' + , device: 'openaps://abusypi' + , pump: { + battery: { + status: 'normal', + voltage: 1.52 + }, + status: { + status: 'normal', + bolusing: false, + suspended: false + }, + reservoir: 86.4, + reservoir_display_override: '50+U', + clock: '2015-12-05T19:02:00.000Z' + } +}]; + + var now = moment(statuses[1].created_at); _.forEach(statuses, function updateMills (status) { status.mills = moment(status.created_at).valueOf(); }); +_.forEach(statuses2, function updateMills (status) { + status.mills = moment(status.created_at).valueOf(); +}); + describe('pump', function ( ) { it('set the property and update the pill', function (done) { @@ -92,7 +134,36 @@ describe('pump', function ( ) { }; pump.setProperties(sbx); + pump.updateVisualisation(sbx); + + }); + it('use reservoir_display_override when available', function (done) { + var ctx = { + settings: { + units: 'mmol' + } + , pluginBase: { + updatePillText: function mockedUpdatePillText(plugin, options) { + options.label.should.equal('Pump'); + options.value.should.equal('50+U'); + done(); + } + } + , language: language + , levels: levels + }; + + var sbx = sandbox.clientInit(ctx, now.valueOf(), {devicestatus: statuses2}); + + var unmockedOfferProperty = sbx.offerProperty; + sbx.offerProperty = function mockedOfferProperty (name, setter) { + name.should.equal('pump'); + sbx.offerProperty = unmockedOfferProperty; + unmockedOfferProperty(name, setter); + }; + + pump.setProperties(sbx); pump.updateVisualisation(sbx); }); From c0b96a714e618c79f79995f3cf325c16074921ed Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Thu, 14 Jan 2021 09:29:00 +0200 Subject: [PATCH 008/129] Fix admin localization --- lib/admin_plugins/roles.js | 2 +- lib/admin_plugins/subjects.js | 2 +- translations/en/en.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/admin_plugins/roles.js b/lib/admin_plugins/roles.js index a054fc48c055..ee3bc30b89c7 100644 --- a/lib/admin_plugins/roles.js +++ b/lib/admin_plugins/roles.js @@ -46,7 +46,7 @@ function createOrSaveRole (role, client, callback) { reload(client, callback); }).fail(function fail (err) { console.error('Unable to ' + method + ' Role', err.responseText); - window.alert(client.translate('Unable to %1 Role', { params: [method] })); + window.alert(client.translate('Unable to save Role')); if (callback) { callback(err); } diff --git a/lib/admin_plugins/subjects.js b/lib/admin_plugins/subjects.js index 828011f88e06..b1123029eaf6 100644 --- a/lib/admin_plugins/subjects.js +++ b/lib/admin_plugins/subjects.js @@ -45,7 +45,7 @@ function createOrSaveSubject (subject, client, callback) { reload(client, callback); }).fail(function fail (err) { console.error('Unable to ' + method + ' Subject', err.responseText); - window.alert(client.translate('Unable to ' + method + ' Subject')); + window.alert(client.translate('Unable to save Subject')); if (callback) { callback(); } diff --git a/translations/en/en.json b/translations/en/en.json index cb55e4a07367..6c0ff4984566 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -417,7 +417,7 @@ ,"Negative temp basal insulin:":"Negative temp basal insulin:" ,"Total basal insulin:":"Total basal insulin:" ,"Total daily insulin:":"Total daily insulin:" - ,"Unable to %1 Role":"Unable to %1 Role" + ,"Unable to save Role":"Unable to save Role" ,"Unable to delete Role":"Unable to delete Role" ,"Database contains %1 roles":"Database contains %1 roles" ,"Edit Role":"Edit Role" @@ -432,7 +432,7 @@ ,"Subjects - People, Devices, etc":"Subjects - People, Devices, etc" ,"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.":"Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared." ,"Add new Subject":"Add new Subject" - ,"Unable to %1 Subject":"Unable to %1 Subject" + ,"Unable to save Subject":"Unable to save Subject" ,"Unable to delete Subject":"Unable to delete Subject" ,"Database contains %1 subjects":"Database contains %1 subjects" ,"Edit Subject":"Edit Subject" From 647ed20de15e11469cf3740f4b5e0443e4702958 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 17 Jan 2021 12:20:48 +0200 Subject: [PATCH 009/129] Clean statics & bundle more (#6745) * * Remove unused old version of MFB * Bundle food, profile editor * Clean up the static folders * Fix tests --- bundle/bundle.reports.source.js | 2 + {static/food/js => lib/food}/food.js | 8 +- .../js => lib/profile}/profileeditor.js | 9 +- lib/report/reportclient.js | 3 - static/js/foodinit.js | 6 + static/js/profileinit.js | 6 + .../{report/js/report.js => js/reportinit.js} | 0 static/mfb/lib/modernizr.touch.js | 4 - static/mfb/mfb.css | 671 ------------------ static/mfb/mfb.css.map | 7 - static/mfb/mfb.js | 98 --- static/mfb/mfb.min.css | 1 - static/mfb/mfb.min.js | 1 - static/radio/js/radio.js | 110 --- static/report/css/mfb.min.css | 1 - tests/profileeditor.test.js | 4 +- tests/reports.test.js | 11 +- views/foodindex.html | 4 +- views/profileindex.html | 4 +- views/reportindex.html | 2 +- 20 files changed, 40 insertions(+), 912 deletions(-) rename {static/food/js => lib/food}/food.js (99%) rename {static/profile/js => lib/profile}/profileeditor.js (99%) create mode 100644 static/js/foodinit.js create mode 100644 static/js/profileinit.js rename static/{report/js/report.js => js/reportinit.js} (100%) delete mode 100644 static/mfb/lib/modernizr.touch.js delete mode 100644 static/mfb/mfb.css delete mode 100644 static/mfb/mfb.css.map delete mode 100644 static/mfb/mfb.js delete mode 100644 static/mfb/mfb.min.css delete mode 100644 static/mfb/mfb.min.js delete mode 100644 static/radio/js/radio.js delete mode 100644 static/report/css/mfb.min.css diff --git a/bundle/bundle.reports.source.js b/bundle/bundle.reports.source.js index e633f73ea276..265cf87e34ba 100644 --- a/bundle/bundle.reports.source.js +++ b/bundle/bundle.reports.source.js @@ -5,6 +5,8 @@ console.info('Nightscout report bundle start'); window.Nightscout.report_plugins_preinit = require('../lib/report_plugins/'); window.Nightscout.predictions = require('../lib/report/predictions'); window.Nightscout.reportclient = require('../lib/report/reportclient'); +window.Nightscout.profileclient = require('../lib/profile/profileeditor'); +window.Nightscout.foodclient = require('../lib/food/food'); console.info('Nightscout report bundle ready'); diff --git a/static/food/js/food.js b/lib/food/food.js similarity index 99% rename from static/food/js/food.js rename to lib/food/food.js index 2ffc78d2623e..d5b32b84b365 100644 --- a/static/food/js/food.js +++ b/lib/food/food.js @@ -1,13 +1,13 @@ 'use strict'; +var init = function init () { + //for the tests window isn't the global object var $ = window.$; var _ = window._; var Nightscout = window.Nightscout; var client = Nightscout.client; -(function () { - client.init(function loaded () { var translate = client.translate; @@ -677,4 +677,6 @@ client.init(function loaded () { } } }); -})(); \ No newline at end of file +}; + +module.exports = init; diff --git a/static/profile/js/profileeditor.js b/lib/profile/profileeditor.js similarity index 99% rename from static/profile/js/profileeditor.js rename to lib/profile/profileeditor.js index 77a1b205d7a0..a8fecce1a257 100644 --- a/static/profile/js/profileeditor.js +++ b/lib/profile/profileeditor.js @@ -1,5 +1,6 @@ -(function () { - 'use strict'; +'use strict'; + +var init = function init () { //for the tests window isn't the global object var $ = window.$; var _ = window._; @@ -721,4 +722,6 @@ } } }); -})(); +}; + +module.exports = init; diff --git a/lib/report/reportclient.js b/lib/report/reportclient.js index 171186f9a903..a074a793cb33 100644 --- a/lib/report/reportclient.js +++ b/lib/report/reportclient.js @@ -1,6 +1,3 @@ -// TODO: -// - bypass nightmode in reports -// - on save/delete treatment ctx.bus.emit('data-received'); is not enough. we must add something like 'data-updated' var init = function init () { 'use strict'; diff --git a/static/js/foodinit.js b/static/js/foodinit.js new file mode 100644 index 000000000000..d2e90ddcc230 --- /dev/null +++ b/static/js/foodinit.js @@ -0,0 +1,6 @@ +'use strict'; + +$(document).ready(function() { + console.log('Application got ready event'); + window.Nightscout.foodclient(); +}); diff --git a/static/js/profileinit.js b/static/js/profileinit.js new file mode 100644 index 000000000000..470f8bf623a0 --- /dev/null +++ b/static/js/profileinit.js @@ -0,0 +1,6 @@ +'use strict'; + +$(document).ready(function() { + console.log('Application got ready event'); + window.Nightscout.profileclient(); +}); diff --git a/static/report/js/report.js b/static/js/reportinit.js similarity index 100% rename from static/report/js/report.js rename to static/js/reportinit.js diff --git a/static/mfb/lib/modernizr.touch.js b/static/mfb/lib/modernizr.touch.js deleted file mode 100644 index 0280cf2b9765..000000000000 --- a/static/mfb/lib/modernizr.touch.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.8.3 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-touch-teststyles-prefixes - */ -;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(l.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}var d="2.8.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j,k={}.toString,l=" -webkit- -moz- -o- -ms- ".split(" "),m={},n={},o={},p=[],q=p.slice,r,s=function(a,c,d,e){var h,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),l.appendChild(j);return h=["­",'"].join(""),l.id=g,(m?l:n).innerHTML+=h,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=f.style.overflow,f.style.overflow="hidden",f.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),f.style.overflow=k),!!i},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=q.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(q.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(q.call(arguments)))};return e}),m.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:s(["@media (",l.join("touch-enabled),("),g,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c};for(var A in m)u(m,A)&&(r=A.toLowerCase(),e[r]=m[A](),p.push((e[r]?"":"no-")+r));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)u(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof enableClasses!="undefined"&&enableClasses&&(f.className+=" "+(b?"":"no-")+a),e[a]=b}return e},v(""),h=j=null,e._version=d,e._prefixes=l,e.testStyles=s,e}(this,this.document); \ No newline at end of file diff --git a/static/mfb/mfb.css b/static/mfb/mfb.css deleted file mode 100644 index 39063306c347..000000000000 --- a/static/mfb/mfb.css +++ /dev/null @@ -1,671 +0,0 @@ -/** - * CONTENTS - * - * #Introduction........Naming conventions used throughout the code. - * - * #SETTINGS - * Variables............Globally-available variables and config. - * - * #TOOLS - * Mixins...............Useful mixins. - * - * #GENERIC - * Demo styles..........Styles for demo only (consider removing these). - * - * #BASE - * Raw styles...........The very basic component wrapper. - * Modifiers............The basic styles dependant on component placement. - * Debuggers............The basic styles dependant on component placement. - * - * #BUTTONS - * Base..................Wrapping and constraining every button. - * Modifiers.............Styles that depends on state and settings. - * Animations............Main animations of the component. - * Debuggers.............Styles for development. - * - * #LABELS - * Base..................Wrapping and constraining every label. - * Modifiers.............Styles that depends on state and settings. - * Debuggers.............Styles for development. - * - * #DEVELOPMENT - * In development........These styles are in development and not yet finalised - * Debuggers.............Helper styles and flags for development. - */ -/*------------------------------------*\ - #Introduction -\*------------------------------------*/ -/** - * The code AND the comments use naming conventions to refer to each part of - * the UI put in place by this component. If you see that somewhere they are - * not followed please consider a Pull Request. The naming conventions are: - * - * "Component" : the widget itself as a whole. This is the last time it will be - * called anything different than "component". So, stay away from - * "widget", "button" or anything else when referring to the - * Component in general. - * - * "Main Button" : the button that is always in view. Hovering or clicking on it - * will reveal the child buttons. - * - * "Child buttons" : if you've read the previous point you know what they are. - * Did you read the previous point? :) - * - * "Label(s)" : the tooltip that fades in when hovering over a button. - -/*------------------------------------*\ - #SETTINGS | Variables -\*------------------------------------*/ -/** - * These variables are the default styles that serve as fallback and can be - * easily customised at compile time. - * Consider overriding them in your own style sheets rather than editing them - * here. Refer to the docs for more info. - */ -/* COLORS ----------------------------*/ -/* EFFECTS ---------------------------*/ -/* SPEEDS ----------------------------*/ -/* SIZES -----------------------------*/ -/* SPACING ---------------------------*/ -/* OTHER VARIABLES -------------------*/ -/*------------------------------------*\ - #BASE | Raw styles -\*------------------------------------*/ -/** - * The very core styling of the button. - * These styles are shared by every instance of the button. - * Styles placed here should NOT care about placement in the screen, - * options chosen by the user or state of the button. - */ -.mfb-component--tl, .mfb-component--tr, .mfb-component--bl, .mfb-component--br { - box-sizing: border-box; - margin: 25px; - position: fixed; - white-space: nowrap; - z-index: 30; - padding-left: 0; - list-style: none; } - .mfb-component--tl *, .mfb-component--tr *, .mfb-component--bl *, .mfb-component--br *, .mfb-component--tl *:before, .mfb-component--tr *:before, .mfb-component--bl *:before, .mfb-component--br *:before, .mfb-component--tl *:after, .mfb-component--tr *:after, .mfb-component--bl *:after, .mfb-component--br *:after { - box-sizing: inherit; } - -/*------------------------------------*\ - #BASE | Modifiers -\*------------------------------------*/ -/** - * These styles depends on the placement of the button. - * Styles can be: - * 1. Top-left: modified by the " --tl " suffix. - * 2. Top-right: modified by the " --tr " suffix. - * 3. Bottom-left: modified by the " --bl " suffix. - * 4. Bottom-right: modified by the " --br " suffix. - */ -.mfb-component--tl { - left: 0; - top: 0; } - -.mfb-component--tr { - right: 0; - top: 0; } - -.mfb-component--bl { - left: 0; - bottom: 0; } - -.mfb-component--br { - right: 0; - bottom: 0; } - -/*------------------------------------*\ - #BUTTONS | Base -\*------------------------------------*/ -.mfb-component__button--main, .mfb-component__button--child { - background-color: #E40A5D; - display: inline-block; - position: relative; - border: none; - border-radius: 50%; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); - cursor: pointer; - outline: none; - padding: 0; - position: relative; - -webkit-user-drag: none; - color: #f1f1f1; } - -/** - * This is the unordered list for the list items that contain - * the child buttons. - * - */ -.mfb-component__list { - list-style: none; - margin: 0; - padding: 0; } - .mfb-component__list > li { - display: block; - position: absolute; - top: 0; - right: 1px; - padding: 10px 0; - margin: -10px 0; } - -/** - * These are the basic styles for all the icons inside the main button - */ -.mfb-component__icon, .mfb-component__main-icon--active, -.mfb-component__main-icon--resting, .mfb-component__child-icon { - position: absolute; - font-size: 18px; - text-align: center; - line-height: 56px; - width: 100%; } - -.mfb-component__wrap { - padding: 25px; - margin: -25px; } - -[data-mfb-toggle="hover"]:hover .mfb-component__icon, [data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, [data-mfb-toggle="hover"]:hover .mfb-component__child-icon, -[data-mfb-state="open"] .mfb-component__icon, -[data-mfb-state="open"] .mfb-component__main-icon--active, -[data-mfb-state="open"] .mfb-component__main-icon--resting, -[data-mfb-state="open"] .mfb-component__child-icon { - -webkit-transform: scale(1) rotate(0deg); - transform: scale(1) rotate(0deg); } - -/*------------------------------------*\ - #BUTTONS | Modifiers -\*------------------------------------*/ -.mfb-component__button--main { - height: 56px; - width: 56px; - z-index: 20; } - -.mfb-component__button--child { - height: 56px; - width: 56px; } - -.mfb-component__main-icon--active, -.mfb-component__main-icon--resting { - -webkit-transform: scale(1) rotate(360deg); - transform: scale(1) rotate(360deg); - -webkit-transition: -webkit-transform 150ms cubic-bezier(0.4, 0, 1, 1); - transition: transform 150ms cubic-bezier(0.4, 0, 1, 1); } - -.mfb-component__child-icon, -.mfb-component__child-icon { - line-height: 56px; - font-size: 18px; } - -.mfb-component__main-icon--active { - opacity: 0; } - -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon, -[data-mfb-state="open"] .mfb-component__main-icon { - -webkit-transform: scale(1) rotate(0deg); - transform: scale(1) rotate(0deg); } -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, -[data-mfb-state="open"] .mfb-component__main-icon--resting { - opacity: 0; - position: absolute !important; } -[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, -[data-mfb-state="open"] .mfb-component__main-icon--active { - opacity: 1; } - -/*------------------------------------*\ - #BUTTONS | Animations -\*------------------------------------*/ -/** - * SLIDE IN + FADE - * When hovering the main button, the child buttons slide out from beneath - * the main button while transitioning from transparent to opaque. - * - */ -.mfb-component--tl.mfb-slidein .mfb-component__list li, -.mfb-component--tr.mfb-slidein .mfb-component__list li { - opacity: 0; - transition: all 0.5s; } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px); - transform: translateY(70px); } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px); - transform: translateY(140px); } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px); - transform: translateY(210px); } -.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px); - transform: translateY(280px); } - -.mfb-component--bl.mfb-slidein .mfb-component__list li, -.mfb-component--br.mfb-slidein .mfb-component__list li { - opacity: 0; - transition: all 0.5s; } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px); - transform: translateY(-70px); } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px); - transform: translateY(-140px); } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px); - transform: translateY(-210px); } -.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px); - transform: translateY(-280px); } - -/** - * SLIDE IN SPRING - * Same as slide-in but with a springy animation. - * - */ -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li, -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li { - opacity: 0; - transition: all 0.5s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; } -.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; - -webkit-transform: translateY(70px); - transform: translateY(70px); } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; - -webkit-transform: translateY(140px); - transform: translateY(140px); } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; - -webkit-transform: translateY(210px); - transform: translateY(210px); } -.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; - -webkit-transform: translateY(280px); - transform: translateY(280px); } - -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li, -.mfb-component--br.mfb-slidein-spring .mfb-component__list li { - opacity: 0; - transition: all 0.5s; - transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; } -.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { - opacity: 1; } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - transition-delay: 0.05s; - -webkit-transform: translateY(-70px); - transform: translateY(-70px); } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - transition-delay: 0.1s; - -webkit-transform: translateY(-140px); - transform: translateY(-140px); } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - transition-delay: 0.15s; - -webkit-transform: translateY(-210px); - transform: translateY(-210px); } -.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - transition-delay: 0.2s; - -webkit-transform: translateY(-280px); - transform: translateY(-280px); } - -/** - * ZOOM-IN - * When hovering the main button, the child buttons grow - * from zero to normal size. - * - */ -.mfb-component--tl.mfb-zoomin .mfb-component__list li, -.mfb-component--tr.mfb-zoomin .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(0); - transform: translateY(70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(0); - transform: translateY(140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(0); - transform: translateY(210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(0); - transform: translateY(280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(1); - transform: translateY(70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(1); - transform: translateY(140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(1); - transform: translateY(210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(1); - transform: translateY(280px) scale(1); - transition-delay: 0.2s; } - -.mfb-component--bl.mfb-zoomin .mfb-component__list li, -.mfb-component--br.mfb-zoomin .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(0); - transform: translateY(-70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(0); - transform: translateY(-140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(0); - transform: translateY(-210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(0); - transform: translateY(-280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(1); - transform: translateY(-70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(1); - transform: translateY(-140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(1); - transform: translateY(-210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(1); - transform: translateY(-280px) scale(1); - transition-delay: 0.2s; } - -/** - * FOUNTAIN - * When hovering the main button the child buttons - * jump into view from outside the viewport - */ -.mfb-component--tl.mfb-fountain .mfb-component__list li, -.mfb-component--tr.mfb-fountain .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(0); - transform: translateY(-70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(0); - transform: translateY(-140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(0); - transform: translateY(-210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(0); - transform: translateY(-280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(1); - transform: translateY(70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(1); - transform: translateY(140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(1); - transform: translateY(210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(1); - transform: translateY(280px) scale(1); - transition-delay: 0.2s; } - -.mfb-component--bl.mfb-fountain .mfb-component__list li, -.mfb-component--br.mfb-fountain .mfb-component__list li { - -webkit-transform: scale(0); - transform: scale(0); } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(70px) scale(0); - transform: translateY(70px) scale(0); - transition: all 0.5s; - transition-delay: 0.15s; } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(140px) scale(0); - transform: translateY(140px) scale(0); - transition: all 0.5s; - transition-delay: 0.1s; } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(210px) scale(0); - transform: translateY(210px) scale(0); - transition: all 0.5s; - transition-delay: 0.05s; } -.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(280px) scale(0); - transform: translateY(280px) scale(0); - transition: all 0.5s; - transition-delay: 0s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { - -webkit-transform: translateY(-70px) scale(1); - transform: translateY(-70px) scale(1); - transition-delay: 0.05s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { - -webkit-transform: translateY(-140px) scale(1); - transform: translateY(-140px) scale(1); - transition-delay: 0.1s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { - -webkit-transform: translateY(-210px) scale(1); - transform: translateY(-210px) scale(1); - transition-delay: 0.15s; } -.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), -.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { - -webkit-transform: translateY(-280px) scale(1); - transform: translateY(-280px) scale(1); - transition-delay: 0.2s; } - -/*------------------------------------*\ - #LABELS | base -\*------------------------------------*/ -/** - * These are the labels associated to each button, - * exposed only when hovering the related button. - * They are called labels but are in fact data-attributes of - * each button (an anchor tag). - */ -[data-mfb-label]:after { - content: attr(data-mfb-label); - opacity: 0; - transition: all 0.5s; - background: rgba(0, 0, 0, 0.4); - padding: 4px 10px; - border-radius: 3px; - color: rgba(255, 255, 255, 0.8); - font-size: 14px; - font-weight: normal; - pointer-events: none; - line-height: normal; - position: absolute; - top: 50%; - margin-top: -11px; - transition: all 0.5s; } - -[data-mfb-toggle="hover"] [data-mfb-label]:hover:after, -[data-mfb-state="open"] [data-mfb-label]:after { - content: attr(data-mfb-label); - opacity: 1; - transition: all 0.3s; } - -/*------------------------------------*\ - #LABELS | Modifiers -\*------------------------------------*/ -.mfb-component--br [data-mfb-label]:after, .mfb-component--tr [data-mfb-label]:after { - content: attr(data-mfb-label); - right: 70px; } - -.mfb-component--br .mfb-component__list [data-mfb-label]:after, .mfb-component--tr .mfb-component__list [data-mfb-label]:after { - content: attr(data-mfb-label); - right: 70px; } - -.mfb-component--tl [data-mfb-label]:after, .mfb-component--bl [data-mfb-label]:after { - content: attr(data-mfb-label); - left: 70px; } - -.mfb-component--tl .mfb-component__list [data-mfb-label]:after, .mfb-component--bl .mfb-component__list [data-mfb-label]:after { - content: attr(data-mfb-label); - left: 70px; } - -/*------------------------------------*\ - #DEVELOPMENT | In development -\*------------------------------------*/ -/** - * This part is where unfinished code should stay. - * When a feature is ready(sh) move these styles to their proper place. - */ -/*------------------------------------*\ - #DEVELOPMENT | Debuggers -\*------------------------------------*/ -/** - * These are mainly helpers for development. They do not have to end up - * in production but it's handy to keep them when developing. - */ -/** - * Apply this class to the html tag when developing the slide-in button - */ - -/*# sourceMappingURL=mfb.css.map */ diff --git a/static/mfb/mfb.css.map b/static/mfb/mfb.css.map deleted file mode 100644 index 9541680413be..000000000000 --- a/static/mfb/mfb.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0IA,8EAAc;EACZ,UAAU,EAAE,UAAU;EACtB,MAAM,EArCU,IAAI;EAsCpB,QAAQ,EAAE,KAAK;EACf,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,EAAE;EAGX,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EAIhB,0TAAqB;IACnB,UAAU,EAAE,OAAO;;;;;;;;;;;;;AAiBvB,kBAAkB;EAEhB,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;;AAEjB,kBAAkB;EAEhB,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,CAAC;;AAElB,kBAAkB;EAEhB,IAAI,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;AAEpB,kBAAkB;EAEhB,KAAK,EAAE,CAAC;EAAE,MAAM,EAAE,CAAC;;;;;AAQrB,2DAAsB;EACpB,gBAAgB,EA1HL,OAAO;EA2HlB,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EA5HQ,0DAAuB;EA6HzC,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,iBAAiB,EAAE,IAAI;EACvB,KAAK,EAnIa,OAAO;;;;;;;AA2I3B,oBAAoB;EAClB,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,yBAAI;IACF,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,GAAgD;IACvD,OAAO,EAAE,MAAqD;IAC9D,MAAM,EAAE,OAAwD;;;;;AAOpE;8DAAoB;EAClB,QAAQ,EAAE,QAAQ;EAClB,SAAS,EA7HO,IAAI;EA8HpB,UAAU,EAAE,MAAM;EAClB,WAAW,EArIM,IAAI;EAsIrB,KAAK,EAAE,IAAI;;AAGb,oBAAoB;EAKlB,OAAO,EA1IS,IAAI;EA2IpB,MAAM,EAAE,KAAiB;;AAKzB;;;;;kDAAqB;EACnB,iBAAiB,EAAE,qBAAqB;EACxC,SAAS,EAAE,qBAAqB;;;;;AASpC,4BAA4B;EAE1B,MAAM,EAjKW,IAAI;EAkKrB,KAAK,EAlKY,IAAI;EAmKrB,OAAO,EAAE,EAAE;;AAEb,6BAA6B;EAE3B,MAAM,EArKY,IAAI;EAsKtB,KAAK,EAtKa,IAAI;;AAyKxB;kCACkC;EAEhC,iBAAiB,EAAE,uBAAuB;EAClC,SAAS,EAAE,uBAAuB;EAC1C,kBAAkB,EAAE,kDAA8C;EAC1D,UAAU,EAAE,0CAAsC;;AAG5D;0BAC0B;EAExB,WAAW,EArLO,IAAI;EAsLtB,SAAS,EAAE,IAA4B;;AAEzC,iCAAiC;EAC/B,OAAO,EAAE,CAAC;;AAIV;iDAAyB;EACvB,iBAAiB,EAAE,qBAAqB;EACxC,SAAS,EAAE,qBAAqB;AAElC;0DAAkC;EAChC,OAAO,EAAE,CAAC;EAEV,QAAQ,EAAE,mBAAmB;AAE/B;yDAAiC;EAC/B,OAAO,EAAE,CAAC;;;;;;;;;;;ACjSV;sDAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;AAK1B;;6EAAE;EACA,OAAO,EAAE,CAAC;AAIV;;0FAAsB;EACpB,iBAAiB,EAAE,gBAAuB;EAClC,SAAS,EAAE,gBAAuB;AAF5C;;0FAAsB;EACpB,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAF5C;;0FAAsB;EACpB,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAF5C;;0FAAsB;EACpB,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;;AAQlD;sDAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;AAK1B;;6EAAE;EACA,OAAO,EAAE,CAAC;AAIV;;0FAAsB;EAAE,iBAAiB,EAAE,iBAAuB;EACnC,SAAS,EAAE,iBAAuB;AADjE;;0FAAsB;EAAE,iBAAiB,EAAE,kBAAuB;EACnC,SAAS,EAAE,kBAAuB;AADjE;;0FAAsB;EAAE,iBAAiB,EAAE,kBAAuB;EACnC,SAAS,EAAE,kBAAuB;AADjE;;0FAAsB;EAAE,iBAAiB,EAAE,kBAAuB;EACnC,SAAS,EAAE,kBAAuB;;;;;;;ACpCvE;6DAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;EAC5B,0BAA0B,EAAE,sCAAsC;AAGlE;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AAM/B;;oFAAE;EACA,OAAO,EAAE,CAAC;AAIV;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,gBAAuB;EAClC,SAAS,EAAE,gBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;;AAQlD;6DAAuB;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAgB;EAC5B,0BAA0B,EAAE,sCAAsC;AAGlE;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,KAAa;AADjC;0EAA2C;EACzC,gBAAgB,EAAE,IAAa;AAM/B;;oFAAE;EACA,OAAO,EAAE,CAAC;AAIV;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,iBAAuB;EAClC,SAAS,EAAE,iBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,kBAAuB;EAClC,SAAS,EAAE,kBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,KAAa;EAC/B,iBAAiB,EAAE,kBAAuB;EAClC,SAAS,EAAE,kBAAuB;AAH5C;;iGAAsB;EACpB,gBAAgB,EAAE,IAAa;EAC/B,iBAAiB,EAAE,kBAAuB;EAClC,SAAS,EAAE,kBAAuB;;;;;;;;AChDhD;qDAAE;EACA,iBAAiB,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;AAI3B;kEAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;yFAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;AAUlC;qDAAE;EACA,iBAAiB,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;AAI3B;kEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;kEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;yFAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;yFAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;;;;;;AC3DlC;uDAAE;EACA,iBAAiB,EAAE,QAAQ;EAC3B,SAAS,EAAE,QAAQ;AAInB;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;2FAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;AAUlC;uDAAE;EACA,iBAAiB,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;AAI3B;oEAAsB;EACpB,iBAAiB,EAAE,yBAA8B;EACzC,SAAS,EAAE,yBAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,IAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,KAAyC;AAL7D;oEAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EACjD,UAAU,EAAE,QAAgB;EAE5B,gBAAgB,EAAE,EAAyC;AAS3D;;2FAAsB;EACpB,iBAAiB,EAAE,0BAA8B;EACzC,SAAS,EAAE,0BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,KAAU;AAJ9B;;2FAAsB;EACpB,iBAAiB,EAAE,2BAA8B;EACzC,SAAS,EAAE,2BAA8B;EAEjD,gBAAgB,EAAE,IAAU;;;;;;;;;;;AJ6QxC,sBAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAoB;EAChC,UAAU,EAzQa,kBAAe;EA0QtC,OAAO,EAAE,QAAmD;EAC5D,aAAa,EAAE,GAAG;EAClB,KAAK,EA9QY,wBAAwB;EA+QzC,SAAS,EA/OQ,IAAI;EAgPrB,WAAW,EA9OQ,MAAM;EA+OzB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,UAAU,EAAE,KAAoD;EAChE,UAAU,EAAE,QAAoB;;AAElC;8CAC8C;EAC5C,OAAO,EAAE,oBAAoB;EAC7B,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,QAAmB;;;;;AAM/B,oFAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,KAAK,EAvPY,IAAI;;AA2PvB,8HAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,KAAK,EAAE,IAAkE;;AAI3E,oFAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,IAAI,EAnQa,IAAI;;AAuQvB,8HAAuB;EACrB,OAAO,EAAE,oBAAoB;EAC7B,IAAI,EAAE,IAAkE", -"sources": ["../src/mfb.scss","../src/_/_slidein.scss","../src/_/_slidein-spring.scss","../src/_/_zoomin.scss","../src/_/_fountain.scss"], -"names": [], -"file": "mfb.css" -} diff --git a/static/mfb/mfb.js b/static/mfb/mfb.js deleted file mode 100644 index ea6ce731fedf..000000000000 --- a/static/mfb/mfb.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Material floating button - * By: Nobita - * Repo and docs: https://github.com/nobitagit/material-floating-button - * - * License: MIT - */ - - // build script hook - don't remove - ;(function ( window, document, undefined ) { - - - 'use strict'; - - /** - * Some defaults - */ - var clickOpt = 'click', - hoverOpt = 'hover', - toggleMethod = 'data-mfb-toggle', - menuState = 'data-mfb-state', - isOpen = 'open', - isClosed = 'closed', - mainButtonClass = 'mfb-component__button--main'; - - /** - * Internal references - */ - var elemsToClick, - elemsToHover, - mainButton, - target, - currentState; - - /** - * For every menu we need to get the main button and attach the appropriate evt. - */ - function attachEvt( elems, evt ){ - for( var i = 0, len = elems.length; i < len; i++ ){ - mainButton = elems[i].querySelector('.' + mainButtonClass); - mainButton.addEventListener( evt , toggleButton, false); - } - } - - /** - * Remove the hover option, set a click toggle and a default, - * initial state of 'closed' to menu that's been targeted. - */ - function replaceAttrs( elems ){ - for( var i = 0, len = elems.length; i < len; i++ ){ - elems[i].setAttribute( toggleMethod, clickOpt ); - elems[i].setAttribute( menuState, isClosed ); - } - } - - function getElemsByToggleMethod( selector ){ - return document.querySelectorAll('[' + toggleMethod + '="' + selector + '"]'); - } - - /** - * The open/close action is performed by toggling an attribute - * on the menu main element. - * - * First, check if the target is the menu itself. If it's a child - * keep walking up the tree until we found the main element - * where we can toggle the state. - */ - function toggleButton( evt ){ - - target = evt.target; - while ( target && !target.getAttribute( toggleMethod ) ){ - target = target.parentNode; - if(!target) { return; } - } - - currentState = target.getAttribute( menuState ) === isOpen ? isClosed : isOpen; - - target.setAttribute(menuState, currentState); - - } - - /** - * On touch enabled devices we assume that no hover state is possible. - * So, we get the menu with hover action configured and we set it up - * in order to make it usable with tap/click. - **/ - if ( window.Modernizr && Modernizr.touch ){ - elemsToHover = getElemsByToggleMethod( hoverOpt ); - replaceAttrs( elemsToHover ); - } - - elemsToClick = getElemsByToggleMethod( clickOpt ); - - attachEvt( elemsToClick, 'click' ); - -// build script hook - don't remove -})( window, document ); - diff --git a/static/mfb/mfb.min.css b/static/mfb/mfb.min.css deleted file mode 100644 index 60c34aaa1ff9..000000000000 --- a/static/mfb/mfb.min.css +++ /dev/null @@ -1 +0,0 @@ -.mfb-component--bl,.mfb-component--br,.mfb-component--tl,.mfb-component--tr{box-sizing:border-box;margin:25px;position:fixed;white-space:nowrap;z-index:30;padding-left:0;list-style:none}.mfb-component--bl *,.mfb-component--bl :after,.mfb-component--bl :before,.mfb-component--br *,.mfb-component--br :after,.mfb-component--br :before,.mfb-component--tl *,.mfb-component--tl :after,.mfb-component--tl :before,.mfb-component--tr *,.mfb-component--tr :after,.mfb-component--tr :before{box-sizing:inherit}.mfb-component--tl{left:0;top:0}.mfb-component--tr{right:0;top:0}.mfb-component--bl{left:0;bottom:0}.mfb-component--br{right:0;bottom:0}.mfb-component__button--child,.mfb-component__button--main{background-color:#E40A5D;display:inline-block;border:none;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);cursor:pointer;outline:0;padding:0;position:relative;-webkit-user-drag:none;font-weight:700;color:#f1f1f1}.mfb-component__list{list-style:none;margin:0;padding:0}.mfb-component__list>li{display:block;position:absolute;top:0;right:1px;padding:10px 0;margin:-10px 0}.mfb-component__child-icon,.mfb-component__icon,.mfb-component__main-icon--active,.mfb-component__main-icon--resting{position:absolute;font-size:18px;text-align:center;line-height:56px;width:100%}.mfb-component__wrap{padding:25px;margin:-25px}[data-mfb-state=open] .mfb-component__child-icon,[data-mfb-state=open] .mfb-component__icon,[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__child-icon,[data-mfb-toggle=hover]:hover .mfb-component__icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}.mfb-component__button--main{height:56px;width:56px;z-index:20}.mfb-component__button--child{height:56px;width:56px}.mfb-component__main-icon--active,.mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(360deg);transform:scale(1) rotate(360deg);-webkit-transition:-webkit-transform 150ms cubic-bezier(.4,0,1,1);transition:transform 150ms cubic-bezier(.4,0,1,1)}.mfb-component__child-icon{line-height:56px;font-size:18px}.mfb-component__main-icon--active{opacity:0}[data-mfb-state=open] .mfb-component__main-icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{opacity:0}[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active{opacity:1}.mfb-component--tl.mfb-slidein .mfb-component__list li,.mfb-component--tr.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein .mfb-component__list li,.mfb-component--br.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(1){transition-delay:.05s}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(2){transition-delay:.1s}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(3){transition-delay:.15s}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(4){transition-delay:.2s}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){transition-delay:.05s;-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){transition-delay:.1s;-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){transition-delay:.15s;-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){transition-delay:.2s;-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li,.mfb-component--br.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(1){transition-delay:.05s}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(2){transition-delay:.1s}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(3){transition-delay:.15s}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(4){transition-delay:.2s}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){transition-delay:.05s;-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){transition-delay:.1s;-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){transition-delay:.15s;-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){transition-delay:.2s;-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-zoomin .mfb-component__list li,.mfb-component--tr.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-zoomin .mfb-component__list li,.mfb-component--br.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}.mfb-component--tl.mfb-fountain .mfb-component__list li,.mfb-component--tr.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-fountain .mfb-component__list li,.mfb-component--br.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}[data-mfb-label]:after{content:attr(data-mfb-label);opacity:0;background:rgba(0,0,0,.4);padding:4px 10px;border-radius:3px;color:rgba(255,255,255,.8);font-size:13px;pointer-events:none;position:absolute;top:50%;margin-top:-10.5px;transition:all .5s}[data-mfb-state=open] [data-mfb-label]:after,[data-mfb-toggle=hover] [data-mfb-label]:hover:after{content:attr(data-mfb-label);opacity:1;transition:all .3s}.mfb-component--br .mfb-component__list [data-mfb-label]:after,.mfb-component--br [data-mfb-label]:after,.mfb-component--tr .mfb-component__list [data-mfb-label]:after,.mfb-component--tr [data-mfb-label]:after{content:attr(data-mfb-label);right:70px}.mfb-component--bl .mfb-component__list [data-mfb-label]:after,.mfb-component--bl [data-mfb-label]:after,.mfb-component--tl .mfb-component__list [data-mfb-label]:after,.mfb-component--tl [data-mfb-label]:after{content:attr(data-mfb-label);left:70px} \ No newline at end of file diff --git a/static/mfb/mfb.min.js b/static/mfb/mfb.min.js deleted file mode 100644 index e895497a0519..000000000000 --- a/static/mfb/mfb.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a,b){"use strict";function c(a,b){for(var c=0,d=a.length;d>c;c++)i=a[c].querySelector("."+r),i.addEventListener(b,f,!1)}function d(a){for(var b=0,c=a.length;c>b;b++)a[b].setAttribute(n,l),a[b].setAttribute(o,q)}function e(a){return b.querySelectorAll("["+n+'="'+a+'"]')}function f(a){for(j=a.target;j&&!j.getAttribute(n);)if(j=j.parentNode,!j)return;k=j.getAttribute(o)===p?q:p,j.setAttribute(o,k)}var g,h,i,j,k,l="click",m="hover",n="data-mfb-toggle",o="data-mfb-state",p="open",q="closed",r="mfb-component__button--main";a.Modernizr&&Modernizr.touch&&(h=e(m),d(h)),g=e(l),c(g,"click")}(window,document); \ No newline at end of file diff --git a/static/radio/js/radio.js b/static/radio/js/radio.js deleted file mode 100644 index b5bdf48abc41..000000000000 --- a/static/radio/js/radio.js +++ /dev/null @@ -1,110 +0,0 @@ -window.Nightscout.client.init(function loaded() { - /* - Many thanks to @ps2, Pete Schwamb - * https://gist.github.com/ps2/314145bb91fa720bba59cf58f7e9cad2 - 2**((numOctaves/(maxBG-minBG))*(bg-minBG) + Math.log2(minFreq)) - */ - function convert (opts) { - opts = opts || { }; - var octaves = opts.octaves || 9; - var maxBG = opts.maxBG || 400; - var minBG = opts.minBG || 40; - var minFreq = opts.minFreq || 55; - var x = minBG - , y = minFreq - , z = octaves/(maxBG - minBG) - ; - - function freq (bg) { - return Math.pow(2, (z* (bg - x ) ) + Math.log2(y)) ; - // return Math.pow(2, (z* (bg + x ) ) + Math.log2(y)) ; - } - - function invert (freq) { - - return ((Math.log2(freq) - Math.log2(y)) / z ) + x; - } - - function api (glucose) { - return freq(glucose); - } - - api.invert = invert; - api.freq = freq; - return api; - } - - - - function createLoop (synth, sgvs) { - function callback (time, note) { - console.log(time, note); - synth.triggerAttackRelease(note, '16n', time); - } - var seq = new Tone.Sequence(callback, sgvs, '16n'); - seq.loop = false; - return seq; - } - - function glucose (sgv) { - if (sgv) { - return parseInt(sgv.mgdl || sgv.sgv || sgv.glucose || 35); - } - - return 20; - } - - $(document).ready(function ( ) { - console.log('OK'); - var converter = convert( ); - var synth = new Tone.PolySynth(16, Tone.MonoSynth); - // default volume always makes my ears bleed - synth.chain(new Tone.Volume(-26), Tone.Master); - // synth.toMaster(); - Tone.Transport.timeSignature = [ 3, 2 ]; - Tone.Transport.bpm.value = 320; - - // function play_next (time) { - // var sgv = sgvs.shift( ); - // console.log(sgv); - // if (!sgv) { - // loop.stop( ); - // } - // if (sgv) { - // var freq = converter.freq(sgv.mgdl || 30); - // synth.triggerAttackRelease(parseInt(sgv.mgdl || sgv.sgv || sgv.glucose || 39) * 4, '8n', time); - // } - // } - - // var loop = new Tone.Loop(play_next, '4n'); - var loop; - function play_data ( ) { - var sgvs = Nightscout.client.sbx.data.sgvs.slice( ).map(glucose).map(converter.freq); - console.log('last two hours', sgvs.length); - var new_loop = createLoop(synth, sgvs); - if (loop) { - loop.stop( ); - loop.dispose( ); - loop = null; - } - loop = new_loop; - Nightscout.client.radio.loop = loop; - loop.start( ); - } - - Nightscout.client.radio = { - converter: converter - , synth: synth - , loop: loop - }; - - Nightscout.client.socket.on('dataUpdate', function ( ) { - play_data( ); - }); - $('#again').on('click', function ( ) { - play_data( ); - }); - Tone.Transport.start( ); - - }); -}); \ No newline at end of file diff --git a/static/report/css/mfb.min.css b/static/report/css/mfb.min.css deleted file mode 100644 index 0c4d5e49dfc4..000000000000 --- a/static/report/css/mfb.min.css +++ /dev/null @@ -1 +0,0 @@ -.mfb-component,.mfb-component--bl,.mfb-component--br,.mfb-component--tl,.mfb-component--tr{box-sizing:border-box;margin:25px;position:fixed;white-space:nowrap;z-index:30;padding-left:0;list-style:none}.mfb-component *,.mfb-component :after,.mfb-component :before,.mfb-component--bl *,.mfb-component--bl :after,.mfb-component--bl :before,.mfb-component--br *,.mfb-component--br :after,.mfb-component--br :before,.mfb-component--tl *,.mfb-component--tl :after,.mfb-component--tl :before,.mfb-component--tr *,.mfb-component--tr :after,.mfb-component--tr :before{box-sizing:inherit}.mfb-component--tl{left:0;top:0}.mfb-component--tr{right:0;top:0}.mfb-component--bl{left:0;bottom:0}.mfb-component--br{right:0;bottom:0}.mfb-component__button,.mfb-component__button--child,.mfb-component__button--main{background-color:#E40A5D;display:inline-block;border:none;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);cursor:pointer;outline:0;padding:0;position:relative;-webkit-user-drag:none;font-weight:700;color:#f1f1f1}.mfb-component__list{list-style:none;margin:0;padding:0}.mfb-component__list>li{display:block;position:absolute;top:0;right:1px;padding:10px 0;margin:-10px 0}.mfb-component__child-icon,.mfb-component__icon,.mfb-component__main-icon--active,.mfb-component__main-icon--resting{position:absolute;font-size:18px;text-align:center;line-height:56px;width:100%}.mfb-component__wrap{padding:25px;margin:-25px}[data-mfb-state=open] .mfb-component__child-icon,[data-mfb-state=open] .mfb-component__icon,[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__child-icon,[data-mfb-toggle=hover]:hover .mfb-component__icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}.mfb-component__button--main{height:56px;width:56px;z-index:20}.mfb-component__button--child{height:56px;width:56px}.mfb-component__main-icon--active,.mfb-component__main-icon--resting{-webkit-transform:scale(1) rotate(360deg);transform:scale(1) rotate(360deg);-webkit-transition:-webkit-transform 150ms cubic-bezier(.4,0,1,1);transition:transform 150ms cubic-bezier(.4,0,1,1)}.mfb-component__child-icon{line-height:56px;font-size:18px}.mfb-component__main-icon--active{opacity:0}[data-mfb-state=open] .mfb-component__main-icon,[data-mfb-toggle=hover]:hover .mfb-component__main-icon{-webkit-transform:scale(1) rotate(0deg);transform:scale(1) rotate(0deg)}[data-mfb-state=open] .mfb-component__main-icon--resting,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--resting{opacity:0}[data-mfb-state=open] .mfb-component__main-icon--active,[data-mfb-toggle=hover]:hover .mfb-component__main-icon--active{opacity:1}.mfb-component--tl.mfb-slidein .mfb-component__list li,.mfb-component--tr.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein .mfb-component__list li,.mfb-component--br.mfb-slidein .mfb-component__list li{opacity:0;transition:all .5s}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-slidein-spring .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px);transform:translateY(70px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px);transform:translateY(140px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px);transform:translateY(210px)}.mfb-component--tl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px);transform:translateY(280px)}.mfb-component--bl.mfb-slidein-spring .mfb-component__list li,.mfb-component--br.mfb-slidein-spring .mfb-component__list li{opacity:0;transition:all .5s cubic-bezier(.68,-.55,.265,1.55)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li,.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li{opacity:1}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px);transform:translateY(-70px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px);transform:translateY(-140px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px);transform:translateY(-210px)}.mfb-component--bl.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-slidein-spring[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px);transform:translateY(-280px)}.mfb-component--tl.mfb-zoomin .mfb-component__list li,.mfb-component--tr.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-zoomin .mfb-component__list li,.mfb-component--br.mfb-zoomin .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-zoomin[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}.mfb-component--tl.mfb-fountain .mfb-component__list li,.mfb-component--tr.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(0);transform:translateY(-70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(0);transform:translateY(-140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(0);transform:translateY(-210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(0);transform:translateY(-280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(1);transform:translateY(70px) scale(1);transition-delay:.05s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(1);transform:translateY(140px) scale(1);transition-delay:.1s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(1);transform:translateY(210px) scale(1);transition-delay:.15s}.mfb-component--tl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--tr.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(1);transform:translateY(280px) scale(1);transition-delay:.2s}.mfb-component--bl.mfb-fountain .mfb-component__list li,.mfb-component--br.mfb-fountain .mfb-component__list li{-webkit-transform:scale(0);transform:scale(0)}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1){-webkit-transform:translateY(70px) scale(0);transform:translateY(70px) scale(0);transition:all .5s;transition-delay:.15s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2){-webkit-transform:translateY(140px) scale(0);transform:translateY(140px) scale(0);transition:all .5s;transition-delay:.1s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3){-webkit-transform:translateY(210px) scale(0);transform:translateY(210px) scale(0);transition:all .5s;transition-delay:.05s}.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4){-webkit-transform:translateY(280px) scale(0);transform:translateY(280px) scale(0);transition:all .5s;transition-delay:0s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(1),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(1){-webkit-transform:translateY(-70px) scale(1);transform:translateY(-70px) scale(1);transition-delay:.05s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(2),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(2){-webkit-transform:translateY(-140px) scale(1);transform:translateY(-140px) scale(1);transition-delay:.1s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(3),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(3){-webkit-transform:translateY(-210px) scale(1);transform:translateY(-210px) scale(1);transition-delay:.15s}.mfb-component--bl.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--bl.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-state=open] .mfb-component__list li:nth-child(4),.mfb-component--br.mfb-fountain[data-mfb-toggle=hover]:hover .mfb-component__list li:nth-child(4){-webkit-transform:translateY(-280px) scale(1);transform:translateY(-280px) scale(1);transition-delay:.2s}[data-mfb-label]:after{content:attr(data-mfb-label);opacity:0;background:rgba(0,0,0,.4);padding:4px 10px;border-radius:3px;color:rgba(255,255,255,.8);font-size:13px;pointer-events:none;position:absolute;top:50%;margin-top:-10.5px;transition:all .5s}[data-mfb-state=open] [data-mfb-label]:after,[data-mfb-toggle=hover] [data-mfb-label]:hover:after{content:attr(data-mfb-label);opacity:1;transition:all .3s}.mfb-component--br .mfb-component__list [data-mfb-label]:after,.mfb-component--br [data-mfb-label]:after,.mfb-component--tr .mfb-component__list [data-mfb-label]:after,.mfb-component--tr [data-mfb-label]:after{content:attr(data-mfb-label);right:70px}.mfb-component--bl .mfb-component__list [data-mfb-label]:after,.mfb-component--bl [data-mfb-label]:after,.mfb-component--tl .mfb-component__list [data-mfb-label]:after,.mfb-component--tl [data-mfb-label]:after{content:attr(data-mfb-label);left:70px} \ No newline at end of file diff --git a/tests/profileeditor.test.js b/tests/profileeditor.test.js index cdca12764b7f..c55d9add3acc 100644 --- a/tests/profileeditor.test.js +++ b/tests/profileeditor.test.js @@ -87,7 +87,7 @@ describe('Profile editor', function ( ) { , mockProfileEditor: true , mockAjax: someData , benvRequires: [ - __dirname + '/../static/profile/js/profileeditor.js' + __dirname + '/../static/js/profileinit.js' ] }; headless.setup(opts, done); @@ -117,6 +117,8 @@ describe('Profile editor', function ( ) { return true; }; + window.Nightscout.profileclient(); + client.init(); client.dataUpdate(nowData); diff --git a/tests/reports.test.js b/tests/reports.test.js index f2332aa47d2a..947eb5e5b036 100644 --- a/tests/reports.test.js +++ b/tests/reports.test.js @@ -191,7 +191,7 @@ describe('reports', function ( ) { , serverSettings: serverSettings , mockSimpleAjax: someData , benvRequires: [ - __dirname + '/../static/report/js/report.js' + __dirname + '/../static/js/reportinit.js' ] }; headless.setup(opts, done); @@ -227,6 +227,8 @@ describe('reports', function ( ) { call(); }; + window.Nightscout.reportclient(); + client.init(function afterInit ( ) { client.dataUpdate(nowData); @@ -260,13 +262,14 @@ describe('reports', function ( ) { $('img.editTreatment:first').click(); $('.ui-button:contains("Save")').click(); - /* + var result = $('body').html(); + /* var filesys = require('fs'); var logfile = filesys.createWriteStream('out.txt', { flags: 'a'} ) logfile.write(result); console.log('RESULT', result); - + */ result.indexOf('Milk now').should.be.greaterThan(-1); // daytoday result.indexOf('50 g').should.be.greaterThan(-1); // daytoday result.indexOf('TDD average: 2.9U').should.be.greaterThan(-1); // daytoday @@ -276,7 +279,7 @@ describe('reports', function ( ) { result.indexOf('
').should.be.greaterThan(-1); //success result.indexOf('CAL: Scale: 1.10 Intercept: 31102 Slope: 776.91').should.be.greaterThan(-1); //calibrations result.indexOf('Correction Bolus250 (Sensor)0.75').should.be.greaterThan(-1); //treatments -*/ + done(); }); }); diff --git a/views/foodindex.html b/views/foodindex.html index 7168897467f5..38606b00d324 100644 --- a/views/foodindex.html +++ b/views/foodindex.html @@ -112,8 +112,8 @@ <%- include('partials/authentication-status') %> - + - + diff --git a/views/profileindex.html b/views/profileindex.html index d915d0c8cc84..a24bb0b71935 100644 --- a/views/profileindex.html +++ b/views/profileindex.html @@ -166,8 +166,8 @@ <%- include('partials/authentication-status') %> - + - + diff --git a/views/reportindex.html b/views/reportindex.html index ea1284b6cd46..235dea41b610 100644 --- a/views/reportindex.html +++ b/views/reportindex.html @@ -124,8 +124,8 @@ - + \ No newline at end of file From 3ee90d69277f58dc501eccb1a5ff013455969013 Mon Sep 17 00:00:00 2001 From: Jeremy Cunningham <34543464+jpcunningh@users.noreply.github.com> Date: Sun, 17 Jan 2021 07:31:31 -0600 Subject: [PATCH 010/129] feat: disable pump battery alarms at night option (#5359) * feat: add feature to disable pump battery alarms at night * add timezone handling for server side * Update pump.test.js * Update pump.test.js * Update pump.test.js Co-authored-by: Jeremy Cunningham Co-authored-by: Sulka Haro --- README.md | 3 +++ lib/plugins/pump.js | 25 ++++++++++++++----- lib/settings.js | 2 ++ tests/pump.test.js | 61 ++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 79 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b68608412427..a0ee207f8f18 100644 --- a/README.md +++ b/README.md @@ -294,6 +294,8 @@ To learn more about the Nightscout API, visit https://YOUR-SITE.com/api-docs/ or ### Predefined values for your browser settings (optional) * `TIME_FORMAT` (`12`)- possible values `12` or `24` + * `DAY_START` (`7.0`) - time for start of day (0.0 - 24.0) for features using day time / night time options + * `DAY_END` (`21.0`) - time for end of day (0.0 - 24.0) for features using day time / night time options * `NIGHT_MODE` (`off`) - possible values `on` or `off` * `SHOW_RAWBG` (`never`) - possible values `always`, `never` or `noise` * `CUSTOM_TITLE` (`Nightscout`) - Title for the main view @@ -511,6 +513,7 @@ To learn more about the Nightscout API, visit https://YOUR-SITE.com/api-docs/ or * `PUMP_URGENT_BATT_P` (`20`) - The % of the pump battery remaining, an urgent alarm will be triggered when dropping below this threshold. * `PUMP_WARN_BATT_V` (`1.35`) - The voltage (if percent isn't available) of the pump battery, a warning will be triggered when dropping below this threshold. * `PUMP_URGENT_BATT_V` (`1.30`) - The voltage (if percent isn't available) of the pump battery, an urgent alarm will be triggered when dropping below this threshold. + * `PUMP_WARN_BATT_QUIET_NIGHT` (`false`) - Do not generate battery alarms at night. ##### `openaps` (OpenAPS) Integrated OpenAPS loop monitoring, uses these extended settings: diff --git a/lib/plugins/pump.js b/lib/plugins/pump.js index 21b1261739b6..8a0d397a3009 100644 --- a/lib/plugins/pump.js +++ b/lib/plugins/pump.js @@ -34,6 +34,14 @@ function init (ctx) { var retroFields = cleanList(sbx.extendedSettings.retroFields); retroFields = isEmpty(retroFields) ? ['reservoir', 'battery'] : retroFields; + var profile = sbx.data.profile; + var warnBattQuietNight = sbx.extendedSettings.warnBattQuietNight; + + if (warnBattQuietNight && (!profile || !profile.hasData() || !profile.getTimezone())) { + console.warn('PUMP_WARN_BATT_QUIET_NIGHT requires a treatment profile with time zone set to obtain user time zone'); + warnBattQuietNight = false; + } + return { fields: fields , retroFields: retroFields @@ -47,6 +55,9 @@ function init (ctx) { , urgentBattP: sbx.extendedSettings.urgentBattP || 20 , warnOnSuspend: sbx.extendedSettings.warnOnSuspend || false , enableAlerts: sbx.extendedSettings.enableAlerts || false + , warnBattQuietNight: warnBattQuietNight || false + , dayStart: sbx.settings.dayStart + , dayEnd: sbx.settings.dayEnd }; }; @@ -246,17 +257,17 @@ function init (ctx) { } } - function updateBattery (type, prefs, result) { + function updateBattery (type, prefs, result, batteryWarn) { if (result.battery) { result.battery.label = 'Battery'; result.battery.display = result.battery.value + type; var urgent = type === 'v' ? prefs.urgentBattV : prefs.urgentBattP; var warn = type === 'v' ? prefs.warnBattV : prefs.warnBattP; - if (result.battery.value < urgent) { + if (result.battery.value < urgent && batteryWarn) { result.battery.level = levels.URGENT; result.battery.message = 'URGENT: Pump Battery Low'; - } else if (result.battery.value < warn) { + } else if (result.battery.value < warn && batteryWarn) { result.battery.level = levels.WARN; result.battery.message = 'Warning, Pump Battery Low'; } else { @@ -300,7 +311,9 @@ function init (ctx) { function prepareData (prop, prefs, sbx) { var pump = (prop && prop.pump) || { }; - + var time = (sbx.data.profile && sbx.data.profile.getTimezone()) ? moment(sbx.time).tz(sbx.data.profile.getTimezone()) : moment(sbx.time); + var now = time.hours() + time.minutes() / 60.0 + time.seconds() / 3600.0; + var batteryWarn = !(prefs.warnBattQuietNight && (now < prefs.dayStart || now > prefs.dayEnd)); var result = { level: levels.NONE , clock: pump.clock ? { value: moment(pump.clock) } : null @@ -317,10 +330,10 @@ function init (ctx) { if (pump.battery && pump.battery.percent) { result.battery = { value: pump.battery.percent, unit: 'percent' }; - updateBattery('%', prefs, result); + updateBattery('%', prefs, result, batteryWarn); } else if (pump.battery && pump.battery.voltage) { result.battery = { value: pump.battery.voltage, unit: 'volts'}; - updateBattery('v', prefs, result); + updateBattery('v', prefs, result, batteryWarn); } result.device = { label: translate('Device'), display: prop.device }; diff --git a/lib/settings.js b/lib/settings.js index 9b220ec746b4..0982c63a8213 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -8,6 +8,8 @@ function init () { var settings = { units: 'mg/dl' , timeFormat: 12 + , dayStart: 7.0 + , dayEnd: 21.0 , nightMode: false , editMode: true , showRawbg: 'never' diff --git a/tests/pump.test.js b/tests/pump.test.js index dc072c7fabef..6b38f814183b 100644 --- a/tests/pump.test.js +++ b/tests/pump.test.js @@ -13,6 +13,7 @@ var top_ctx = { top_ctx.language.set('en'); var env = require('../env')(); var levels = require('../lib/levels'); +var profile = require('../lib/profilefunctions')(); top_ctx.levels = levels; var pump = require('../lib/plugins/pump')(top_ctx); var sandbox = require('../lib/sandbox')(top_ctx); @@ -51,6 +52,10 @@ var statuses = [{ } }]; +var profileData = +{ + 'timezone': moment.tz.guess() +}; var statuses2 = [{ created_at: '2015-12-05T17:35:00.000Z' @@ -183,7 +188,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: statuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -211,7 +216,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowResStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -240,7 +245,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowResStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -270,7 +275,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowBattStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -299,7 +304,7 @@ describe('pump', function ( ) { var sbx = sandbox.clientInit(ctx, now.valueOf(), { devicestatus: lowBattStatuses }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); @@ -310,6 +315,50 @@ describe('pump', function ( ) { done(); }); + it('not generate a battery alarm during night when PUMP_WARN_BATT_QUIET_NIGHT is true', function (done) { + var ctx = { + settings: { + units: 'mg/dl' + , dayStart: 24 // Set to 24 so it always evaluates true in test + , dayEnd: 21.0 + } + , pluginBase: { + updatePillText: function mockedUpdatePillText(plugin, options) { + options.label.should.equal('Pump'); + options.value.should.equal('86.4U'); + done(); + } + } + , notifications: require('../lib/notifications')(env, top_ctx) + , language: require('../lib/language')() + , levels: levels + }; + + ctx.notifications.initRequests(); + + var lowBattStatuses = _.cloneDeep(statuses); + lowBattStatuses[1].pump.battery.voltage = 1.00; + + var sbx = sandbox.clientInit(ctx, now.valueOf(), { + devicestatus: lowBattStatuses + , profiles: [profileData] + }); + profile.loadData(_.cloneDeep([profileData])); + sbx.data.profile = profile; + + sbx.extendedSettings = { + enableAlerts: true + , warnBattQuietNight: true + }; + pump.setProperties(sbx); + pump.checkNotifications(sbx); + + var highest = ctx.notifications.findHighestAlarm('Pump'); + should.not.exist(highest); + + done(); + }); + it('not generate an alert for a stale pump data, when there is an offline marker', function (done) { var ctx = { settings: { @@ -326,7 +375,7 @@ describe('pump', function ( ) { devicestatus: statuses , treatments: [{eventType: 'OpenAPS Offline', mills: now.valueOf(), duration: 60}] }); - sbx.extendedSettings = { 'enableAlerts': 'TRUE' }; + sbx.extendedSettings = { 'enableAlerts': true }; pump.setProperties(sbx); pump.checkNotifications(sbx); From ccd591d4efa3916137ccb56e3b8bcad5d44d0fe7 Mon Sep 17 00:00:00 2001 From: Jakob Date: Sun, 17 Jan 2021 09:45:42 -0800 Subject: [PATCH 011/129] Add eslint security plugin (#5450) Co-authored-by: Jakob Sandberg Co-authored-by: Sulka Haro --- .eslintrc.js | 7 +++++-- npm-shrinkwrap.json | 9 +++++++++ package.json | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 974a562c7c61..69cb41cb4916 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,10 @@ module.exports = { - "plugins": [ ], + "plugins": [ + "security" + ], "extends": [ - "eslint:recommended" + "eslint:recommended", + "plugin:security/recommended" ], "parser": "babel-eslint", "env": { diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 765f8d59121a..ed9d903b610c 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -3737,6 +3737,15 @@ "rimraf": "^2.6.1" } }, + "eslint-plugin-security": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-1.4.0.tgz", + "integrity": "sha512-xlS7P2PLMXeqfhyf3NpqbvbnW04kN8M9NtmhpR3XGyOvt/vNKS7XPXT5EDbwKW9vCjWH4PpfQvgD/+JgN0VJKA==", + "dev": true, + "requires": { + "safe-regex": "^1.1.0" + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", diff --git a/package.json b/package.json index 63f765b4e3d5..8498fd3bcd35 100644 --- a/package.json +++ b/package.json @@ -140,6 +140,7 @@ "env-cmd": "^10.1.0", "eslint": "^6.8.0", "eslint-loader": "^2.2.1", + "eslint-plugin-security": "^1.4.0", "mocha": "^8.1.1", "nodemon": "^1.19.4", "nyc": "^14.1.1", From f6f7e18888f1e3fa719c17ca635c70f768a05c31 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 17 Jan 2021 18:46:28 +0100 Subject: [PATCH 012/129] Allow api3 behind reverse proxy (#5631) * Allow api3 behind reverse proxy * fix test Co-authored-by: Sulka Haro --- lib/api3/security.js | 10 +++++----- tests/api3.security.test.js | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/api3/security.js b/lib/api3/security.js index 1488a0ee3b87..6d6afe21055c 100644 --- a/lib/api3/security.js +++ b/lib/api3/security.js @@ -56,10 +56,10 @@ function authenticate (opCtx) { return resolve({ shiros: [ adminShiro ] }); } - if (req.protocol !== 'https') { - return reject( - opTools.sendJSONStatus(res, apiConst.HTTP.FORBIDDEN, apiConst.MSG.HTTP_403_NOT_USING_HTTPS)); - } +// if (req.protocol !== 'https') { +// return reject( +// opTools.sendJSONStatus(res, apiConst.HTTP.FORBIDDEN, apiConst.MSG.HTTP_403_NOT_USING_HTTPS)); +// } const checkDateResult = checkDateHeader(opCtx); if (checkDateResult !== true) { @@ -123,4 +123,4 @@ module.exports = { authenticate, checkPermission, demandPermission -}; \ No newline at end of file +}; diff --git a/tests/api3.security.test.js b/tests/api3.security.test.js index 0e88e9fae195..7cd811acfe6f 100644 --- a/tests/api3.security.test.js +++ b/tests/api3.security.test.js @@ -33,16 +33,16 @@ describe('Security of REST API3', function() { }); - it('should require HTTPS', async () => { - if (semver.gte(process.version, '10.0.0')) { - let res = await request(self.http.baseUrl) // hangs on 8.x.x (no reason why) - .get('/api/v3/test') - .expect(403); - - res.body.status.should.equal(403); - res.body.message.should.equal(apiConst.MSG.HTTP_403_NOT_USING_HTTPS); - } - }); +// it('should require HTTPS', async () => { +// if (semver.gte(process.version, '10.0.0')) { +// let res = await request(self.http.baseUrl) // hangs on 8.x.x (no reason why) +// .get('/api/v3/test') +// .expect(403); +// +// res.body.status.should.equal(403); +// res.body.message.should.equal(apiConst.MSG.HTTP_403_NOT_USING_HTTPS); +// } +// }); it('should require Date header', async () => { @@ -186,4 +186,4 @@ describe('Security of REST API3', function() { .expect(200); }); -}); \ No newline at end of file +}); From 14872695ba1ae8d9477b610fefc06993c6e81bbe Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 17 Jan 2021 20:08:14 +0200 Subject: [PATCH 013/129] Move to package-lock, as per #5735 --- npm-shrinkwrap.json => package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename npm-shrinkwrap.json => package-lock.json (99%) diff --git a/npm-shrinkwrap.json b/package-lock.json similarity index 99% rename from npm-shrinkwrap.json rename to package-lock.json index ed9d903b610c..e04b32ee1edf 100644 --- a/npm-shrinkwrap.json +++ b/package-lock.json @@ -6970,9 +6970,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "log-symbols": { "version": "2.2.0", From 8500a1b33d8c0b7657d9e7e513101a4c4fd5b64f Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 17 Jan 2021 20:32:40 +0200 Subject: [PATCH 014/129] New Crowdin updates (#6713) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Norwegian Bokmal) * New translations en.json (Greek) * New translations en.json (French) * New translations en.json (Dutch) * New translations en.json (Greek) * New translations en.json (Swedish) * New translations en.json (Czech) * New translations en.json (Russian) * New translations en.json (Romanian) * Update source file en.json * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * New translations en.json (Romanian) * New translations en.json (Hebrew) * New translations en.json (Norwegian Bokmal) * New translations en.json (Hungarian) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Turkish) * New translations en.json (Slovenian) * New translations en.json (Polish) * New translations en.json (Dutch) * New translations en.json (Korean) * New translations en.json (Japanese) * New translations en.json (Italian) * New translations en.json (Finnish) * New translations en.json (Norwegian Bokmal) * New translations en.json (German) * New translations en.json (Danish) * New translations en.json (Czech) * New translations en.json (Bulgarian) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Swedish) * New translations en.json (Greek) * New translations en.json (Croatian) * Update source file en.json * New translations en.json (Norwegian Bokmal) * New translations en.json (Greek) * New translations en.json (Swedish) * New translations en.json (German) * New translations en.json (Russian) * New translations en.json (Czech) * New translations en.json (German) * New translations en.json (Hungarian) * New translations en.json (Hungarian) * New translations en.json (Dutch) * New translations en.json (Hebrew) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Danish) * New translations en.json (Portuguese, Brazilian) --- translations/bg_BG.json | 13 +- translations/cs_CZ.json | 13 +- translations/da_DK.json | 43 +++--- translations/de_DE.json | 13 +- translations/el_GR.json | 21 ++- translations/es_ES.json | 327 ++++++++++++++++++++-------------------- translations/fi_FI.json | 13 +- translations/fr_FR.json | 163 ++++++++++---------- translations/he_IL.json | 57 ++++--- translations/hr_HR.json | 13 +- translations/hu_HU.json | 327 ++++++++++++++++++++-------------------- translations/it_IT.json | 13 +- translations/ja_JP.json | 13 +- translations/ko_KR.json | 13 +- translations/nb_NO.json | 13 +- translations/nl_NL.json | 13 +- translations/pl_PL.json | 13 +- translations/pt_BR.json | 39 +++-- translations/ro_RO.json | 13 +- translations/ru_RU.json | 41 ++--- translations/sl_SI.json | 13 +- translations/sv_SE.json | 15 +- translations/tr_TR.json | 13 +- translations/zh_CN.json | 13 +- translations/zh_TW.json | 13 +- 25 files changed, 708 insertions(+), 533 deletions(-) diff --git a/translations/bg_BG.json b/translations/bg_BG.json index dccd84a92368..c9d4b279a7d4 100644 --- a/translations/bg_BG.json +++ b/translations/bg_BG.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Отрицателен временен базален инсулин", "Total basal insulin:": "Общо базален инсулин", "Total daily insulin:": "Общо инсулин за деня", - "Unable to %1 Role": "Невъзможно да %1 Роля", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Невъзможно изтриването на Роля", "Database contains %1 roles": "Базата данни съдържа %1 роли", "Edit Role": "Промени Роля", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Субекти - Хора,Устройства,т.н.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Всеки обект ще има уникален ключ за достъп и 1 или повече роли. Кликнете върху ключа за достъп, за да отворите нов изглед с избрания обект, тази секретна връзка може след това да се споделя", "Add new Subject": "Добави нов субект", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Невъзможно изтриването на субекта", "Database contains %1 subjects": "Базата данни съдържа %1 субекти", "Edit Subject": "Промени субект", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/cs_CZ.json b/translations/cs_CZ.json index 87d1dad71138..89acea2a310e 100644 --- a/translations/cs_CZ.json +++ b/translations/cs_CZ.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativní dočasný bazální inzulín:", "Total basal insulin:": "Celkový bazální inzulín:", "Total daily insulin:": "Celkový denní inzulín:", - "Unable to %1 Role": "Chyba volání %1 Role", + "Unable to save Role": "Role nelze uložit", "Unable to delete Role": "Nelze odstranit Roli", "Database contains %1 roles": "Databáze obsahuje %1 rolí", "Edit Role": "Editovat roli", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekty - Lidé, zařízení atd.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý subjekt má svůj unikátní token a 1 nebo více rolí. Klikem na přístupový token se otevře nové okno pro tento subjekt. Tento link je možné sdílet.", "Add new Subject": "Přidat nový subjekt", - "Unable to %1 Subject": "Nelze %1 Subjekt", + "Unable to save Subject": "Subjekt nelze uložit", "Unable to delete Subject": "Nelze odstranit Subjekt", "Database contains %1 subjects": "Databáze obsahuje %1 subjektů", "Edit Subject": "Editovat subjekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. To odpovídá %2% dostupného místa v databázi.", "virtAsstTitleDatabaseSize": "Velikost databáze", "Carbs/Food/Time": "Sacharidy/Jídlo/Čas", + "You have administration messages": "Máte zprávy pro administrátora", + "Admin messages in queue": "Ve frontě jsou zprávy pro adminstrátora", + "Queue empty": "Fronta je prázdná", + "There are no admin messages in queue": "Ve frontě nejsou žádné zprávy pro administrátora", + "Please sign in using the API_SECRET to see your administration messages": "Pro zobrazení zpráv pro administrátora se přihlašte pomocí API_SECRET", "Reads enabled in default permissions": "Ve výchozích oprávněních je čtení povoleno", "Data reads enabled": "Čtení dat povoleno", "Data writes enabled": "Zápis dat povolen", @@ -685,5 +690,7 @@ "Auth role": "Autorizační role", "view without token": "zobrazit bez tokenu", "Remove stored token": "Odstranit uložený token", - "Weekly Distribution": "Týdenní rozložení" + "Weekly Distribution": "Týdenní rozložení", + "Failed authentication": "Ověření selhalo", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Zařízení s IP adresou %1 se pokusilo o příhlášení do Nightscoutu s nesprávnými údaji. Zkontrolujte, zda nemáte v uploaderu nastaveno špatné API_SECRET nebo token." } diff --git a/translations/da_DK.json b/translations/da_DK.json index 8585c0e0c22d..dc21df58a64b 100644 --- a/translations/da_DK.json +++ b/translations/da_DK.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Sidste 2 uger", "Last month": "Sidste måned", "Last 3 months": "Sidste 3 måneder", - "between": "between", - "around": "around", - "and": "and", + "between": "mellem", + "around": "omkring", + "and": "og", "From": "Fra", "To": "Til", "Notes": "Noter", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Tomt resultat", "Day to day": "Dag til dag", - "Week to week": "Week to week", + "Week to week": "Uge til uge", "Daily Stats": "Daglig statistik", "Percentile Chart": "Procentgraf", - "Distribution": "Distribution", + "Distribution": "Fordeling", "Hourly stats": "Timestatistik", "netIOB stats": "netIOB statistik", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "temp basals must be rendered to display this report": "temp basaler skal være tilgængelige for at vise denne rapport", "No data available": "Mangler data", "Low": "Lav", "In Range": "Indenfor intervallet", @@ -85,7 +85,7 @@ "# of Readings": "Antal aflæsninger", "Mean": "Gennemsnit", "Standard Deviation": "Standardafvigelse", - "Max": "Max", + "Max": "Maks", "Min": "Min", "A1c estimation*": "Beregnet A1c-værdi ", "Weekly Success": "Uge resultat", @@ -94,7 +94,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Mangler API-nøgle. Du skal indtaste API nøglen", "Database loaded": "Database indlæst", "Error: Database failed to load": "Fejl: Database kan ikke indlæses", - "Error": "Error", + "Error": "Fejl", "Create new record": "Opret ny post", "Save record": "Gemmer post", "Portions": "Portioner", @@ -112,14 +112,14 @@ "Not loaded": "Ikke indlæst", "Food Editor": "Mad editor", "Your database": "Din database", - "Filter": "Filter", + "Filter": "Filtrer", "Save": "Gem", "Clear": "Rense", "Record": "Post", "Quick picks": "Hurtig valg", "Show hidden": "Vis skjulte", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Din API kode", + "Remember this device. (Do not enable this on public computers.)": "Husk denne enhed. (Aktiver ikke dette på offentlige computere)", "Treatments": "Behandling", "Time": "Tid", "Event Type": "Hændelsestype", @@ -147,7 +147,7 @@ "Insulin needed": "Insulin påkrævet", "Carbs needed": "Kulhydrater påkrævet", "Carbs needed if Insulin total is negative value": "Kulhydrater er nødvendige når total insulin mængde er negativ", - "Basal rate": "Basal rate", + "Basal rate": "Basalrate", "60 minutes earlier": "60 min tidligere", "45 minutes earlier": "45 min tidligere", "30 minutes earlier": "30 min tidigere", @@ -205,7 +205,7 @@ "Snack Bolus": "Mellemmåltidsbolus", "Correction Bolus": "Korrektionsbolus", "Carb Correction": "Kulhydratskorrektion", - "Note": "Note", + "Note": "Kommentar", "Question": "Spørgsmål", "Exercise": "Træning", "Pump Site Change": "Skift insulin infusionssted", @@ -301,7 +301,7 @@ "Record %1 removed ...": "Indgang %1 fjernet ...", "Error removing record %1": "Fejl ved fjernelse af indgang %1", "Deleting records ...": "Sletter indgange ...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 poster slettet", "Clean Mongo status database": "Slet Mongo status database", "Delete all documents from devicestatus collection": "Fjerne alle dokumenter fra device status tabellen", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Denne handling fjerner alle dokumenter fra device status tabellen. Brugbart når uploader batteri status ikke opdateres korrekt.", @@ -309,7 +309,7 @@ "Delete all documents from devicestatus collection?": "Fjern alle dokumenter fra device status tabellen", "Database contains %1 records": "Databasen indeholder %1 indgange", "All records removed ...": "Alle hændelser fjernet ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", + "Delete all documents from devicestatus collection older than 30 days": "Fjerne alle dokumenter fra device status tabellen", "Number of Days to Keep:": "Number of Days to Keep:", "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativ midlertidig basalinsulin:", "Total basal insulin:": "Total daglig basalinsulin:", "Total daily insulin:": "Total dagsdosis insulin", - "Unable to %1 Role": "Kan ikke slette %1 rolle", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Kan ikke slette rolle", "Database contains %1 roles": "Databasen indeholder %1 roller", "Edit Role": "Rediger rolle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Emner - Brugere, Enheder, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hvert emne vil have en unik sikkerhedsnøgle samt en eller flere roller. Klik på sikkerhedsnøglen for at åbne et nyt view med det valgte emne, dette hemmelige link kan derefter blive delt.", "Add new Subject": "Tilføj nye emner", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Kan ikke slette emne", "Database contains %1 subjects": "Databasen indeholder %1 emner", "Edit Subject": "Rediger emne", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/de_DE.json b/translations/de_DE.json index 69f83fb8c086..3e363f76acb6 100644 --- a/translations/de_DE.json +++ b/translations/de_DE.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatives temporäres Basal Insulin:", "Total basal insulin:": "Gesamt Basal Insulin:", "Total daily insulin:": "Gesamtes tägliches Insulin:", - "Unable to %1 Role": "Fehler bei der %1 Rolle", + "Unable to save Role": "Rolle kann nicht gespeichert werden", "Unable to delete Role": "Rolle nicht löschbar", "Database contains %1 roles": "Datenbank enthält %1 Rollen", "Edit Role": "Rolle editieren", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekte - Menschen, Geräte, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jedes Subjekt erhält einen einzigartigen Zugriffsschlüssel und eine oder mehrere Rollen. Klicke auf den Zugriffsschlüssel, um eine neue Ansicht mit dem ausgewählten Subjekt zu erhalten. Dieser geheime Link kann geteilt werden.", "Add new Subject": "Füge ein neues Subjekt hinzu", - "Unable to %1 Subject": "Kann Subjekt nicht %1", + "Unable to save Subject": "Subjekt kann nicht gespeichert werden", "Unable to delete Subject": "Kann Subjekt nicht löschen", "Database contains %1 subjects": "Datenbank enthält %1 Subjekte", "Edit Subject": "Editiere Subjekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Das sind %2% des verfügbaren Datenbank-Speicherplatzes.", "virtAsstTitleDatabaseSize": "Datenbank-Dateigröße", "Carbs/Food/Time": "Kohlenhydrate/Nahrung/Zeit", + "You have administration messages": "Neue Admin-Nachrichten liegen vor", + "Admin messages in queue": "Admin-Nachrichten in Warteschlange", + "Queue empty": "Warteschlange leer", + "There are no admin messages in queue": "Keine Admin-Nachrichten in der Warteschlange", + "Please sign in using the API_SECRET to see your administration messages": "Bitte melde dich mit dem API_SECRET an, um die Admin-Nachrichten sehen zu können", "Reads enabled in default permissions": "Leseberechtigung aktiviert durch Standardberechtigungen", "Data reads enabled": "Daten lesen aktiviert", "Data writes enabled": "Datenschreibvorgänge aktiviert", @@ -685,5 +690,7 @@ "Auth role": "Auth-Rolle", "view without token": "Ohne Token anzeigen", "Remove stored token": "Gespeichertes Token entfernen", - "Weekly Distribution": "Wöchentliche Verteilung" + "Weekly Distribution": "Wöchentliche Verteilung", + "Failed authentication": "Authentifizierung fehlgeschlagen", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Ein Gerät mit der IP-Adresse %1 hat versucht sich mit falschen Zugangsdaten bei Nightscout anzumelden. Prüfe, ob einer deiner Uploader ein falsches API_SECRET oder Token verwendet." } diff --git a/translations/el_GR.json b/translations/el_GR.json index 80c91bb40c3b..a0d254789f0d 100644 --- a/translations/el_GR.json +++ b/translations/el_GR.json @@ -124,7 +124,7 @@ "Time": "Ώρα", "Event Type": "Ενέργεια", "Blood Glucose": "Γλυκόζη Αίματος", - "Entered By": "Εισήχθη από", + "Entered By": "Εισαγωγή από", "Delete this treatment?": "Διαγραφή ενέργειας", "Carbs Given": "Υδατάνθρακες", "Insulin Given": "Ινσουλίνη", @@ -204,7 +204,7 @@ "Meal Bolus": "Ινσουλίνη Γέυματος", "Snack Bolus": "Ινσουλίνη Σνακ", "Correction Bolus": "Διόρθωση με Ινσουλίνη", - "Carb Correction": "Διόρθωση με Υδατάνθρακεςς", + "Carb Correction": "Διόρθωση με Υδατάνθρακες", "Note": "Σημείωση", "Question": "Ερώτηση", "Exercise": "Άσκηση", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Αρνητική βασική ινσουλίνη", "Total basal insulin:": "Συνολική Βασική Ινσουλίνη (BASAL)", "Total daily insulin:": "Συνολική Ημερήσια Ινσουλίνη", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Δεν ήταν δυνατή η αποθήκευση του Ρόλου", "Unable to delete Role": "Unable to delete Role", "Database contains %1 roles": "Database contains %1 roles", "Edit Role": "Επεξεργασία ρόλου", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Δεν ήταν δυνατή η αποθήκευση του Θέματος", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", @@ -529,7 +529,7 @@ "Sensor Start": "Sensor Start", "days": "days", "Insulin distribution": "Insulin distribution", - "To see this report, press SHOW while in this view": "To see this report, press SHOW while in this view", + "To see this report, press SHOW while in this view": "Για να δείτε την αναφορά, πιέστε το κουμπί \"ΕΜΦΑΝΙΣΗ\".", "AR2 Forecast": "AR2 Forecast", "OpenAPS Forecasts": "OpenAPS Forecasts", "Temporary Target": "Temporary Target", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Διαθέσιμα μηνύματα διαχείρισης", + "Queue empty": "Σειρά μηνυμάτων κενή", + "There are no admin messages in queue": "Δεν υπάρχουν αδιάβαστα μηνύματα διαχείρισης", + "Please sign in using the API_SECRET to see your administration messages": "Παρακαλούμε συνδεθείτε χρησιμοποιώντας το API_SECRET για να δείτε τα μηνύματα διαχείρισης", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -672,7 +677,7 @@ "Note that time shift is available only when viewing multiple days.": "Note that time shift is available only when viewing multiple days.", "Please select a maximum of two weeks duration and click Show again.": "Please select a maximum of two weeks duration and click Show again.", "Show profiles table": "Show profiles table", - "Show predictions": "Show predictions", + "Show predictions": "Εμφάνιση προβλέψεων", "Timeshift on meals larger than": "Timeshift on meals larger than", "g carbs": "g carbs'", "consumed between": "consumed between", @@ -685,5 +690,7 @@ "Auth role": "Πιστοποίηση ρόλου", "view without token": "view without token", "Remove stored token": "Αφαίρεση αποθηκευμένου token", - "Weekly Distribution": "Εκτίμηση γλυκοζυλιωμένης - 7 ημέρες" + "Weekly Distribution": "Εκτίμηση γλυκοζυλιωμένης - 7 ημέρες", + "Failed authentication": "Αποτυχία ταυτοποίησης στοιχείων", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Έγινε προσπάθεια πιστοποίησης στο Nightscout μια συσκευής από τη διεύθυνση IP %1 με λάθος διαπιστευτήρια. Ελέγξτε αν έχετε ρυθμίσει τον uploader με λάθος API_SECRET ή token." } diff --git a/translations/es_ES.json b/translations/es_ES.json index 64754df51a58..999753d914f9 100644 --- a/translations/es_ES.json +++ b/translations/es_ES.json @@ -42,8 +42,8 @@ "Loading profile": "Cargando perfil", "Loading status": "Cargando estado", "Loading food database": "Cargando base de datos de alimentos", - "not displayed": "No mostrado", - "Loading CGM data of": "Cargando datos de CGM de", + "not displayed": "no mostrado", + "Loading CGM data of": "Cargando datos de MCG de", "Loading treatments data of": "Cargando datos de tratamientos de", "Processing data of": "Procesando datos de", "Portion": "Porción", @@ -59,7 +59,7 @@ "Distribution": "Distribución", "Hourly stats": "Estadísticas por hora", "netIOB stats": "estadísticas netIOB", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "temp basals must be rendered to display this report": "basales temporales deben ser terminadas para mostrar este informe", "No data available": "No hay datos disponibles", "Low": "Bajo", "In Range": "En rango", @@ -78,15 +78,15 @@ "Glucose Percentile report": "Informe de percetiles de glucemia", "Glucose distribution": "Distribución de glucemias", "days total": "Total de días", - "Total per day": "Total de días", + "Total per day": "Total por días", "Overall": "General", "Range": "Intervalo", "% of Readings": "% de valores", "# of Readings": "N° de valores", "Mean": "Media", "Standard Deviation": "Desviación estándar", - "Max": "Max", - "Min": "Min", + "Max": "Máx", + "Min": "Mín", "A1c estimation*": "Estimación de HbA1c*", "Weekly Success": "Resultados semanales", "There is not sufficient data to run this report. Select more days.": "No hay datos suficientes para generar este informe. Seleccione más días.", @@ -118,16 +118,16 @@ "Record": "Guardar", "Quick picks": "Selección rápida", "Show hidden": "Mostrar ocultos", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Tu API secret o token", + "Remember this device. (Do not enable this on public computers.)": "Recordar este dispositivo. (No activar esto en ordenadores públicos.)", "Treatments": "Tratamientos", "Time": "Hora", "Event Type": "Tipo de evento", "Blood Glucose": "Glucemia", "Entered By": "Introducido por", "Delete this treatment?": "¿Borrar este tratamiento?", - "Carbs Given": "Hidratos de carbono dados", - "Insulin Given": "Insulina", + "Carbs Given": "Hidratos de carbono puestos", + "Insulin Given": "Insulina introducida", "Event Time": "Hora del evento", "Please verify that the data entered is correct": "Por favor, verifique que los datos introducidos son correctos", "BG": "Glucemia en sangre", @@ -165,7 +165,7 @@ "Other": "Otro", "Submit Form": "Enviar formulario", "Profile Editor": "Editor de perfil", - "Reports": "Herramienta de informes", + "Reports": "Informes", "Add food from your database": "Añadir alimento a su base de datos", "Reload database": "Recargar base de datos", "Add": "Añadir", @@ -210,7 +210,7 @@ "Exercise": "Ejercicio", "Pump Site Change": "Cambio de catéter", "CGM Sensor Start": "Inicio de sensor", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "Detener sensor MCG", "CGM Sensor Insert": "Cambio de sensor", "Dexcom Sensor Start": "Inicio de sensor Dexcom", "Dexcom Sensor Change": "Cambio de sensor Dexcom", @@ -223,9 +223,9 @@ "Amount in units": "Cantidad en unidades", "View all treatments": "Visualizar todos los tratamientos", "Enable Alarms": "Activar las alarmas", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", - "Pump Battery change overdue!": "Pump Battery change overdue!", + "Pump Battery Change": "Cambio batería bomba", + "Pump Battery Low Alarm": "Alarma de Bomba Baja", + "Pump Battery change overdue!": "Cambio de batería de bomba atrasado!", "When enabled an alarm may sound.": "Cuando estén activas, una alarma podrá sonar", "Urgent High Alarm": "Alarma de glucemia alta urgente", "High Alarm": "Alarma de glucemia alta", @@ -250,7 +250,7 @@ "Reset, and use defaults": "Inicializar y utilizar los valores por defecto", "Calibrations": "Calibraciones", "Alarm Test / Smartphone Enable": "Test de Alarma / Activar teléfono", - "Bolus Wizard": "Calculo Bolos sugeridos", + "Bolus Wizard": "Calculador Bolos", "in the future": "en el futuro", "time ago": "tiempo atrás", "hr ago": "hr atrás", @@ -277,7 +277,7 @@ "Add new": "Añadir nuevo", "g": "gr", "ml": "ml", - "pcs": "pcs", + "pcs": "pza", "Drag&drop food here": "Arrastre y suelte aquí alimentos", "Care Portal": "Portal cuidador", "Medium/Unknown": "Medio/Desconocido", @@ -301,7 +301,7 @@ "Record %1 removed ...": "Registro %1 eliminado ...", "Error removing record %1": "Error al eliminar registro %1", "Deleting records ...": "Eliminando registros ...", - "%1 records deleted": "%1 records deleted", + "%1 records deleted": "%1 registros eliminados", "Clean Mongo status database": "Limpiar estado de la base de datos Mongo", "Delete all documents from devicestatus collection": "Borrar todos los documentos desde colección devicesatatus", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Este comando elimina todos los documentos desde la colección devicestatus. Útil cuando el estado de la batería cargadora no se actualiza correctamente", @@ -309,21 +309,21 @@ "Delete all documents from devicestatus collection?": "Borrar todos los documentos desde la colección devicestatus?", "Database contains %1 records": "La Base de datos contiene %1 registros", "All records removed ...": "Todos los registros eliminados ...", - "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", - "Clean Mongo entries (glucose entries) database": "Clean Mongo entries (glucose entries) database", - "Delete all documents from entries collection older than 180 days": "Delete all documents from entries collection older than 180 days", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents": "Delete old documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", - "%1 is not a valid number": "%1 is not a valid number", - "%1 is not a valid number - must be more than 2": "%1 is not a valid number - must be more than 2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", + "Delete all documents from devicestatus collection older than 30 days": "Eliminar todos los documentos de la colección devicestatus de hace más de 30 días", + "Number of Days to Keep:": "Número de días a guardar:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "Esta tarea elimina todos los documentos de la colección de devicestatus que tienen más de 30 días. Es útil cuando el estado de la batería del cargador no se actualiza correctamente.", + "Delete old documents from devicestatus collection?": "Borrar todos los documentos desde la colección devicestatus?", + "Clean Mongo entries (glucose entries) database": "Limpiar base de datos Mongo entradas (entradas glucosas)", + "Delete all documents from entries collection older than 180 days": "Eliminar todos los documentos de la colección entries de hace más de 180 días", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Esta tarea elimina todos los documentos de la colección entradas que tienen más de 180 días. Es útil cuando el estado de la batería del cargador no se actualiza correctamente.", + "Delete old documents": "Eliminar documentos antiguos", + "Delete old documents from entries collection?": "¿Eliminar documentos antiguos de la colección de entradas?", + "%1 is not a valid number": "%1 no es un número válido", + "%1 is not a valid number - must be more than 2": "%1 no es un número válido - debe ser más de 2", + "Clean Mongo treatments database": "Limpiar base de datos de tratamientos de Mongo", + "Delete all documents from treatments collection older than 180 days": "Eliminar todos los documentos de la colección de tratamientos de hace más de 180 días", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Esta tarea elimina todos los documentos de la colección de tratamientos que tienen más de 180 días. Es útil cuando el estado de la batería del cargador no se actualiza correctamente.", + "Delete old documents from treatments collection?": "¿Eliminar documentos antiguos de la colección de entradas?", "Admin Tools": "Herramientas Administrativas", "Nightscout reporting": "Informes - Nightscout", "Cancel": "Cancelar", @@ -334,7 +334,7 @@ "Temp Basal Start": "Inicio Tasa Basal temporal", "Temp Basal End": "Fin Tasa Basal temporal", "Percent": "Porcentaje", - "Basal change in %": "Basal modificado en %", + "Basal change in %": "Basal modificada en %", "Basal value": "Valor basal", "Absolute basal value": "Valor basal absoluto", "Announcement": "Aviso", @@ -379,7 +379,7 @@ "Add new interval before": "Agregar nuevo intervalo antes", "Delete interval": "Borrar intervalo", "I:C": "I:C", - "ISF": "ISF", + "ISF": "ISF (Factor Sensibilidad Insulina)", "Combo Bolus": "Combo-Bolo", "Difference": "Diferencia", "New time": "Nueva hora", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Insulina basal temporal negativa:", "Total basal insulin:": "Total Insulina basal:", "Total daily insulin:": "Total Insulina diaria:", - "Unable to %1 Role": "Incapaz de %1 Rol", + "Unable to save Role": "No se ha podido guardar el perfil", "Unable to delete Role": "Imposible elimar Rol", "Database contains %1 roles": "Base de datos contiene %1 Roles", "Edit Role": "Editar Rol", @@ -433,13 +433,13 @@ "Subjects - People, Devices, etc": "Sujetos - Personas, Dispositivos, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada sujeto tendrá un identificador de acceso único y 1 o más roles. Haga clic en el identificador de acceso para abrir una nueva vista con el tema seleccionado, este enlace secreto puede ser compartido.", "Add new Subject": "Añadir nuevo Sujeto", - "Unable to %1 Subject": "Unable to %1 Subject", - "Unable to delete Subject": "Imposible eliminar sujeto", - "Database contains %1 subjects": "Base de datos contiene %1 sujetos", - "Edit Subject": "Editar sujeto", + "Unable to save Subject": "No se puede guardar el objeto", + "Unable to delete Subject": "Imposible eliminar objeto", + "Database contains %1 subjects": "Base de datos contiene %1 objetos", + "Edit Subject": "Editar objeto", "person, device, etc": "Persona, dispositivo, etc", "role1, role2": "Rol1, Rol2", - "Edit this subject": "Editar este sujeto", + "Edit this subject": "Editar este objeto", "Delete this subject": "Eliminar este sujeto", "Roles": "Roles", "Access Token": "Acceso Identificador", @@ -494,10 +494,10 @@ "Check BG using glucometer before correcting!": "Verifique glucemia antes de corregir!", "Basal reduction to account %1 units:": "Reducir basal para compesar %1 unidades:", "30m temp basal": "30 min. temporal basal", - "1h temp basal": "1h temporal Basasl", + "1h temp basal": "1h temporal Basal", "Cannula change overdue!": "¡Cambio de agujas vencido!", "Time to change cannula": " Hora sustituir cánula", - "Change cannula soon": "Change cannula soon", + "Change cannula soon": "Cambiar cannula pronto", "Cannula age %1 hours": "Cánula usada %1 horas", "Inserted": "Insertado", "CAGE": "Cánula desde", @@ -535,7 +535,7 @@ "Temporary Target": "Objetivo temporal", "Temporary Target Cancel": "Objetivo temporal cancelado", "OpenAPS Offline": "OpenAPS desconectado", - "Profiles": "Perfil", + "Profiles": "Perfiles", "Time in fluctuation": "Tiempo fluctuando", "Time in rapid fluctuation": "Tiempo fluctuando rápido", "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "Esto es sólo una estimación apróximada que puede ser muy inexacta y no reemplaza las pruebas de sangre reales. La fórmula utilizada está tomada de: ", @@ -543,7 +543,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Tiempo en fluctuación y Tiempo en fluctuación rápida miden el % de tiempo del período exáminado, durante la cual la glucosa en sangre ha estado cambiando relativamente rápido o rápidamente. Valores más bajos son mejores.", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "El cambio medio diario total es la suma de los valores absolutos de todas las glucémias en el período examinado, dividido por el número de días. Mejor valores bajos.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "El cambio medio por hora, es la suma del valor absoluto de todas las glucemias para el período examinado, dividido por el número de horas en el período. Más bajo es mejor.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "El RMS fuera de rango se calcula al cuadrar la distancia fuera de rango para todas las lecturas de glucosa durante el período examinado. resumiéndolos, dividiéndolos por el contador y tomando la raíz cuadrada. Esta métrica es similar al porcentaje en el rango pero pesa lecturas fuera del rango más alto. Valores más bajos son mejores.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", "Mean Total Daily Change": "Variación media total diaria", @@ -555,135 +555,142 @@ "SingleDown": "Bajando", "DoubleDown": "Bajando rápido", "DoubleUp": "Subiendo rápido", - "virtAsstUnknown": "That value is unknown at the moment. Please see your Nightscout site for more details.", - "virtAsstTitleAR2Forecast": "AR2 Forecast", - "virtAsstTitleCurrentBasal": "Current Basal", - "virtAsstTitleCurrentCOB": "Current COB", - "virtAsstTitleCurrentIOB": "Current IOB", - "virtAsstTitleLaunch": "Welcome to Nightscout", - "virtAsstTitleLoopForecast": "Loop Forecast", - "virtAsstTitleLastLoop": "Last Loop", - "virtAsstTitleOpenAPSForecast": "OpenAPS Forecast", - "virtAsstTitlePumpReservoir": "Insulin Remaining", - "virtAsstTitlePumpBattery": "Pump Battery", - "virtAsstTitleRawBG": "Current Raw BG", - "virtAsstTitleUploaderBattery": "Uploader Battery", - "virtAsstTitleCurrentBG": "Current BG", - "virtAsstTitleFullStatus": "Full Status", - "virtAsstTitleCGMMode": "CGM Mode", - "virtAsstTitleCGMStatus": "CGM Status", - "virtAsstTitleCGMSessionAge": "CGM Session Age", - "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", - "virtAsstTitleCGMNoise": "CGM Noise", - "virtAsstTitleDelta": "Blood Glucose Delta", + "virtAsstUnknown": "Ese valor es desconocido en este momento. Por favor, consulta tu sitio de Nightscout para más detalles.", + "virtAsstTitleAR2Forecast": "Pronóstico AR2", + "virtAsstTitleCurrentBasal": "Basal actual", + "virtAsstTitleCurrentCOB": "COB actual", + "virtAsstTitleCurrentIOB": "IOB actual", + "virtAsstTitleLaunch": "Bienvenido a Nightscout", + "virtAsstTitleLoopForecast": "Pronóstico del lazo", + "virtAsstTitleLastLoop": "Último ciclo del lazo", + "virtAsstTitleOpenAPSForecast": "Pronóstico OpenAPS", + "virtAsstTitlePumpReservoir": "Insulina restante", + "virtAsstTitlePumpBattery": "Batería de la Bomba", + "virtAsstTitleRawBG": "GS Actual en crudo", + "virtAsstTitleUploaderBattery": "Batería del Uploader", + "virtAsstTitleCurrentBG": "BG actual", + "virtAsstTitleFullStatus": "Estado completo", + "virtAsstTitleCGMMode": "Modo MCG", + "virtAsstTitleCGMStatus": "Estado de MCG", + "virtAsstTitleCGMSessionAge": "Edad de la sesión MCG", + "virtAsstTitleCGMTxStatus": "Estado del transmisor MCG", + "virtAsstTitleCGMTxAge": "Edad del transmisor MCG", + "virtAsstTitleCGMNoise": "Ruido MCG", + "virtAsstTitleDelta": "Delta glucosa de sangre", "virtAsstStatus": "%1 y %2 como de %3.", "virtAsstBasal": "%1 basal actual es %2 unidades por hora", "virtAsstBasalTemp": "%1 Basal temporal de %2 unidades por hora hasta el fin %3", "virtAsstIob": "y tu tienes %1 insulina activa.", "virtAsstIobIntent": "Tienes %1 insulina activa", "virtAsstIobUnits": "%1 unidades de", - "virtAsstLaunch": "What would you like to check on Nightscout?", - "virtAsstPreamble": "Tú", + "virtAsstLaunch": "¿Qué te gustaría comprobar en Nightscout?", + "virtAsstPreamble": "Tu", "virtAsstPreamble3person": "%1 tiene un ", "virtAsstNoInsulin": "no", - "virtAsstUploadBattery": "Your uploader battery is at %1", - "virtAsstReservoir": "You have %1 units remaining", - "virtAsstPumpBattery": "Your pump battery is at %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", - "virtAsstLastLoop": "The last successful loop was %1", - "virtAsstLoopNotAvailable": "Loop plugin does not seem to be enabled", - "virtAsstLoopForecastAround": "According to the loop forecast you are expected to be around %1 over the next %2", - "virtAsstLoopForecastBetween": "According to the loop forecast you are expected to be between %1 and %2 over the next %3", - "virtAsstAR2ForecastAround": "According to the AR2 forecast you are expected to be around %1 over the next %2", - "virtAsstAR2ForecastBetween": "According to the AR2 forecast you are expected to be between %1 and %2 over the next %3", - "virtAsstForecastUnavailable": "Unable to forecast with the data that is available", - "virtAsstRawBG": "Your raw bg is %1", - "virtAsstOpenAPSForecast": "The OpenAPS Eventual BG is %1", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstUploadBattery": "La batería del cargador está en %1", + "virtAsstReservoir": "Tienes %1 unidades restantes", + "virtAsstPumpBattery": "La batería de la bomba está en %1 %2", + "virtAsstUploaderBattery": "La batería del cargador está en %1", + "virtAsstLastLoop": "El último lazo exitoso fue %1", + "virtAsstLoopNotAvailable": "El plugin Loop parece no estar habilitado", + "virtAsstLoopForecastAround": "De acuerdo con la previsión del lazo se espera que estés alrededor de %1 durante los siguientes %2", + "virtAsstLoopForecastBetween": "De acuerdo con la previsión del lazo se espera que estés entre %1 y %2 en los siguientes %3", + "virtAsstAR2ForecastAround": "De acuerdo con la previsión del lazo se espera que estés alrededor de %1 durante los siguientes %2", + "virtAsstAR2ForecastBetween": "De acuerdo con la previsión del lazo se espera que estés entre %1 y %2 en los siguientes %2", + "virtAsstForecastUnavailable": "No se puede predecir con los datos que están disponibles", + "virtAsstRawBG": "Tu Bg crudo es %1", + "virtAsstOpenAPSForecast": "El pronóstico de BG de OpenAPS es %1", + "virtAsstCob3person": "%1 tiene %2 hidratos de carbono a bordo", + "virtAsstCob": "Tienes %1 hidratos de carbono a bordo", + "virtAsstCGMMode": "Tu modo MCG era %1 a partir de %2.", + "virtAsstCGMStatus": "Su estado MCG fue %1 a partir de %2.", + "virtAsstCGMSessAge": "Su sesión MCG ha estado activa durante %1 días y %2 horas.", + "virtAsstCGMSessNotStarted": "No hay ninguna sesión MCG activa en este momento.", + "virtAsstCGMTxStatus": "Su estado del transmisor MCG fue %1 a %2.", + "virtAsstCGMTxAge": "Tu transmisor MCG tiene %1 días.", + "virtAsstCGMNoise": "El ruido MCG fue %1 a partir de %2.", + "virtAsstCGMBattOne": "Su batería MCG fue de %1 voltios a %2.", + "virtAsstCGMBattTwo": "Sus niveles de batería MCG eran %1 voltios y %2 voltios a %3.", + "virtAsstDelta": "Tu delta estaba %1 entre %2 y %3.", + "virtAsstDeltaEstimated": "Tu delta estimada era %1 entre %2 y %3.", + "virtAsstUnknownIntentTitle": "Intento desconocido", + "virtAsstUnknownIntentText": "Lo siento, no sé lo que estás pidiendo.", "Fat [g]": "Grasas [g]", "Protein [g]": "Proteina [g]", "Energy [kJ]": "Energía [Kj]", "Clock Views:": "Vista del reloj:", - "Clock": "Clock", + "Clock": "Reloj", "Color": "Color", "Simple": "Simple", - "TDD average": "TDD average", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", - "Carbs average": "Carbs average", - "Eating Soon": "Eating Soon", - "Last entry {0} minutes ago": "Last entry {0} minutes ago", - "change": "change", - "Speech": "Speech", - "Target Top": "Target Top", - "Target Bottom": "Target Bottom", - "Canceled": "Canceled", + "TDD average": "Promedio de TDD", + "Bolus average": "Bolo medio", + "Basal average": "Basal media", + "Base basal average:": "Media basal base:", + "Carbs average": "Carbohidratos promedio", + "Eating Soon": "ComidendoPronto", + "Last entry {0} minutes ago": "Última entrada hace {0} minutos", + "change": "cambio", + "Speech": "Voz", + "Target Top": "Objetivo alto", + "Target Bottom": "Objetivo Bajo", + "Canceled": "Cancelado", "Meter BG": "Meter BG", - "predicted": "predicted", - "future": "future", - "ago": "ago", - "Last data received": "Last data received", + "predicted": "previsto", + "future": "próximo", + "ago": "hace", + "Last data received": "Últimos datos recibidos", "Clock View": "Vista del reloj", - "Protein": "Protein", - "Fat": "Fat", - "Protein average": "Protein average", - "Fat average": "Fat average", - "Total carbs": "Total carbs", - "Total protein": "Total protein", - "Total fat": "Total fat", - "Database Size": "Database Size", - "Database Size near its limits!": "Database Size near its limits!", - "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!", - "Database file size": "Database file size", - "%1 MiB of %2 MiB (%3%)": "%1 MiB of %2 MiB (%3%)", - "Data size": "Data size", - "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", - "virtAsstTitleDatabaseSize": "Database file size", - "Carbs/Food/Time": "Carbs/Food/Time", - "Reads enabled in default permissions": "Reads enabled in default permissions", - "Data reads enabled": "Data reads enabled", - "Data writes enabled": "Data writes enabled", - "Data writes not enabled": "Data writes not enabled", - "Color prediction lines": "Color prediction lines", - "Release Notes": "Release Notes", - "Check for Updates": "Check for Updates", - "Open Source": "Open Source", - "Nightscout Info": "Nightscout Info", - "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.", - "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.": "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.", - "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.": "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.", - "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.": "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.", - "Note that time shift is available only when viewing multiple days.": "Note that time shift is available only when viewing multiple days.", - "Please select a maximum of two weeks duration and click Show again.": "Please select a maximum of two weeks duration and click Show again.", - "Show profiles table": "Show profiles table", - "Show predictions": "Show predictions", - "Timeshift on meals larger than": "Timeshift on meals larger than", - "g carbs": "g carbs'", - "consumed between": "consumed between", - "Previous": "Previous", - "Previous day": "Previous day", - "Next day": "Next day", - "Next": "Next", - "Temp basal delta": "Temp basal delta", - "Authorized by token": "Authorized by token", - "Auth role": "Auth role", - "view without token": "view without token", - "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Protein": "Proteínas", + "Fat": "Grasa", + "Protein average": "Proteína media", + "Fat average": "Media de grasa", + "Total carbs": "Total de glúcidos", + "Total protein": "Total de proteínas", + "Total fat": "Grasa total", + "Database Size": "Tamaño de la Base de Datos", + "Database Size near its limits!": "Tamaño de la base de datos cerca de sus límites!", + "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "El tamaño de la base de datos es %1 MiB de %2 MiB. ¡Por favor, haz una copia de seguridad y limpia la base de datos!", + "Database file size": "Tamaño del archivo de la base de datos", + "%1 MiB of %2 MiB (%3%)": "%1 MiB de %2 MiB (%3%)", + "Data size": "Tamaño de los datos", + "virtAsstDatabaseSize": "%1 MiB. Es el %2% del espacio disponible en la base de datos.", + "virtAsstTitleDatabaseSize": "Tamaño del archivo de la base de datos", + "Carbs/Food/Time": "Carbs/Comida/Hora", + "You have administration messages": "Tienes mensajes de administración", + "Admin messages in queue": "Mensajes de administración en cola", + "Queue empty": "Cola vacía", + "There are no admin messages in queue": "No hay mensajes de administración en cola", + "Please sign in using the API_SECRET to see your administration messages": "Por favor, inicia sesión usando API_SECRET para ver tus mensajes de administración", + "Reads enabled in default permissions": "Lecturas habilitadas en los permisos por defecto", + "Data reads enabled": "Lecturas de datos habilitadas", + "Data writes enabled": "Escrituras de datos habilitadas", + "Data writes not enabled": "Escrituras de datos no habilitadas", + "Color prediction lines": "Líneas de predicción de color", + "Release Notes": "Notas informativas", + "Check for Updates": "Buscar actualizaciones", + "Open Source": "Código abierto", + "Nightscout Info": "Información de Nightscout", + "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "El objetivo principal de Loopalyzer es visualizar cómo funciona el sistema de lazo cerrado. También puede funcionar con otras configuraciones, tanto de lazo cerrado como abierto, y sin loop. Sin embargo, dependiendo del uploader que utilice, con qué frecuencia es capaz de capturar sus datos y cargar, y cómo es capaz de rellenar datos faltantes, algunos gráficos pueden tener lagunas o incluso estar completamente vacíos. Siempre asegúrese de que los gráficos se vean razonables. Mejor es ver un día a la vez y pasar a través de un número de días para ver.", + "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.": "Loopalyzer incluye una función de cambio de tiempo. Si por ejemplo usted toma el desayuno a las 07:00 un día y a las 08:00 el día después de su curva media de glucosa, estos dos días muy probablemente se verán aplanados y no mostrarán la respuesta real después de un desayuno. El cambio de tiempo calculará el tiempo promedio de estas comidas se comieron y luego desplazará todos los datos (carbones, insulina, basal etc. durante ambos días la diferencia horaria correspondiente de modo que ambas comidas se alineen con la hora media de inicio de la comida.", + "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.": "En este ejemplo todos los datos del primer día se empujan 30 minutos hacia adelante en el tiempo y todos los datos del segundo día 30 minutos hacia atrás en el tiempo así que parece como si usted tuviera el desayuno a las 07:30 ambos días. Esto le permite ver su respuesta real promedio de glucosa en la sangre a través de una comida.", + "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.": "El cambio de tiempo resalta el período después de la comida media de inicio en gris, durante la duración de la DIA (Duración de la acción de la insulina). Como todos los datos apuntan el día entero se desplazan las curvas fuera del área gris pueden no ser exactas.", + "Note that time shift is available only when viewing multiple days.": "Tenga en cuenta que el cambio de tiempo sólo está disponible cuando se visualiza varios días.", + "Please select a maximum of two weeks duration and click Show again.": "Por favor, seleccione un máximo de dos semanas de duración y haga clic en Mostrar de nuevo.", + "Show profiles table": "Mostrar tabla de perfiles", + "Show predictions": "Mostrar las predicciones", + "Timeshift on meals larger than": "Intercambio de tiempo en comidas más grandes que", + "g carbs": "g glúcidos", + "consumed between": "consumido entre", + "Previous": "Anterior", + "Previous day": "Día anterior", + "Next day": "Día siguiente", + "Next": "Siguiente", + "Temp basal delta": "Delta basal temporal", + "Authorized by token": "Autorizado por token", + "Auth role": "Rol de autenticación", + "view without token": "ver sin token", + "Remove stored token": "Eliminar token almacenado", + "Weekly Distribution": "Distribución semanal", + "Failed authentication": "Autenticación fallida", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Un dispositivo en la dirección IP %1 intentó autenticarse con Nightscout con credenciales incorrectas. Compruebe si tiene una configuración del cargador/uploader con API_SECRET o token incorrecto?" } diff --git a/translations/fi_FI.json b/translations/fi_FI.json index cdd881448c7b..f56f878791fd 100644 --- a/translations/fi_FI.json +++ b/translations/fi_FI.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatiivinen tilapäisbasaali:", "Total basal insulin:": "Basaali yhteensä:", "Total daily insulin:": "Päivän kokonaisinsuliiniannos:", - "Unable to %1 Role": "%1 operaatio roolille opäonnistui", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Roolin poistaminen epäonnistui", "Database contains %1 roles": "Tietokanta sisältää %1 roolia", "Edit Role": "Muokkaa roolia", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Käyttäjät (Ihmiset, laitteet jne)", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Jokaisella käyttäjällä on uniikki pääsytunniste ja yksi tai useampi rooli. Klikkaa pääsytunnistetta nähdäksesi käyttäjän, jolloin saat jaettavan osoitteen tämän käyttäjän oikeuksilla.", "Add new Subject": "Lisää uusi käyttäjä", - "Unable to %1 Subject": "Operaatio %1 roolille epäonnistui", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Käyttäjän poistaminen epäonnistui", "Database contains %1 subjects": "Tietokanta sisältää %1 käyttäjää", "Edit Subject": "Muokkaa käyttäjää", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Se on %2% saatavilla olevasta koosta.", "virtAsstTitleDatabaseSize": "Tietokantatiedoston koko", "Carbs/Food/Time": "Hiilihydraatit/Ruoka/Aika", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Tietojen lukeminen käytössä oletuskäyttöoikeuksilla", "Data reads enabled": "Tiedon lukeminen mahdollista", "Data writes enabled": "Tiedon kirjoittaminen mahdollista", @@ -685,5 +690,7 @@ "Auth role": "Authentikaatiorooli", "view without token": "Näytä ilman tunnistetta", "Remove stored token": "Poista talletettu tunniste", - "Weekly Distribution": "Viikkojakauma" + "Weekly Distribution": "Viikkojakauma", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/fr_FR.json b/translations/fr_FR.json index 71a1d3e75b6c..c83d4187c12f 100644 --- a/translations/fr_FR.json +++ b/translations/fr_FR.json @@ -5,7 +5,7 @@ "We": "Me", "Th": "Je", "Fr": "Ve", - "Sa": "Sam", + "Sa": "Sa", "Su": "Di", "Monday": "Lundi", "Tuesday": "Mardi", @@ -33,9 +33,9 @@ "Food": "Nourriture", "Insulin": "Insuline", "Carbs": "Glucides", - "Notes contain": "Notes contiennent", + "Notes contain": "Les notes contiennent", "Target BG range bottom": "Limite inférieure glycémie", - "top": "Supérieure", + "top": "supérieure", "Show": "Montrer", "Display": "Afficher", "Loading": "Chargement", @@ -50,7 +50,7 @@ "Size": "Taille", "(none)": "(aucun)", "None": "aucun", - "": "", + "": "", "Result is empty": "Pas de résultat", "Day to day": "jour par jour", "Week to week": "Semaine après semaine", @@ -277,7 +277,7 @@ "Add new": "Ajouter nouveau", "g": "g", "ml": "ml", - "pcs": "pcs", + "pcs": "unités", "Drag&drop food here": "Glisser et déposer repas ici ", "Care Portal": "Portail de soins", "Medium/Unknown": "Moyen/Inconnu", @@ -315,14 +315,14 @@ "Delete old documents from devicestatus collection?": "Effacer les vieux résultats de votre appareil?", "Clean Mongo entries (glucose entries) database": "Nettoyer la base de données des entrées Mongo (entrées de glycémie)", "Delete all documents from entries collection older than 180 days": "Effacer les résultats de plus de 180 jours", - "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Cette action efface tous les documents de la collection qui sont vieux de plus de 180 jours. Utile lorsque l'indicateur de chargement de la batterie n'est pas affichée correctement.", "Delete old documents": "Effacer les anciens documents", - "Delete old documents from entries collection?": "Delete old documents from entries collection?", + "Delete old documents from entries collection?": "Voulez vous effacer les plus anciens résultats?", "%1 is not a valid number": "%1 n'est pas un nombre valide", "%1 is not a valid number - must be more than 2": "%1 n'est pas un nombre valide - doit être supérieur à 2", "Clean Mongo treatments database": "Nettoyage de la base de données des traitements Mongo", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", - "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", + "Delete all documents from treatments collection older than 180 days": "Effacer les données des traitements de plus de 180 jours", + "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Cette action efface tous les documents de la collection des traitements qui sont vieux de plus de 180 jours. Utile lorsque l'indicateur de chargement de la batterie n'est pas affiché correctement.", "Delete old documents from treatments collection?": "Voulez vous effacer les plus vieux résultats?", "Admin Tools": "Outils d'administration", "Nightscout reporting": "Rapports Nightscout", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Débit basal temporaire négatif", "Total basal insulin:": "Insuline basale au total:", "Total daily insulin:": "Insuline totale journalière", - "Unable to %1 Role": "Incapable de %1 rôle", + "Unable to save Role": "Impossible d'enregistrer le role", "Unable to delete Role": "Effacement de rôle impossible", "Database contains %1 roles": "La base de données contient %1 rôles", "Edit Role": "Éditer le rôle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Utilisateurs - Personnes, Appareils, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Chaque utilisateur aura un identificateur unique et un ou plusieurs rôles. Cliquez sur l'identificateur pour révéler l'utilisateur, ce lien secret peut être partagé.", "Add new Subject": "Ajouter un nouvel Utilisateur", - "Unable to %1 Subject": "Incapable de %1 sujet", + "Unable to save Subject": "Impossible d'enregistrer le sujet", "Unable to delete Subject": "Impossible d'effacer l'Utilisateur", "Database contains %1 subjects": "La base de données contient %1 utilisateurs", "Edit Subject": "Éditer l'Utilisateur", @@ -500,17 +500,17 @@ "Change cannula soon": "Changement de canule bientòt", "Cannula age %1 hours": "âge de la canule %1 heures", "Inserted": "Insérée", - "CAGE": "CAGE", + "CAGE": "Age de la canule (ie dernier changement de cathéter)", "COB": "COB glucides actifs", "Last Carbs": "Derniers glucides", - "IAGE": "IAGE", + "IAGE": "Age de l'insuline", "Insulin reservoir change overdue!": "Dépassement de date de changement de réservoir d'insuline!", "Time to change insulin reservoir": "Le moment est venu de changer de réservoir d'insuline", "Change insulin reservoir soon": "Changement de réservoir d'insuline bientôt", "Insulin reservoir age %1 hours": "Âge du réservoir d'insuline %1 heures", "Changed": "Changé", "IOB": "Insuline Active", - "Careportal IOB": "Careportal IOB", + "Careportal IOB": "Insuline active du careportal", "Last Bolus": "Dernier Bolus", "Basal IOB": "IOB du débit basal", "Source": "Source", @@ -520,7 +520,7 @@ "%1h ago": "%1 heures plus tôt", "%1d ago": "%1 jours plus tôt", "RETRO": "RETRO", - "SAGE": "SAGE", + "SAGE": "Age du sensor", "Sensor change/restart overdue!": "Changement/Redémarrage du senseur dépassé!", "Time to change/restart sensor": "C'est le moment de changer/redémarrer le senseur", "Change/restart sensor soon": "Changement/Redémarrage du senseur bientôt", @@ -556,7 +556,7 @@ "DoubleDown": "en chute rapide", "DoubleUp": "en montée rapide", "virtAsstUnknown": "Cette valeur est inconnue pour le moment. Veuillez consulter votre site Nightscout pour plus de détails.", - "virtAsstTitleAR2Forecast": "AR2 Forecast", + "virtAsstTitleAR2Forecast": "Prévision AR2", "virtAsstTitleCurrentBasal": "Débit basal actuel", "virtAsstTitleCurrentCOB": "Glucides actuels", "virtAsstTitleCurrentIOB": "Insuline actuelle", @@ -566,55 +566,55 @@ "virtAsstTitleOpenAPSForecast": "Prédictions OpenAPS", "virtAsstTitlePumpReservoir": "Insuline restante", "virtAsstTitlePumpBattery": "Batterie Pompe", - "virtAsstTitleRawBG": "Current Raw BG", - "virtAsstTitleUploaderBattery": "Uploader Battery", + "virtAsstTitleRawBG": "Glycémie actuelle", + "virtAsstTitleUploaderBattery": "Batterie du téléphone", "virtAsstTitleCurrentBG": "Glycémie actuelle", "virtAsstTitleFullStatus": "Statut complet", - "virtAsstTitleCGMMode": "CGM Mode", + "virtAsstTitleCGMMode": "Mode CGM", "virtAsstTitleCGMStatus": "Statut CGM", "virtAsstTitleCGMSessionAge": "L’âge de la session du CGM", - "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", - "virtAsstTitleCGMNoise": "CGM Noise", - "virtAsstTitleDelta": "Blood Glucose Delta", - "virtAsstStatus": "%1 and %2 as of %3.", - "virtAsstBasal": "%1 current basal is %2 units per hour", - "virtAsstBasalTemp": "%1 temp basal of %2 units per hour will end %3", - "virtAsstIob": "and you have %1 insulin on board.", - "virtAsstIobIntent": "You have %1 insulin on board", - "virtAsstIobUnits": "%1 units of", + "virtAsstTitleCGMTxStatus": "Statut du transmetteur CGM", + "virtAsstTitleCGMTxAge": "Age du transmetteur", + "virtAsstTitleCGMNoise": "Bruit CGM", + "virtAsstTitleDelta": "Delta de glycémie", + "virtAsstStatus": "%1 et %2 à partir de %3.", + "virtAsstBasal": "%1 le Basal actuel est %2 unités par heure", + "virtAsstBasalTemp": "%1 basal temporaire de %2 unités par heure se terminera %3", + "virtAsstIob": "et vous avez %1 insuline active.", + "virtAsstIobIntent": "Vous avez %1 insuline active", + "virtAsstIobUnits": "%1 unités de", "virtAsstLaunch": "Qu'est ce que vous voulez voir sur Nightscout?", "virtAsstPreamble": "Vous", - "virtAsstPreamble3person": "%1 has a ", + "virtAsstPreamble3person": "%1 a un ", "virtAsstNoInsulin": "non", "virtAsstUploadBattery": "Votre appareil est chargé a %1", "virtAsstReservoir": "Vous avez %1 unités non utilisé", - "virtAsstPumpBattery": "Your pump battery is at %1 %2", - "virtAsstUploaderBattery": "Your uploader battery is at %1", - "virtAsstLastLoop": "The last successful loop was %1", - "virtAsstLoopNotAvailable": "Loop plugin does not seem to be enabled", - "virtAsstLoopForecastAround": "According to the loop forecast you are expected to be around %1 over the next %2", - "virtAsstLoopForecastBetween": "According to the loop forecast you are expected to be between %1 and %2 over the next %3", - "virtAsstAR2ForecastAround": "According to the AR2 forecast you are expected to be around %1 over the next %2", - "virtAsstAR2ForecastBetween": "According to the AR2 forecast you are expected to be between %1 and %2 over the next %3", - "virtAsstForecastUnavailable": "Unable to forecast with the data that is available", - "virtAsstRawBG": "Your raw bg is %1", - "virtAsstOpenAPSForecast": "The OpenAPS Eventual BG is %1", - "virtAsstCob3person": "%1 has %2 carbohydrates on board", - "virtAsstCob": "You have %1 carbohydrates on board", - "virtAsstCGMMode": "Your CGM mode was %1 as of %2.", - "virtAsstCGMStatus": "Your CGM status was %1 as of %2.", - "virtAsstCGMSessAge": "Your CGM session has been active for %1 days and %2 hours.", - "virtAsstCGMSessNotStarted": "There is no active CGM session at the moment.", - "virtAsstCGMTxStatus": "Your CGM transmitter status was %1 as of %2.", - "virtAsstCGMTxAge": "Your CGM transmitter is %1 days old.", - "virtAsstCGMNoise": "Your CGM noise was %1 as of %2.", - "virtAsstCGMBattOne": "Your CGM battery was %1 volts as of %2.", - "virtAsstCGMBattTwo": "Your CGM battery levels were %1 volts and %2 volts as of %3.", - "virtAsstDelta": "Your delta was %1 between %2 and %3.", + "virtAsstPumpBattery": "La batterie de votre pompe est à %1 %2", + "virtAsstUploaderBattery": "La batterie de votre téléphone est à %1", + "virtAsstLastLoop": "La dernière boucle effetive a été %1", + "virtAsstLoopNotAvailable": "Le plugin Loop ne semble pas être activé", + "virtAsstLoopForecastAround": "Selon les prévisions de Loop, vous devriez être aux alentours de %1 dans les prochaines %2", + "virtAsstLoopForecastBetween": "Selon les prévisions de Loop, vous devriez être entre %1 et %2 dans les prochaines %3", + "virtAsstAR2ForecastAround": "Selon les prévisions de l'AR2, vous devriez être aux alentours de %1 dans les prochaines %2", + "virtAsstAR2ForecastBetween": "Selon les prévisions de l'AR2, vous devriez être entre %1 et %2 dans les prochaines %3", + "virtAsstForecastUnavailable": "Impossible de prévoir avec les données disponibles", + "virtAsstRawBG": "Votre glycémie brut est %1", + "virtAsstOpenAPSForecast": "La glycémie éventuelle OpenAPS est %1", + "virtAsstCob3person": "%1 a %2 glucides actifs", + "virtAsstCob": "Vous avez %1 glucides actifs", + "virtAsstCGMMode": "Le mode du CGM était %1 à partir de %2.", + "virtAsstCGMStatus": "Le statut de votre CGM était de %1 sur %2.", + "virtAsstCGMSessAge": "Votre session CGM est active depuis %1 jours et %2 heures.", + "virtAsstCGMSessNotStarted": "Il n'y a pas de session CGM active pour le moment.", + "virtAsstCGMTxStatus": "Le statut de votre transmetteur CGM était %1 de %2.", + "virtAsstCGMTxAge": "Votre transmetteur CGM a %1 jours.", + "virtAsstCGMNoise": "Le bruit de votre CGM était de %1 sur %2.", + "virtAsstCGMBattOne": "Votre batterie du CGM était de %1 volts sur %2.", + "virtAsstCGMBattTwo": "Les batteries de votre CGM étaient de %1 volts et de %2 volts sur %3.", + "virtAsstDelta": "Votre delta estimé est %1 entre %2 et %3.", "virtAsstDeltaEstimated": "Votre delta estimé est %1 entre %2 et %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", - "virtAsstUnknownIntentText": "I'm sorry, I don't know what you're asking for.", + "virtAsstUnknownIntentTitle": "Intentions inconnues", + "virtAsstUnknownIntentText": "« Je suis désolée, je ne sais pas ce que vous demandez. ».", "Fat [g]": "Graisses [g]", "Protein [g]": "Protéines [g]", "Energy [kJ]": "Énergie [kJ]", @@ -622,19 +622,19 @@ "Clock": "L'horloge", "Color": "Couleur", "Simple": "Simple", - "TDD average": "TDD average", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", - "Carbs average": "Carbs average", - "Eating Soon": "Eating Soon", - "Last entry {0} minutes ago": "Last entry {0} minutes ago", - "change": "change", - "Speech": "Speech", - "Target Top": "Target Top", - "Target Bottom": "Target Bottom", + "TDD average": "Moyenne TDD (dose journalière totale)", + "Bolus average": "Bolus moyen", + "Basal average": "Basale moyenne", + "Base basal average:": "Débit de base moyen:", + "Carbs average": "Glucides moyens", + "Eating Soon": "Repas à venir bientôt", + "Last entry {0} minutes ago": "Dernière entrée : il y a {0} minutes", + "change": "modifier", + "Speech": "Voix", + "Target Top": "Cible haute", + "Target Bottom": "Cible basse", "Canceled": "Annulé", - "Meter BG": "Meter BG", + "Meter BG": "Glucomètre", "predicted": "prédiction", "future": "futur", "ago": "plus tôt", @@ -650,12 +650,17 @@ "Database Size": "Taille de la base de données", "Database Size near its limits!": "Taille de la base de données proche de ses limites !", "Database size is %1 MiB out of %2 MiB. Please backup and clean up database!": "La taille de la base de données est de %1 MiB sur %2 Mio. Veuillez sauvegarder et nettoyer la base de données !", - "Database file size": "Database file size", - "%1 MiB of %2 MiB (%3%)": "%1 MiB of %2 MiB (%3%)", - "Data size": "Data size", - "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", - "virtAsstTitleDatabaseSize": "Database file size", + "Database file size": "Taille de la base de données", + "%1 MiB of %2 MiB (%3%)": "%1 MiB sur %2 Mio (%3%)", + "Data size": "Taille des données", + "virtAsstDatabaseSize": "%1 MiB. Cela représente %2% de l'espace disponible dans la base de données.", + "virtAsstTitleDatabaseSize": "Taille du fichier de la base de données", "Carbs/Food/Time": "Glucides/Alimentation/Temps", + "You have administration messages": "Vous avez des messages d'administration", + "Admin messages in queue": "Messages de l'administrateur dans la file d'attente", + "Queue empty": "File d'attente vide", + "There are no admin messages in queue": "Il n'y a pas de messages d'administration dans la file d'attente", + "Please sign in using the API_SECRET to see your administration messages": "Veuillez vous connecter à l'aide de l'API_SECRET pour voir vos messages d'administration", "Reads enabled in default permissions": "Lectures activées dans les autorisations par défaut", "Data reads enabled": "Lectures des données activées", "Data writes enabled": "Écriture de données activée", @@ -680,10 +685,12 @@ "Previous day": "Jour précédent", "Next day": "Jour suivant", "Next": "Suivant", - "Temp basal delta": "Temp basal delta", - "Authorized by token": "Authorized by token", - "Auth role": "Auth role", - "view without token": "view without token", - "Remove stored token": "Remove stored token", - "Weekly Distribution": "Distribution hebdomadaire" + "Temp basal delta": "Delta de basale temporaire", + "Authorized by token": "Autorisé par le jeton", + "Auth role": "Rôle d'authentification", + "view without token": "afficher sans jeton", + "Remove stored token": "Supprimer le jeton stocké", + "Weekly Distribution": "Distribution hebdomadaire", + "Failed authentication": "Échec de l'authentification", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Un appareil à l'adresse IP %1 a tenté de s'authentifier avec Nightscout avec des informations d'identification erronées. Vérifiez si vous avez une configuration avec une mauvaise API_SECRET ou un mauvais jeton ?" } diff --git a/translations/he_IL.json b/translations/he_IL.json index 4e9d74e4bd35..c691065a2eb5 100644 --- a/translations/he_IL.json +++ b/translations/he_IL.json @@ -99,7 +99,7 @@ "Save record": "שמור רשומה", "Portions": "מנות", "Unit": "יחידות", - "GI": "GI", + "GI": "אינדקס גליקמי", "Edit record": "ערוך רשומה", "Delete record": "מחק רשומה", "Move to the top": "עבור למעלה", @@ -304,15 +304,15 @@ "%1 records deleted": "%1 רשומות נמחקו", "Clean Mongo status database": "נקי מסד הנתונים מצב מונגו ", "Delete all documents from devicestatus collection": "מחק את כל המסמכים מאוסף סטטוס המכשיר ", - "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.", + "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "הפעולה הבאה מסירה את כל התיעוד ממכשיר האיסוף, פעולה זו שימושית כאשר מצב הסוללה לא מתעדכן כראוי.", "Delete all documents": "מחק את כל המסמכים ", "Delete all documents from devicestatus collection?": "מחק את כל המסמכים מרשימת סטטוס ההתקנים ", "Database contains %1 records": "מסד נתונים מכיל %1 רשומות ", "All records removed ...": "כל הרשומות נמחקו ", "Delete all documents from devicestatus collection older than 30 days": "Delete all documents from devicestatus collection older than 30 days", - "Number of Days to Keep:": "Number of Days to Keep:", - "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.", - "Delete old documents from devicestatus collection?": "Delete old documents from devicestatus collection?", + "Number of Days to Keep:": "מספר ימים לשמירה:", + "This task removes all documents from devicestatus collection that are older than 30 days. Useful when uploader battery status is not properly updated.": "הפעולה הבאה מסירה את כל רשומות התיעוד ממכשיר האיסוף שגילן מעל 30 יום, פעולה זו שימושית כאשר מצב הסוללה לא מתעדכן כראוי.", + "Delete old documents from devicestatus collection?": "האם למחוק את כל המסמכים מרשימת סטטוס ההתקנים?", "Clean Mongo entries (glucose entries) database": "ניקוי מסד נתוני רשומות Mongo (רשומות סוכר)", "Delete all documents from entries collection older than 180 days": "מחיקת כל המסמכים מאוסף הרשומות שגילם מעל 180 יום", "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.", @@ -320,8 +320,8 @@ "Delete old documents from entries collection?": "למחוק את כל המסמכים מאוסף הרשומות?", "%1 is not a valid number": "זה לא מיספר %1", "%1 is not a valid number - must be more than 2": "%1 אינו מספר חוקי - עליו להיות גדול מ-2", - "Clean Mongo treatments database": "Clean Mongo treatments database", - "Delete all documents from treatments collection older than 180 days": "Delete all documents from treatments collection older than 180 days", + "Clean Mongo treatments database": "נקה את כל הטיפולים ממסד הנתונים מונגו", + "Delete all documents from treatments collection older than 180 days": "מחיקת כל המסמכים מאוסף הרשומות שגילם מעל 180 יום", "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.", "Delete old documents from treatments collection?": "Delete old documents from treatments collection?", "Admin Tools": "כלי אדמיניסטרציה ", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "אינסולין בזלי זמני שלילי ", "Total basal insulin:": "סך אינסולין בזלי ", "Total daily insulin:": "סך אינסולין ביום ", - "Unable to %1 Role": "לא יכול תפקיד %1", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "לא יכול לבטל תפקיד ", "Database contains %1 roles": "בסיס הנתונים מכיל %1 תפקידים ", "Edit Role": "ערוך תפקיד ", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "נושאים - אנשים, התקנים וכו ", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "לכל נושא תהיה אסימון גישה ייחודי ותפקיד אחד או יותר. לחץ על אסימון הגישה כדי לפתוח תצוגה חדשה עם הנושא הנבחר, קישור סודי זה יכול להיות משותף ", "Add new Subject": "הוסף נושא חדש ", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "לא יכול לבטל נושא ", "Database contains %1 subjects": "מסד נתונים מכיל %1 נושאים ", "Edit Subject": "ערוך נושא ", @@ -539,10 +539,10 @@ "Time in fluctuation": "זמן בתנודות ", "Time in rapid fluctuation": "זמן בתנודות מהירות ", "This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:": "זוהי רק הערכה גסה שיכולה להיות מאוד לא מדויקת ואינה מחליפה את בדיקת הדם בפועל. הנוסחה המשמשת נלקחת מ: ", - "Filter by hours": "Filter by hours", + "Filter by hours": "סנן לפי שעות", "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.", - "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.", - "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.", + "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "ממוצע השינוי היומי מחושב כך:\nהסכום של הערך המוחלט של ערכי הסוכר (גלוקוז) מחוץ לטווח עבור התקופה המבוקשת, חלקי מספר הימים בתקופה המבוקשת.\nתוצאה נמוכה יותר היא טובה יותר.", + "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "ממוצע השינוי השעתי מחושב כך:\nהסכום של הערך המוחלט של ערכי הסוכר (גלוקוז) מחוץ לטווח עבור התקופה המבוקשת, חלקי מספר השעות בתקופה המבוקשת.\nתוצאה נמוכה יותר היא טובה יותר.", "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">here.", @@ -551,32 +551,32 @@ "FortyFiveDown": "slightly dropping", "FortyFiveUp": "slightly rising", "Flat": "holding", - "SingleUp": "rising", - "SingleDown": "dropping", - "DoubleDown": "rapidly dropping", - "DoubleUp": "rapidly rising", - "virtAsstUnknown": "That value is unknown at the moment. Please see your Nightscout site for more details.", - "virtAsstTitleAR2Forecast": "AR2 Forecast", - "virtAsstTitleCurrentBasal": "Current Basal", + "SingleUp": "עולה", + "SingleDown": "נופל", + "DoubleDown": "נופל במהירות", + "DoubleUp": "עולה במהירות", + "virtAsstUnknown": "הערך המבוקש אינו ידוע כרגע. בקרו באתר ה\"Nighscout\" שלכם למידע נוסף.", + "virtAsstTitleAR2Forecast": "תחזית AR2", + "virtAsstTitleCurrentBasal": "ערך באזלי נוכחי", "virtAsstTitleCurrentCOB": "פחמ' פעילות כעת", "virtAsstTitleCurrentIOB": "אינסולין פעיל כעת", "virtAsstTitleLaunch": "ברוכים הבאים ל-Nightscout", "virtAsstTitleLoopForecast": "Loop Forecast", "virtAsstTitleLastLoop": "Last Loop", - "virtAsstTitleOpenAPSForecast": "OpenAPS Forecast", + "virtAsstTitleOpenAPSForecast": "תחזית OpenAPS", "virtAsstTitlePumpReservoir": "אינסולין נותר", "virtAsstTitlePumpBattery": "סוללת משאבה", - "virtAsstTitleRawBG": "Current Raw BG", - "virtAsstTitleUploaderBattery": "Uploader Battery", + "virtAsstTitleRawBG": "רמת סוכר גולמית", + "virtAsstTitleUploaderBattery": "רמת סוללה במשדר", "virtAsstTitleCurrentBG": "רמת סוכר נוכחית", - "virtAsstTitleFullStatus": "Full Status", + "virtAsstTitleFullStatus": "סטאטוס מלא", "virtAsstTitleCGMMode": "CGM Mode", "virtAsstTitleCGMStatus": "מצב חיישן", "virtAsstTitleCGMSessionAge": "CGM Session Age", "virtAsstTitleCGMTxStatus": "CGM Transmitter Status", "virtAsstTitleCGMTxAge": "CGM Transmitter Age", "virtAsstTitleCGMNoise": "רעש נתוני חיישן", - "virtAsstTitleDelta": "Blood Glucose Delta", + "virtAsstTitleDelta": "שינוי ברמת הסוכר", "virtAsstStatus": "%1 ו-%2 החל מ-%3.", "virtAsstBasal": "%1 מינון בזאלי נוכחי הוא %2 יח' לשעה", "virtAsstBasalTemp": "%1 בזאלי זמני במינון %2 יח' לשעה יסתיים ב-%3", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "גודל קובץ מסד נתונים", "Carbs/Food/Time": "פחמ'\\אוכל\\זמן", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "קריאת נתונים מופעלת תחת הרשאות ברירת מחדל", "Data reads enabled": "קריאת נתונים מופעלת", "Data writes enabled": "רישום נתונים מופעל", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/hr_HR.json b/translations/hr_HR.json index 9f612a786308..76319af2419d 100644 --- a/translations/hr_HR.json +++ b/translations/hr_HR.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativni temp bazal:", "Total basal insulin:": "Ukupno bazali:", "Total daily insulin:": "Ukupno dnevni inzulin:", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Ne mogu obrisati ulogu", "Database contains %1 roles": "baza sadrži %1 uloga", "Edit Role": "Uredi ulogu", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekti - Ljudi, uređaji, itd.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Svaki subjekt će dobiti jedinstveni pristupni token i jednu ili više uloga. Kliknite na pristupni token kako bi se otvorio novi pogled sa odabranim subjektom, a tada se tajni link može podijeliti.", "Add new Subject": "Dodaj novi subjekt", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Ne mogu obrisati subjekt", "Database contains %1 subjects": "Baza sadrži %1 subjekata", "Edit Subject": "Uredi subjekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/hu_HU.json b/translations/hu_HU.json index 32909404ac07..18abfa019a17 100644 --- a/translations/hu_HU.json +++ b/translations/hu_HU.json @@ -1,12 +1,12 @@ { "Listening on port": "Port figyelése", - "Mo": "Hé", - "Tu": "Ke", + "Mo": "H", + "Tu": "K", "We": "Sze", - "Th": "Csü", - "Fr": "Pé", + "Th": "Cs", + "Fr": "P", "Sa": "Szo", - "Su": "Va", + "Su": "V", "Monday": "Hétfő", "Tuesday": "Kedd", "Wednesday": "Szerda", @@ -18,82 +18,82 @@ "Subcategory": "Alkategória", "Name": "Név", "Today": "Ma", - "Last 2 days": "Utolsó 2 nap", - "Last 3 days": "Utolsó 3 nap", - "Last week": "Előző hét", + "Last 2 days": "Elmúlt 2 nap", + "Last 3 days": "Elmúlt 3 nap", + "Last week": "Elmúlt hét", "Last 2 weeks": "Elmúlt 2 hét", - "Last month": "Elmúlt 1 hónap", + "Last month": "Elmúlt hónap", "Last 3 months": "Elmúlt 3 hónap", "between": "között", "around": "körülbelül", "and": "és", - "From": "Tól", - "To": "Ig", - "Notes": "Jegyzetek", + "From": "Ettől", + "To": "Eddig", + "Notes": "Megjegyzések", "Food": "Étel", "Insulin": "Inzulin", "Carbs": "Szénhidrát", "Notes contain": "Jegyzet tartalmazza", - "Target BG range bottom": "Alsó cukorszint határ", - "top": "Felső", + "Target BG range bottom": "Vércukor céltartomány alja", + "top": "teteje", "Show": "Mutasd", - "Display": "Ábrázol", + "Display": "Megjelenítés", "Loading": "Betöltés", "Loading profile": "Profil betöltése", "Loading status": "Állapot betöltése", "Loading food database": "Étel adatbázis betöltése", "not displayed": "nincs megjelenítve", - "Loading CGM data of": "CGM adatok betöltése", - "Loading treatments data of": "Kezelés adatainak betöltése", - "Processing data of": "Adatok feldolgozása", - "Portion": "Porció", + "Loading CGM data of": "CGM adatok betöltése tőle", + "Loading treatments data of": "Kezelési adatok betöltése tőle", + "Processing data of": "Adatok feldolgozása tőle", + "Portion": "Rész", "Size": "Méret", - "(none)": "(semmilyen)", - "None": "Semmilyen", - "": "", + "(none)": "(semmi)", + "None": "Semmi", + "": "", "Result is empty": "Az eredmény üres", "Day to day": "Napi", "Week to week": "Heti", "Daily Stats": "Napi statisztika", - "Percentile Chart": "Százalékos", - "Distribution": "Szétosztás", - "Hourly stats": "Óránkra való szétosztás", + "Percentile Chart": "Percentilis", + "Distribution": "Eloszlás", + "Hourly stats": "Óránkénti statisztika", "netIOB stats": "netIOB statisztika", "temp basals must be rendered to display this report": "Az átmeneti bazálnak meg kell lennie jelenítve az adott jelentls megtekintéséhez", "No data available": "Nincs elérhető adat", "Low": "Alacsony", - "In Range": "Normális", + "In Range": "Tartományon belül", "Period": "Időszak", "High": "Magas", - "Average": "Átlagos", - "Low Quartile": "Alacsony kvartil", - "Upper Quartile": "Magas kvartil", - "Quartile": "Kvartil", + "Average": "Átlag", + "Low Quartile": "Alacsony kvartilis", + "Upper Quartile": "Magas kvartilis", + "Quartile": "Kvartilis", "Date": "Dátum", "Normal": "Normális", "Median": "Medián", "Readings": "Értékek", "StDev": "Standard eltérés", - "Daily stats report": "Napi statisztikák", - "Glucose Percentile report": "Cukorszint percentil jelentés", - "Glucose distribution": "Cukorszint szétosztása", + "Daily stats report": "Napi statisztika jelentés", + "Glucose Percentile report": "Vércukorszint percentilis jelentés", + "Glucose distribution": "Vércukorszint eloszlás", "days total": "nap összesen", "Total per day": "Naponta összesen", "Overall": "Összesen", "Range": "Tartomány", - "% of Readings": "% az értékeknek", - "# of Readings": "Olvasott értékek száma", - "Mean": "Közép", - "Standard Deviation": "Átlagos eltérés", + "% of Readings": "értékek %-a", + "# of Readings": "értékek száma", + "Mean": "Középérték", + "Standard Deviation": "Standard eltérés", "Max": "Max", "Min": "Min", - "A1c estimation*": "Megközelítőleges HbA1c", - "Weekly Success": "Heti sikeresség", - "There is not sufficient data to run this report. Select more days.": "Nincs elég adat a jelentés elkészítéséhez. Válassz több napot.", + "A1c estimation*": "HbA1c becslés*", + "Weekly Success": "Heti eloszlás", + "There is not sufficient data to run this report. Select more days.": "Nincs elég adat a jelentés elkészítéséhez. Válassz több napot!", "Using stored API secret hash": "Az elmentett API hash jelszót használom", "No API secret hash stored yet. You need to enter API secret.": "Még nem lett a titkos API hash elmentve. Add meg a titkos API jelszót", "Database loaded": "Adatbázis betöltve", - "Error: Database failed to load": "Hiba: Az adatbázist nem sikerült betölteni", + "Error: Database failed to load": "Hiba: adatbázis betöltése sikertelen", "Error": "Hiba", "Create new record": "Új bejegyzés", "Save record": "Bejegyzés mentése", @@ -102,51 +102,51 @@ "GI": "GI", "Edit record": "Bejegyzés szerkesztése", "Delete record": "Bejegyzés törlése", - "Move to the top": "Áthelyezni az elejére", - "Hidden": "Elrejtett", - "Hide after use": "Elrejteni használat után", - "Your API secret must be at least 12 characters long": "Az API jelszó több mint 12 karakterből kell hogy álljon", - "Bad API secret": "Helytelen API jelszó", - "API secret hash stored": "API jelszó elmentve", + "Move to the top": "Mozgasd legfelülre", + "Hidden": "Rejtett", + "Hide after use": "Elrejtés használat után", + "Your API secret must be at least 12 characters long": "Az API_SECRET több mint 12 karakterből kell hogy álljon", + "Bad API secret": "Helytelen API_SECRET", + "API secret hash stored": "API_SECRET hash elmentve", "Status": "Állapot", "Not loaded": "Nincs betöltve", - "Food Editor": "Étel szerkesztése", - "Your database": "Ön adatbázisa", - "Filter": "Filter", + "Food Editor": "Étel Szerkesztő", + "Your database": "Az adatbázisod", + "Filter": "Szűrő", "Save": "Mentés", - "Clear": "Kitöröl", + "Clear": "Törlés", "Record": "Bejegyzés", - "Quick picks": "Gyors választás", - "Show hidden": "Eltakart mutatása", + "Quick picks": "Gyors választások", + "Show hidden": "Rejtettek mutatása", "Your API secret or token": "Az API jelszo", "Remember this device. (Do not enable this on public computers.)": "A berendezés megjegyzése. (Csak saját berendezésen használd", "Treatments": "Kezelések", "Time": "Idő", "Event Type": "Esemény típusa", - "Blood Glucose": "Vércukor szint", + "Blood Glucose": "Vércukorszint", "Entered By": "Beírta", "Delete this treatment?": "Kezelés törlése?", - "Carbs Given": "Szénhidrátok", - "Insulin Given": "Inzulin Beadva", - "Event Time": "Időpont", - "Please verify that the data entered is correct": "Kérlek ellenőrizd, hogy az adatok helyesek.", - "BG": "Cukorszint", - "Use BG correction in calculation": "Használj korekciót a számításban", - "BG from CGM (autoupdated)": "Cukorszint a CGM-ből (Automatikus frissítés)", - "BG from meter": "Cukorszint a merőből", - "Manual BG": "Kézi cukorszint", + "Carbs Given": "Bevitt szénhidrát", + "Insulin Given": "Beadott inzulin", + "Event Time": "Esemény időpontja", + "Please verify that the data entered is correct": "Kérlek ellenőrizd az adatok helyességét", + "BG": "VC", + "Use BG correction in calculation": "Használj VC korrekciót a számításban", + "BG from CGM (autoupdated)": "VC a CGM-től (automatikusan frissítve)", + "BG from meter": "VC a merőtől", + "Manual BG": "Kézi VC", "Quickpick": "Gyors választás", "or": "vagy", "Add from database": "Hozzáadás adatbázisból", - "Use carbs correction in calculation": "Használj szénhidrát korekciót a számításban", + "Use carbs correction in calculation": "Használj szénhidrát korrekciót a számításban", "Use COB correction in calculation": "Használj COB korrekciót a számításban", - "Use IOB in calculation": "Használj IOB kalkulációt", - "Other correction": "Egyébb korrekció", + "Use IOB in calculation": "Használd az IOB-t a számításban", + "Other correction": "Egyéb korrekció", "Rounding": "Kerekítés", "Enter insulin correction in treatment": "Add be az inzulin korrekciót a kezeléshez", "Insulin needed": "Inzulin szükséges", - "Carbs needed": "Szenhidrát szükséges", - "Carbs needed if Insulin total is negative value": "Szénhidrát szükséges ha az összes inzulin negatív érték", + "Carbs needed": "Szénhidrát szükséges", + "Carbs needed if Insulin total is negative value": "Szénhidrát szükséges ha a teljes inzulin negatív", "Basal rate": "Bazál arány", "60 minutes earlier": "60 perccel korábban", "45 minutes earlier": "45 perccel korábban", @@ -156,31 +156,31 @@ "Time in minutes": "Idő percekben", "15 minutes later": "15 perccel később", "20 minutes later": "20 perccel később", - "30 minutes later": "30 perccel kesőbb", + "30 minutes later": "30 perccel később", "45 minutes later": "45 perccel később", "60 minutes later": "60 perccel később", - "Additional Notes, Comments": "Feljegyzések, hozzászólások", - "RETRO MODE": "RETRO mód", + "Additional Notes, Comments": "További megjegyzések, kommentárok", + "RETRO MODE": "RETRO MÓD", "Now": "Most", - "Other": "Más", + "Other": "Egyéb", "Submit Form": "Elküldés", "Profile Editor": "Profil Szerkesztő", "Reports": "Jelentések", - "Add food from your database": "Étel hozzáadása az adatbázisból", + "Add food from your database": "Étel hozzáadása az adatbázisodból", "Reload database": "Adatbázis újratöltése", "Add": "Hozzáadni", - "Unauthorized": "Nincs autorizávla", + "Unauthorized": "Jogosulatlan", "Entering record failed": "Hozzáadás nem sikerült", "Device authenticated": "Berendezés hitelesítve", - "Device not authenticated": "Berendezés nincs hitelesítve", + "Device not authenticated": "Nem hitelesített eszköz", "Authentication status": "Hitelesítés állapota", - "Authenticate": "Hitelesítés", + "Authenticate": "Hitelesít", "Remove": "Eltávolítani", "Your device is not authenticated yet": "A berendezés még nincs hitelesítve", "Sensor": "Szenzor", - "Finger": "Új", + "Finger": "Ujj", "Manual": "Kézi", - "Scale": "Mérték", + "Scale": "Méretarány", "Linear": "Lineáris", "Logarithmic": "Logaritmikus", "Logarithmic (Dynamic)": "Logaritmikus (Dinamikus)", @@ -188,44 +188,44 @@ "Carbs-on-Board": "Aktív szénhidrát (COB)", "Bolus Wizard Preview": "Bolus Varázsló", "Value Loaded": "Érték betöltve", - "Cannula Age": "Kanula élettartalma (CAGE)", + "Cannula Age": "Kanül kora", "Basal Profile": "Bazál profil", - "Silence for 30 minutes": "Lehalkítás 30 percre", - "Silence for 60 minutes": "Lehalkítás 60 percre", - "Silence for 90 minutes": "Lehalkítás 90 percre", - "Silence for 120 minutes": "Lehalkítás 120 percre", + "Silence for 30 minutes": "Némítás 30 percre", + "Silence for 60 minutes": "Némítás 60 percre", + "Silence for 90 minutes": "Némítás 90 percre", + "Silence for 120 minutes": "Némítás 120 percre", "Settings": "Beállítások", - "Units": "Egységek", - "Date format": "Időformátum", + "Units": "Egység", + "Date format": "Dátum formátum", "12 hours": "12 óra", "24 hours": "24 óra", "Log a Treatment": "Kezelés bejegyzése", - "BG Check": "Cukorszint ellenőrzés", - "Meal Bolus": "Étel bólus", - "Snack Bolus": "Tízórai/Uzsonna bólus", + "BG Check": "VC ellenőrzés", + "Meal Bolus": "Étkezési bólus", + "Snack Bolus": "Kis étkezési bólus", "Correction Bolus": "Korrekciós bólus", - "Carb Correction": "Szénhidrát korrekció", + "Carb Correction": "Korrekciós szénhidrát", "Note": "Jegyzet", "Question": "Kérdés", "Exercise": "Edzés", - "Pump Site Change": "Pumpa szett csere", - "CGM Sensor Start": "CGM Szenzor Indítása", - "CGM Sensor Stop": "CGM Szenzor Leállítása", - "CGM Sensor Insert": "CGM Szenzor Csere", + "Pump Site Change": "Beszúrási Pont Csere", + "CGM Sensor Start": "CGM Szenzor Indítás", + "CGM Sensor Stop": "CGM Szenzor Leállítás", + "CGM Sensor Insert": "CGM Szenzor Behelyezés", "Dexcom Sensor Start": "Dexcom Szenzor Indítása", "Dexcom Sensor Change": "Dexcom Szenzor Csere", "Insulin Cartridge Change": "Inzulin Tartály Csere", "D.A.D. Alert": "D.A.D Figyelmeztetés", - "Glucose Reading": "Vércukorszint Érték", - "Measurement Method": "Cukorszint mérés metódusa", - "Meter": "Cukorszint mérő", - "Amount in grams": "Adag grammokban (g)", - "Amount in units": "Adag egységekben", + "Glucose Reading": "Vércukor Érték", + "Measurement Method": "Mérés módja", + "Meter": "Vércukormérő", + "Amount in grams": "Adag gramm-ban", + "Amount in units": "Adag egység-ben", "View all treatments": "Összes kezelés mutatása", - "Enable Alarms": "Figyelmeztetők bekapcsolása", - "Pump Battery Change": "Pumpa elem csere", - "Pump Battery Low Alarm": "Alacsony pumpa töltöttség figyelmeztetés", - "Pump Battery change overdue!": "A pumpa eleme cserére szorul", + "Enable Alarms": "Riasztások bekapcsolása", + "Pump Battery Change": "Pumpa Elem Csere", + "Pump Battery Low Alarm": "Pumpa Elem Alacsony Töltöttség Riasztás", + "Pump Battery change overdue!": "Pumpa Elem cserére szorul!", "When enabled an alarm may sound.": "Bekapcsoláskor hang figyelmeztetés várható", "Urgent High Alarm": "Nagyon magas cukorszint figyelmeztetés", "High Alarm": "Magas cukorszint fegyelmeztetés", @@ -234,26 +234,26 @@ "Stale Data: Warn": "Figyelmeztetés: Az adatok öregnek tűnnek", "Stale Data: Urgent": "Figyelmeztetés: Az adatok nagyon öregnek tűnnek", "mins": "perc", - "Night Mode": "Éjjeli üzemmód", + "Night Mode": "Éjjeli Mód", "When enabled the page will be dimmed from 10pm - 6am.": "Ezt bekapcsolva a képernyő halványabb lesz 22-től 6-ig", - "Enable": "Engedélyezve", - "Show Raw BG Data": "Nyers BG adatok mutatása", + "Enable": "Bekapcsolva", + "Show Raw BG Data": "Nyers VC értékek megjelenítése", "Never": "Soha", - "Always": "Mindíg", - "When there is noise": "Ha zavar van:", - "When enabled small white dots will be displayed for raw BG data": "Bekapcsolasnál kis fehért pontok fogják jelezni a nyers BG adatokat", - "Custom Title": "Saját Cím", + "Always": "Mindig", + "When there is noise": "Ha zajos a mérés", + "When enabled small white dots will be displayed for raw BG data": "Ha be van kapcsolva, kis fehér pontok jelezik a nyers VC értékeket", + "Custom Title": "Egyedi Cím", "Theme": "Téma", - "Default": "Alap", + "Default": "Alapértelmezett", "Colors": "Színek", "Colorblind-friendly colors": "Beállítás színvakok számára", "Reset, and use defaults": "Visszaállítás a kiinduló állapotba", - "Calibrations": "Kalibráció", + "Calibrations": "Kalibrációk", "Alarm Test / Smartphone Enable": "Figyelmeztetés teszt / Mobiltelefon aktiválása", "Bolus Wizard": "Bólus Varázsló", "in the future": "a jövőben", - "time ago": "idő elött", - "hr ago": "óra elött", + "time ago": "idővel ezelőtt", + "hr ago": "órája", "hrs ago": "órája", "min ago": "perce", "mins ago": "perce", @@ -265,12 +265,12 @@ "Medium": "Közepes", "Heavy": "Nehéz", "Treatment type": "Kezelés típusa", - "Raw BG": "Nyers BG", - "Device": "Berendezés", - "Noise": "Zavar", + "Raw BG": "Nyers VC", + "Device": "Készülék", + "Noise": "Zaj", "Calibration": "Kalibráció", "Show Plugins": "Mutasd a kiegészítőket", - "About": "Az aplikációról", + "About": "Az alkalmazásról", "Value in": "Érték", "Carb Time": "Étkezés ideje", "Language": "Nyelv", @@ -294,13 +294,13 @@ "Find and remove entries in the future": "Jövőbeli bejegyzések eltávolítása", "This task find and remove CGM data in the future created by uploader with wrong date/time.": "Ez a feladat megkeresi és eltávolítja az összes CGM adatot amit a feltöltő rossz idővel-dátummal töltött fel", "Remove entries in the future": "Jövőbeli bejegyzések törlése", - "Loading database ...": "Adatbázis betöltése...", + "Loading database ...": "Adatbázis betöltése ...", "Database contains %1 future records": "Az adatbázis %1 jövöbeli adatot tartalmaz", "Remove %1 selected records?": "Kitöröljük a %1 kiválasztott adatot?", "Error loading database": "Hiba az adatbázis betöltése közben", "Record %1 removed ...": "A %1 bejegyzés törölve...", "Error removing record %1": "Hiba lépett fel a %1 bejegyzés törlése közben", - "Deleting records ...": "Bejegyzések törlése...", + "Deleting records ...": "Bejegyzések törlése ...", "%1 records deleted": "%1 bejegyzés törölve", "Clean Mongo status database": "Mongo állapot (status) adatbázis tisztítása", "Delete all documents from devicestatus collection": "Az összes \"devicestatus\" dokumentum törlése", @@ -351,7 +351,7 @@ "Record valid from": "Bejegyzés érvényessége", "Stored profiles": "Tárolt profilok", "Timezone": "Időzóna", - "Duration of Insulin Activity (DIA)": "Inzulin aktivitás időtartalma", + "Duration of Insulin Activity (DIA)": "Inzulin aktivitás időtartama (DIA)", "Represents the typical duration over which insulin takes effect. Varies per patient and per insulin type. Typically 3-4 hours for most pumped insulin and most patients. Sometimes also called insulin lifetime.": "Kimutatja hogy általában meddig hat az inzulin. Változó különböző pácienseknél és inzulinoknál. Általában 3-4 óra között mozog. Néha inzulin élettartalomnak is nevezik.", "Insulin to carb ratio (I:C)": "Inzulin-szénhidrát arány", "Hours:": "Óra:", @@ -413,12 +413,12 @@ "Activity": "Aktivitás", "Targets": "Célok", "Bolus insulin:": "Bólus inzulin", - "Base basal insulin:": "Általános bazal inzulin", + "Base basal insulin:": "Teljes bázis inzulin:", "Positive temp basal insulin:": "Pozitív átmeneti bazál inzulin", "Negative temp basal insulin:": "Negatív átmeneti bazál inzulin", "Total basal insulin:": "Teljes bazál inzulin", "Total daily insulin:": "Teljes napi inzulin", - "Unable to %1 Role": "Hiba a %1 szabály hívásánál", + "Unable to save Role": "Szerep mentése sikertelen", "Unable to delete Role": "Nem lehetett a Szerepet törölni", "Database contains %1 roles": "Az adatbázis %1 szerepet tartalmaz", "Edit Role": "Szerep szerkesztése", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Semélyek - Emberek csoportja, berendezések, stb.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Mindegyik személynek egy egyedi hozzáférése lesz 1 vagy több szereppel. Kattints a tokenre, hogy egy új nézetet kapj - a kapott linket megoszthatod velük.", "Add new Subject": "Új személy hozzáadása", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Személy mentése sikertelen", "Unable to delete Subject": "A személyt nem sikerült törölni", "Database contains %1 subjects": "Az adatbázis %1 személyt tartalmaz", "Edit Subject": "Személy szerkesztése", @@ -543,7 +543,7 @@ "Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.": "A sima és magas kilengésnél mért idő százalékban kifelyezve, ahol a cukorszint aránylag nagyokat változott. A kisebb értékek jobbak ebben az esetben", "Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.": "Az átlagos napi változás az abszolút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.", "Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.": "Az átlagos óránkénti változás az abszút értékek összege elosztva a napok számával. A kisebb érték jobb ebben az esetben.", - "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.", + "Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.": "Tartományon kívüli RMS számítása: a vizsgált időszak összes glükózértékének tartományon kívüli távolságát négyzetre emelik, összegzik, elosztják a glükózértékek számával, és négyzetgyököt vonnak belőle. Ez a mutató hasonló a \"tartományon belül töltött százalék\"-hoz, de jobban súlyozza a tartománytól távolabbi értékeket. Az alacsonyabb érték jobb.", "GVI (Glycemic Variability Index) and PGS (Patient Glycemic Status) are measures developed by Dexcom, detailed can be found here.": "\">itt találhatóak.", "Mean Total Daily Change": "Áltagos napi változás", @@ -574,7 +574,7 @@ "virtAsstTitleCGMStatus": "CGM Státusz", "virtAsstTitleCGMSessionAge": "CGM életkora", "virtAsstTitleCGMTxStatus": "CGM kapcsolat státusza", - "virtAsstTitleCGMTxAge": "CGM Transmitter Age", + "virtAsstTitleCGMTxAge": "CGM Transmitter kora", "virtAsstTitleCGMNoise": "CGM Zaj", "virtAsstTitleDelta": "Csukoszint delta", "virtAsstStatus": "%1 es %2 %3-tól.", @@ -612,8 +612,8 @@ "virtAsstCGMBattOne": "A CGM töltöttsége %1 VOLT volt %2-kor", "virtAsstCGMBattTwo": "A CGM töltöttsége %1 és %2 VOLT volt %3-kor", "virtAsstDelta": "A deltád %1 volt %2 és %3 között", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", - "virtAsstUnknownIntentTitle": "Unknown Intent", + "virtAsstDeltaEstimated": "A becsült deltád %1 volt %2 és %3 között.", + "virtAsstUnknownIntentTitle": "Ismeretlen szándék", "virtAsstUnknownIntentText": "Sajnálom, nem tudom mit szeretnél tőlem.", "Fat [g]": "Zsír [g]", "Protein [g]": "Fehérje [g]", @@ -623,9 +623,9 @@ "Color": "Szinek", "Simple": "Csak cukor", "TDD average": "Átlagos napi adag (TDD)", - "Bolus average": "Bolus average", - "Basal average": "Basal average", - "Base basal average:": "Base basal average:", + "Bolus average": "Átlag bólus", + "Basal average": "Átlag bázis", + "Base basal average:": "Átlag bázis inzulin:", "Carbs average": "Szenhidrát átlag", "Eating Soon": "Hamarosan evés", "Last entry {0} minutes ago": "Utolsó bejegyzés {0} volt", @@ -655,35 +655,42 @@ "Data size": "Adatok mérete", "virtAsstDatabaseSize": "%1 MiB ami %2% a rendelkezésre álló méretből", "virtAsstTitleDatabaseSize": "Adatbázis file méret", - "Carbs/Food/Time": "Carbs/Food/Time", - "Reads enabled in default permissions": "Reads enabled in default permissions", - "Data reads enabled": "Data reads enabled", - "Data writes enabled": "Data writes enabled", - "Data writes not enabled": "Data writes not enabled", - "Color prediction lines": "Color prediction lines", - "Release Notes": "Release Notes", - "Check for Updates": "Check for Updates", - "Open Source": "Open Source", + "Carbs/Food/Time": "Szénhidrát/étel/idő", + "You have administration messages": "Új rendszergazda-üzenetek", + "Admin messages in queue": "Sorban álló rendszergazda-üzenetek", + "Queue empty": "Várólista üres", + "There are no admin messages in queue": "Nincs sorban álló rendszergazda-üzenet", + "Please sign in using the API_SECRET to see your administration messages": "Jelentkezz be API_SECRET-tel, hogy láthasd a rendszergazda-üzeneteket", + "Reads enabled in default permissions": "Olvasások bekapcsolva az alapértelmezett engedélyeknél", + "Data reads enabled": "Adatok olvasása bekapcsolva", + "Data writes enabled": "Adatok írása bekapcsolva", + "Data writes not enabled": "Adatok írása nincs bekapcsolva", + "Color prediction lines": "Színes prognózis vonalak", + "Release Notes": "Kiadási megjegyzések", + "Check for Updates": "Frissítés ellenőrzése", + "Open Source": "Nyílt forráskódú", "Nightscout Info": "Nightscout Info", - "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.", - "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.": "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.", - "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.": "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.", - "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.": "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.", - "Note that time shift is available only when viewing multiple days.": "Note that time shift is available only when viewing multiple days.", - "Please select a maximum of two weeks duration and click Show again.": "Please select a maximum of two weeks duration and click Show again.", - "Show profiles table": "Show profiles table", - "Show predictions": "Show predictions", - "Timeshift on meals larger than": "Timeshift on meals larger than", - "g carbs": "g carbs'", - "consumed between": "consumed between", - "Previous": "Previous", - "Previous day": "Previous day", - "Next day": "Next day", - "Next": "Next", - "Temp basal delta": "Temp basal delta", - "Authorized by token": "Authorized by token", - "Auth role": "Auth role", - "view without token": "view without token", - "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "A Loopalyzer elsődleges célja a zárt hurkú rendszer működésének megjelenítése. Működhet más beállításokkal is: zárt és nyitott hurokkal, és hurok nélkül is. Azonban attól függően, hogy milyen feltöltőt használsz, az milyen gyakorisággal képes rögzíteni és feltölteni az adataidat, valamint hogy képes pótolni a hiányzó adatokat, néhány grafikonon hiányos vagy akár teljesen üres részek is lehetnek. Mindig győződjön meg arról, hogy a grafikonok megfelelőek-e. A legjobb, ha egyszerre egy napot jelenítesz meg, és több napon görgetsz végig.", + "Loopalyzer includes a time shift feature. If you for example have breakfast at 07:00 one day and at 08:00 the day after your average blood glucose curve these two days will most likely look flattened and not show the actual response after a breakfast. Time shift will compute the average time these meals were eaten and then shift all data (carbs, insulin, basal etc.) during both days the corresponding time difference so that both meals align with the average meal start time.": "A Loopalyzer tartalmaz egy időeltolás funkciót. Ha például egy nap 07:00-kor, másnap 08:00-kor reggelizel, a két nap átlagában valószínűleg lapos lesz a vércukorszint-görbéd, és nem látszik a tényleges reggeli utáni hatás. Az időeltolás funkció kiszámítja az étkezések átlagos időpontját, majd mindkét nap az összes adatot (szénhidrát, inzulin, bázisok, stb.) eltolja a megfelelő időeltolódással, hogy mindkét étkezés igazodjon az étkezések átlagos kezdési időpontjához.", + "In this example all data from first day is pushed 30 minutes forward in time and all data from second day 30 minutes backward in time so it appears as if you had had breakfast at 07:30 both days. This allows you to see your actual average blood glucose response from a meal.": "Ebben a példában az első nap összes adata 30 perccel előre lett tolva, a második nap összes adata pedig 30 perccel hátra lett tolva, tehát úgy tűnik, mintha mindkét nap 07:30-kor reggeliztél volna. Ez láthatóvá teszi az étkezés tényleges átlagos vércukorra gyakorolt hatását.", + "Time shift highlights the period after the average meal start time in gray, for the duration of the DIA (Duration of Insulin Action). As all data points the entire day are shifted the curves outside the gray area may not be accurate.": "Az időeltolás az étkezés átlagos kezdési időpontja utáni időszakot szürke színnel emeli ki, a DIA (inzulin aktivitás időtartama) alatt. Mivel egész nap az összes adatpont eltolódik, előfordulhat, hogy a görbék a szürke területen kívül nem pontosak.", + "Note that time shift is available only when viewing multiple days.": "Ne feledd: az időeltolás csak több nap megtekintése esetén érhető el.", + "Please select a maximum of two weeks duration and click Show again.": "Válassz legfeljebb két hét időtartamot, majd kattints újra a Megjelenítés gombra.", + "Show profiles table": "Profil táblázat megjelenítése", + "Show predictions": "Prognózis megjelenítése", + "Timeshift on meals larger than": "Időeltolás étkezéseknél, melyek nagyobbak mint", + "g carbs": "g szénhidrát'", + "consumed between": "elfogyasztva ekkor", + "Previous": "Előző", + "Previous day": "Előző nap", + "Next day": "Következő nap", + "Next": "Következő", + "Temp basal delta": "Átmeneti bázis delta", + "Authorized by token": "Tokennel engedélyezve", + "Auth role": "Hitelesítési szerep", + "view without token": "megtekintés token nélkül", + "Remove stored token": "Tárolt token eltávolítása", + "Weekly Distribution": "Heti eloszlás", + "Failed authentication": "Sikertelen hitelesítés", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A(z) %1 IP-címmel rendelkező eszköz hibás adatokkal próbálta meg a hitelesítést a Nightscout-tal. Ellenőrizd, hogy van-e rossz API_SECRET-tel vagy tokennel rendelkező feltöltő." } diff --git a/translations/it_IT.json b/translations/it_IT.json index 63aa11d55dc2..a138fac8ae66 100644 --- a/translations/it_IT.json +++ b/translations/it_IT.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Insulina basale Temp negativa:", "Total basal insulin:": "Insulina Basale Totale:", "Total daily insulin:": "Totale giornaliero d'insulina:", - "Unable to %1 Role": "Impossibile %1 Ruolo", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Impossibile eliminare il Ruolo", "Database contains %1 roles": "Database contiene %1 ruolo", "Edit Role": "Modifica ruolo", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Soggetti - persone, dispositivi, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Ogni soggetto avrà un gettone d'accesso unico e 1 o più ruoli. Fare clic sul gettone d'accesso per aprire una nuova vista con il soggetto selezionato, questo legame segreto può quindi essere condiviso.", "Add new Subject": "Aggiungere un nuovo Soggetto", - "Unable to %1 Subject": "Impossibile %1 eliminare oggetto", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Impossibile eliminare Soggetto", "Database contains %1 subjects": "Database contiene %1 soggetti", "Edit Subject": "Modifica Oggetto", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Questo è il %2% dello spazio del database disponibile.", "virtAsstTitleDatabaseSize": "Dimensione file database", "Carbs/Food/Time": "Carboidrati/Cibo/Tempo", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/ja_JP.json b/translations/ja_JP.json index bdae2d591b3e..ffae78fe5439 100644 --- a/translations/ja_JP.json +++ b/translations/ja_JP.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negative temp basal insulin:", "Total basal insulin:": "Total basal insulin:", "Total daily insulin:": "Total daily insulin:", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Unable to delete Role", "Database contains %1 roles": "Database contains %1 roles", "Edit Role": "Edit Role", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/ko_KR.json b/translations/ko_KR.json index 7790608a30ca..347889e422a2 100644 --- a/translations/ko_KR.json +++ b/translations/ko_KR.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "남은 임시 basal 인슐린", "Total basal insulin:": "전체 basal 인슐린", "Total daily insulin:": "하루 인슐린 총량", - "Unable to %1 Role": "%1로 비활성", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "삭제로 비활성", "Database contains %1 roles": "데이터베이스가 %1 포함", "Edit Role": "편집 모드", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "주제 - 사람, 기기 등", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "각 주제는 유일한 access token을 가지고 1 또는 그 이상의 역할을 가질 것이다. 선택된 주제와 새로운 뷰를 열기 위해 access token을 클릭하세요. 이 비밀 링크는 공유되어질 수 있다.", "Add new Subject": "새 주제 추가", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "주제를 지우기 위해 비활성화", "Database contains %1 subjects": "데이터베이스는 %1 주제를 포함", "Edit Subject": "주제 편집", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/nb_NO.json b/translations/nb_NO.json index 01147da78674..07dbdf4fb2d5 100644 --- a/translations/nb_NO.json +++ b/translations/nb_NO.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativ midlertidig basalinsulin:", "Total basal insulin:": "Total daglig basalinsulin:", "Total daily insulin:": "Total daglig insulin", - "Unable to %1 Role": "Kan ikke %1 rolle", + "Unable to save Role": "Kan ikke lagre rolle", "Unable to delete Role": "Kan ikke ta bort rolle", "Database contains %1 roles": "Databasen inneholder %1 roller", "Edit Role": "Editer rolle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Ressurser - Brukere, enheter osv", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Hver enkelt ressurs får en unik tilgangsnøkkel og en eller flere roller. Klikk på tilgangsnøkkelen for å åpne valgte ressurs, denne hemmelige lenken kan så deles.", "Add new Subject": "Legg til ny ressurs", - "Unable to %1 Subject": "Kan ikke %1 ressurs", + "Unable to save Subject": "Kan ikke lagre emne", "Unable to delete Subject": "Kan ikke slette ressurs", "Database contains %1 subjects": "Databasen inneholder %1 ressurser", "Edit Subject": "Editer ressurs", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Dette er %2% av tilgjengelig databaseplass.", "virtAsstTitleDatabaseSize": "Database filstørrelse", "Carbs/Food/Time": "Karbo/Mat/Abs.tid", + "You have administration messages": "Du har administrasjonsmeldinger", + "Admin messages in queue": "Admin meldinger i køen", + "Queue empty": "Kø tom", + "There are no admin messages in queue": "Det er ingen admin meldinger i køen", + "Please sign in using the API_SECRET to see your administration messages": "Vennligst logg inn med API_SECRET for å se administrasjonsmeldingene dine", "Reads enabled in default permissions": "Lesetilgang er aktivert i innstillingene", "Data reads enabled": "Lesetilgang aktivert", "Data writes enabled": "Skrivetilgang aktivert", @@ -685,5 +690,7 @@ "Auth role": "Autorisert", "view without token": "vis uten tilgangsnøkkel", "Remove stored token": "Fjern lagret tilgangsnøkkel", - "Weekly Distribution": "Ukentlige resultat" + "Weekly Distribution": "Ukentlige resultat", + "Failed authentication": "Autentisering mislykket", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "En enhet med IP-adresse %1 forsøkte å autentisere Nightscout med feil legitimasjon. Sjekk om du har en opplaster-app med feil API_SECRET eller tilgangsnøkkel." } diff --git a/translations/nl_NL.json b/translations/nl_NL.json index 3ff51e894105..6b529d6d94ca 100644 --- a/translations/nl_NL.json +++ b/translations/nl_NL.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatieve tijdelijke basaal insuline", "Total basal insulin:": "Totaal basaal insuline", "Total daily insulin:": "Totaal dagelijkse insuline", - "Unable to %1 Role": "Kan %1 rol niet verwijderen", + "Unable to save Role": "Kan rol niet opslaan", "Unable to delete Role": "Niet mogelijk rol te verwijderen", "Database contains %1 roles": "Database bevat %1 rollen", "Edit Role": "Pas rol aan", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Onderwerpen - Mensen, apparaten etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Elk onderwerp heeft een unieke toegangscode en 1 of meer rollen. Klik op de toegangscode om een nieu venster te openen om het onderwerp te bekijken, deze verborgen link kan gedeeld worden.", "Add new Subject": "Voeg onderwerp toe", - "Unable to %1 Subject": "Kan onderwerp niet %1", + "Unable to save Subject": "Kan onderwerp niet opslaan", "Unable to delete Subject": "Kan onderwerp niet verwijderen", "Database contains %1 subjects": "Database bevat %1 onderwerpen", "Edit Subject": "Pas onderwerp aan", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB dat is %2% van de beschikbaare database ruimte", "virtAsstTitleDatabaseSize": "Database bestandsgrootte", "Carbs/Food/Time": "Koolhydraten/Voedsel/Tijd", + "You have administration messages": "U heeft beheerberichten", + "Admin messages in queue": "Administratie berichten in wachtrij", + "Queue empty": "Wachtrij leeg", + "There are no admin messages in queue": "Er staan geen administratie berichten in de wachtrij", + "Please sign in using the API_SECRET to see your administration messages": "Log in met behulp van uw API_SECRET om de administratie berichten te zien", "Reads enabled in default permissions": "Lezen ingeschakeld in standaard toestemmingen", "Data reads enabled": "Gegevens lezen ingeschakeld", "Data writes enabled": "Gegevens schrijven ingeschakeld", @@ -685,5 +690,7 @@ "Auth role": "Auth rol", "view without token": "bekijken zonder token", "Remove stored token": "Verwijder opgeslagen token", - "Weekly Distribution": "Wekelijkse spreiding" + "Weekly Distribution": "Wekelijkse spreiding", + "Failed authentication": "Mislukte authenticatie", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Een apparaat met IP adres %1 heeft een poging gedaan om te authenticeren met Nightscout met verkeerde inloggegevens. Controleer of je een uploader hebt ingesteld met een verkeerd API_SECRET of token?" } diff --git a/translations/pl_PL.json b/translations/pl_PL.json index 5dd6f72d24be..458cd0b64a57 100644 --- a/translations/pl_PL.json +++ b/translations/pl_PL.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Zmniejszona bazowa dawka insuliny", "Total basal insulin:": "Całkowita ilość bazowej dawki insuliny", "Total daily insulin:": "Całkowita dzienna ilość insuliny", - "Unable to %1 Role": "Nie można %1 roli", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Nie można usunąć roli", "Database contains %1 roles": "Baza danych zawiera %1 ról", "Edit Role": "Edycja roli", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Obiekty - ludzie, urządzenia itp", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Każdy obiekt będzie miał unikalny token dostępu i jedną lub więcej ról. Kliknij token dostępu, aby otworzyć nowy widok z wybranym obiektem, ten tajny link może być następnie udostępniony", "Add new Subject": "Dodaj obiekt", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Nie można usunąć obiektu", "Database contains %1 subjects": "Baza danych zawiera %1 obiektów", "Edit Subject": "Edytuj obiekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB co stanowi %2% przestrzeni dostępnej dla bazy danych", "virtAsstTitleDatabaseSize": "Rozmiar pliku bazy danych", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/pt_BR.json b/translations/pt_BR.json index 3f6bcd32f188..06d8a79b7f69 100644 --- a/translations/pt_BR.json +++ b/translations/pt_BR.json @@ -24,9 +24,9 @@ "Last 2 weeks": "Últimas 2 semanas", "Last month": "Mês passado", "Last 3 months": "Últimos 3 meses", - "between": "between", - "around": "around", - "and": "and", + "between": "entre", + "around": "cerca de", + "and": "e", "From": "De", "To": "a", "Notes": "Notas", @@ -53,13 +53,13 @@ "": "", "Result is empty": "Resultado vazio", "Day to day": "Dia a dia", - "Week to week": "Week to week", + "Week to week": "Semana a semana", "Daily Stats": "Estatísticas diárias", "Percentile Chart": "Percentis", "Distribution": "Distribuição", "Hourly stats": "Estatísticas por hora", - "netIOB stats": "netIOB stats", - "temp basals must be rendered to display this report": "temp basals must be rendered to display this report", + "netIOB stats": "Estatísticas de netIOB", + "temp basals must be rendered to display this report": "basais temporárias devem ser renderizadas para exibir este relatório", "No data available": "Não há dados", "Low": "Baixo", "In Range": "Na meta", @@ -94,7 +94,7 @@ "No API secret hash stored yet. You need to enter API secret.": "Hash de segredo de API inexistente. Insira um segredo de API.", "Database loaded": "Banco de dados carregado", "Error: Database failed to load": "Erro: Banco de dados não carregado", - "Error": "Error", + "Error": "Erro", "Create new record": "Criar novo registro", "Save record": "Salvar registro", "Portions": "Porções", @@ -108,7 +108,7 @@ "Your API secret must be at least 12 characters long": "Seu segredo de API deve conter no mínimo 12 caracteres", "Bad API secret": "Segredo de API incorreto", "API secret hash stored": "Segredo de API guardado", - "Status": "Status", + "Status": "Estado", "Not loaded": "Não carregado", "Food Editor": "Editor de alimentos", "Your database": "Seu banco de dados", @@ -118,8 +118,8 @@ "Record": "Gravar", "Quick picks": "Seleção rápida", "Show hidden": "Mostrar ocultos", - "Your API secret or token": "Your API secret or token", - "Remember this device. (Do not enable this on public computers.)": "Remember this device. (Do not enable this on public computers.)", + "Your API secret or token": "Suq senha do API ou token", + "Remember this device. (Do not enable this on public computers.)": "Lembrar deste dispositivo. (Não ative isso em computadores de acesso público.)", "Treatments": "Procedimentos", "Time": "Hora", "Event Type": "Tipo de evento", @@ -210,7 +210,7 @@ "Exercise": "Exercício", "Pump Site Change": "Troca de catéter", "CGM Sensor Start": "Início de sensor", - "CGM Sensor Stop": "CGM Sensor Stop", + "CGM Sensor Stop": "Parar sensor de glicose", "CGM Sensor Insert": "Troca de sensor", "Dexcom Sensor Start": "Início de sensor", "Dexcom Sensor Change": "Troca de sensor", @@ -223,8 +223,8 @@ "Amount in units": "Quantidade em unidades", "View all treatments": "Visualizar todos os procedimentos", "Enable Alarms": "Ativar alarmes", - "Pump Battery Change": "Pump Battery Change", - "Pump Battery Low Alarm": "Pump Battery Low Alarm", + "Pump Battery Change": "Bateria da bomba de infusão de insulina descarregada", + "Pump Battery Low Alarm": "Alarme de bateria baixa da bomba de infusão de insulina", "Pump Battery change overdue!": "Pump Battery change overdue!", "When enabled an alarm may sound.": "Quando ativado, um alarme poderá soar", "Urgent High Alarm": "URGENTE: Alarme de glicemia alta", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Insulina basal temporária negativa:", "Total basal insulin:": "Insulina basal total:", "Total daily insulin:": "Insulina diária total:", - "Unable to %1 Role": "Função %1 não foi possível", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Não foi possível apagar a Função", "Database contains %1 roles": "Banco de dados contém %1 Funções", "Edit Role": "Editar Função", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Assunto - Pessoas, dispositivos, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Cada assunto terá um único token de acesso e uma ou mais Funções. Clique no token de acesso para abrir uma nova visualização com o assunto selecionado. Este link secreto poderá então ser compartilhado", "Add new Subject": "Adicionar novo assunto", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Impossível apagar assunto", "Database contains %1 subjects": "Banco de dados contém %1 assuntos", "Edit Subject": "Editar assunto", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/ro_RO.json b/translations/ro_RO.json index 9f0cdb25db3d..d931cb6bbdf5 100644 --- a/translations/ro_RO.json +++ b/translations/ro_RO.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Bazală temporară micșorată:", "Total basal insulin:": "Bazală totală:", "Total daily insulin:": "Insulină totală zilnică:", - "Unable to %1 Role": "Imposibil de %1 Rolul", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Imposibil de șters Rolul", "Database contains %1 roles": "Baza de date conține %1 rol(uri)", "Edit Role": "Editează Rolul", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subiecte - Persoane, dispozitive, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Fiecare subiect va avea o cheie unică de acces și unul sau mai multe roluri. Apăsați pe cheia de acces pentru a vizualiza subiectul selectat, acest link poate fi distribuit.", "Add new Subject": "Adaugă un Subiect nou", - "Unable to %1 Subject": "Imposibil de %1 Subiect", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Imposibil de șters Subiectul", "Database contains %1 subjects": "Baza de date are %1 subiecți", "Edit Subject": "Editează Subiectul", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MB. Aceasta este %2% din spațiul disponibil pentru baza de date.", "virtAsstTitleDatabaseSize": "Dimensiunea bazei de date", "Carbs/Food/Time": "Carbohidrati/Mâncare/Timp", + "You have administration messages": "Aveți mesaje de administrare", + "Admin messages in queue": "Mesajele administratorului în așteptare", + "Queue empty": "Coadă goală", + "There are no admin messages in queue": "Nu există mesaje de administrator în coadă", + "Please sign in using the API_SECRET to see your administration messages": "Te rugăm să te autentifici folosind API_SECRET pentru a vedea mesajele de administrare", "Reads enabled in default permissions": "Citiri activate în permisiunile implicite", "Data reads enabled": "Citire date activată", "Data writes enabled": "Scriere date activată", @@ -685,5 +690,7 @@ "Auth role": "Rolul de autentificare", "view without token": "vizualizare fără cheie de acces", "Remove stored token": "Elimină cheia de acces stocată", - "Weekly Distribution": "Distribuție săptămânală" + "Weekly Distribution": "Distribuție săptămânală", + "Failed authentication": "Autentificare eșuată", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Un dispozitiv cu adresa IP %1 a încercat autentificarea la Nightscout cu datele de autentificare greșite. Verificați dacă o instanta de încărcare a fost configurata cu API_SECRET sau token greșit?" } diff --git a/translations/ru_RU.json b/translations/ru_RU.json index a69750402d6c..a076d2a077b2 100644 --- a/translations/ru_RU.json +++ b/translations/ru_RU.json @@ -301,7 +301,7 @@ "Record %1 removed ...": "запись %1 удалена", "Error removing record %1": "Ошибка удаления записи %1", "Deleting records ...": "Записи удаляются", - "%1 records deleted": "% записей удалено", + "%1 records deleted": "%1 записей удалено", "Clean Mongo status database": "Очистить статус базы данных Mongo", "Delete all documents from devicestatus collection": "Стереть все документы из коллекции статус устройства", "This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.": "Эта опция удаляет все документы из коллекции статус устройства. Полезно когда состояние батвреи загрузчика не обновляется", @@ -318,8 +318,8 @@ "This task removes all documents from entries collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции entries старше 180 дней. Полезно, когда статус батареи загрузчика должным образом не обновляется", "Delete old documents": "Удалить старые документы", "Delete old documents from entries collection?": "Удалить старые документы коллекции entries?", - "%1 is not a valid number": "% не является допустимым значением", - "%1 is not a valid number - must be more than 2": "% не является допустимым значением - должно быть больше 2", + "%1 is not a valid number": "%1 не является допустимым значением", + "%1 is not a valid number - must be more than 2": "%1 не является допустимым значением - должно быть больше 2", "Clean Mongo treatments database": "Очистить базу лечения Mongo", "Delete all documents from treatments collection older than 180 days": "Удалить все документы коллекции treatments старше 180 дней", "This task removes all documents from treatments collection that are older than 180 days. Useful when uploader battery status is not properly updated.": "Это удалит все документы коллекции treatments старше 180 дней. Полезно, когда статус батареи загрузчика не обновляется должным образом", @@ -393,8 +393,8 @@ "Remove insulin": "Удалить инсулин", "Remove carbs": "Удалить углеводы", "Change treatment time to %1 ?": "Изменить время события на %1 ?", - "Change carbs time to %1 ?": "Изменить время приема углеводов на % ?", - "Change insulin time to %1 ?": "Изменить время подачи инсулина на % ?", + "Change carbs time to %1 ?": "Изменить время приема углеводов на %1 ?", + "Change insulin time to %1 ?": "Изменить время подачи инсулина на %1 ?", "Remove treatment ?": "Удалить событие ?", "Remove insulin from treatment ?": "Удалить инсулин из событий ?", "Remove carbs from treatment ?": "Удалить углеводы из событий ?", @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Отриц знач временн базал инс", "Total basal insulin:": "Всего базал инсулина", "Total daily insulin:": "Всего суточн базал инсулина", - "Unable to %1 Role": "Невозможно назначить %1 Роль", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Невозможно удалить Роль", "Database contains %1 roles": "База данных содержит %1 Ролей", "Edit Role": "Редактировать Роль", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Субъекты - Люди, устройства и т п", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Каждый субъект получает уникальный код доступа и 1 или более ролей. Нажмите на иконку кода доступа чтобы открыть новое окно с выбранным субъектом, эту секретную ссылку можно переслать.", "Add new Subject": "Добавить нового субъекта", - "Unable to %1 Subject": "Невозможно %1 Субъект", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Невозможно удалить Субъект ", "Database contains %1 subjects": "База данных содержит %1 субъекта/ов", "Edit Subject": "Редактировать Субъект", @@ -480,9 +480,9 @@ "Expected effect": "Ожидаемый эффект", "Expected outcome": "Ожидаемый результат", "Carb Equivalent": "Эквивалент в углеводах", - "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Избыток инсулина равного %1U, необходимого для достижения нижнего целевого значения, углеводы не приняты в расчет", - "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Избыток инсулина, равного %1U, необходимого для достижения нижнего целевого значения, ПОКРОЙТЕ АКТИВН IOB ИНСУЛИН УГЛЕВОДАМИ", - "%1U reduction needed in active insulin to reach low target, too much basal?": "Для достижения нижнего целевого значения необходимо понизить величину активного инсулина на %1U, велика база?", + "Excess insulin equivalent %1U more than needed to reach low target, not accounting for carbs": "Избыток инсулина равного %1ед, необходимого для достижения нижнего целевого значения, углеводы не приняты в расчет", + "Excess insulin equivalent %1U more than needed to reach low target, MAKE SURE IOB IS COVERED BY CARBS": "Избыток инсулина, равного %1ед, необходимого для достижения нижнего целевого значения, ПОКРОЙТЕ АКТИВН IOB ИНСУЛИН УГЛЕВОДАМИ", + "%1U reduction needed in active insulin to reach low target, too much basal?": "Для достижения нижнего целевого значения необходимо понизить величину активного инсулина на %1ед, велика база?", "basal adjustment out of range, give carbs?": "Корректировка базала вне диапазона, добавить углеводов?", "basal adjustment out of range, give bolus?": "Корректировка базала вне диапазона, добавить болюс?", "above high": "Выше верхней границы", @@ -516,9 +516,9 @@ "Source": "Источник", "Stale data, check rig?": "Старые данные, проверьте загрузчик", "Last received:": "Получено:", - "%1m ago": "% мин назад", - "%1h ago": "% час назад", - "%1d ago": "% дн назад", + "%1m ago": "%1 мин назад", + "%1h ago": "%1 час назад", + "%1d ago": "%1 дн назад", "RETRO": "ПРОШЛОЕ", "SAGE": "Сенсор работает", "Sensor change/restart overdue!": "Рестарт сенсора пропущен", @@ -612,7 +612,7 @@ "virtAsstCGMBattOne": "Батарея мониторинга была %1 вольт по состоянию на %2.", "virtAsstCGMBattTwo": "Уровни заряда аккумулятора были %1 вольт и %2 вольт по состоянию на %3.", "virtAsstDelta": "Дельта была %1 между %2 и %3.", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Ваша ожидаемая дельта была %1 между %2 и %3.", "virtAsstUnknownIntentTitle": "Неизвестное намерение", "virtAsstUnknownIntentText": "Ваш запрос непонятен", "Fat [g]": "жиры [g]", @@ -656,13 +656,18 @@ "virtAsstDatabaseSize": "%1 MiB Это %2% доступного места в базе данных.", "virtAsstTitleDatabaseSize": "Размер файла базы данных", "Carbs/Food/Time": "Углеводы/Еда/Время", + "You have administration messages": "У вас есть сообщения администрирования", + "Admin messages in queue": "Сообщения администрирования в очереди", + "Queue empty": "Очередь пуста", + "There are no admin messages in queue": "В очереди нет сообщений администрирования", + "Please sign in using the API_SECRET to see your administration messages": "Пожалуйста, войдите, используя API_SECRET, чтобы увидеть ваши сообщения администрирования", "Reads enabled in default permissions": "Чтение включено в разрешениях по умолчанию", "Data reads enabled": "Чтение данных включено", "Data writes enabled": "Запись данных включена", "Data writes not enabled": "Запись данных не включена", - "Color prediction lines": "Color prediction lines", + "Color prediction lines": "Цветные линии прогнозов", "Release Notes": "Release Notes", - "Check for Updates": "Check for Updates", + "Check for Updates": "Проверить наличие обновлений", "Open Source": "Open Source", "Nightscout Info": "Nightscout Info", "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.": "The primary purpose of Loopalyzer is to visualise how the Loop closed loop system performs. It may work with other setups as well, both closed and open loop, and non loop. However depending on which uploader you use, how frequent it is able to capture your data and upload, and how it is able to backfill missing data some graphs may have gaps or even be completely empty. Always ensure the graphs look reasonable. Best is to view one day at a time and scroll through a number of days first to see.", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Ошибка аутентификации", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "Устройство с IP-адресом %1 попыталось авторизоваться в Nightscout с неверными учетными данными. Проверьте, есть ли у вас загрузчик, настроенный с неверным API_SECRET или токеном." } diff --git a/translations/sl_SI.json b/translations/sl_SI.json index 7cb94728a1c0..06c4b29fb752 100644 --- a/translations/sl_SI.json +++ b/translations/sl_SI.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatívny dočasný bazálny inzulín:", "Total basal insulin:": "Celkový bazálny inzulín:", "Total daily insulin:": "Celkový denný inzulín:", - "Unable to %1 Role": "Chyba volania %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Rola sa nedá zmazať", "Database contains %1 roles": "Databáza obsahuje %1 rolí", "Edit Role": "Editovať rolu", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjekty - ľudia, zariadenia atď...", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Každý objekt má svoj unikátny prístupový token a 1 alebo viac rolí. Klikni na prístupový token pre otvorenie nového okna pre tento subjekt. Tento link je možné zdielať.", "Add new Subject": "Pridať nový subjekt", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Subjekt sa nedá odstrániť", "Database contains %1 subjects": "Databáza obsahuje %1 subjektov", "Edit Subject": "Editovať subjekt", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/sv_SE.json b/translations/sv_SE.json index ecf852a45a37..4bb1e3030746 100644 --- a/translations/sv_SE.json +++ b/translations/sv_SE.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negativ tempbasal för insulin:", "Total basal insulin:": "Total dagsdos basalinsulin:", "Total daily insulin:": "Total dagsdos insulin", - "Unable to %1 Role": "Kan inte ta bort roll %1", + "Unable to save Role": "Det går inte att spara Roll", "Unable to delete Role": "Kan ej ta bort roll", "Database contains %1 roles": "Databasen innehåller %1 roller", "Edit Role": "Editera roll", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Ämnen - Användare, Enheter, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Varje ämne får en unik säkerhetsnyckel och en eller flera roller. Klicka på accessnyckeln för att öppna en ny vy med det valda ämnet, denna hemliga länk kan sedan delas.", "Add new Subject": "Lägg till nytt ämne", - "Unable to %1 Subject": "Det gick inte att %1 Ämne", + "Unable to save Subject": "Det gick inte att spara Ämnet", "Unable to delete Subject": "Kan ej ta bort ämne", "Database contains %1 subjects": "Databasen innehåller %1 ämnen", "Edit Subject": "Editera ämne", @@ -612,7 +612,7 @@ "virtAsstCGMBattOne": "Ditt CGM batteri var %1 volt från och med %2.", "virtAsstCGMBattTwo": "Dina CGM batterinivåer var %1 volt och %2 volt från och med %3.", "virtAsstDelta": "Ditt delta var %1 mellan %2 och %3.", - "virtAsstDeltaEstimated": "Your estimated delta was %1 between %2 and %3.", + "virtAsstDeltaEstimated": "Ditt uppskattade delta var %1 mellan %2 och %3.", "virtAsstUnknownIntentTitle": "Okänd Avsikt", "virtAsstUnknownIntentText": "Jag är ledsen, jag vet inte vad du ber om.", "Fat [g]": "Fett [g]", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. Det är %2% av tillgänglig databasutrymme.", "virtAsstTitleDatabaseSize": "Databasens filstorlek", "Carbs/Food/Time": "Kolhydrater/Mat/Tid", + "You have administration messages": "Du har administrationsmeddelanden", + "Admin messages in queue": "Admin meddelanden i kö", + "Queue empty": "Kön är tom", + "There are no admin messages in queue": "Det finns inga administratörsmeddelanden i kön", + "Please sign in using the API_SECRET to see your administration messages": "Logga in med API_SECRET för att se dina administrationsmeddelanden", "Reads enabled in default permissions": "Läser aktiverade i standardbehörigheter", "Data reads enabled": "Dataläsningar aktiverade", "Data writes enabled": "Dataskrivningar aktiverade", @@ -685,5 +690,7 @@ "Auth role": "Auth roll", "view without token": "visa utan token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Misslyckad autentisering", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/tr_TR.json b/translations/tr_TR.json index adabab552be3..3f5c0f1313d8 100644 --- a/translations/tr_TR.json +++ b/translations/tr_TR.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negatif geçici bazal insülin:", "Total basal insulin:": "Toplam bazal insülin:", "Total daily insulin:": "Günlük toplam insülin:", - "Unable to %1 Role": "%1 Rolü yapılandırılamadı", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Rol silinemedi", "Database contains %1 roles": "Veritabanı %1 rol içerir", "Edit Role": "Rolü düzenle", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Konular - İnsanlar, Cihazlar, vb.", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Her konu benzersiz bir erişim anahtarı ve bir veya daha fazla rol alır. Seçilen konuyla ilgili yeni bir görünüm elde etmek için erişim tuşuna tıklayın. Bu gizli bağlantı paylaşılabilinir.", "Add new Subject": "Yeni konu ekle", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Konu silinemedi", "Database contains %1 subjects": "Veritabanı %1 konu içeriyor", "Edit Subject": "Konuyu düzenle", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/zh_CN.json b/translations/zh_CN.json index 78bce9212c38..140b2a21ea73 100644 --- a/translations/zh_CN.json +++ b/translations/zh_CN.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "其余临时基础率胰岛素", "Total basal insulin:": "基础率胰岛素合计", "Total daily insulin:": "每日胰岛素合计", - "Unable to %1 Role": "%1角色不可用", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "无法删除角色", "Database contains %1 roles": "数据库包含%1个角色", "Edit Role": "编辑角色", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "用户 - 人、设备等", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "每个用户具有唯一的访问令牌和一个或多个角色。在访问令牌上单击打开新窗口查看已选择用户,此时该链接可分享。", "Add new Subject": "添加新用户", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "无法删除用户", "Database contains %1 subjects": "数据库包含%1个用户", "Edit Subject": "编辑用户", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } diff --git a/translations/zh_TW.json b/translations/zh_TW.json index 085bfed60e47..9df57623a959 100644 --- a/translations/zh_TW.json +++ b/translations/zh_TW.json @@ -418,7 +418,7 @@ "Negative temp basal insulin:": "Negative temp basal insulin:", "Total basal insulin:": "Total basal insulin:", "Total daily insulin:": "Total daily insulin:", - "Unable to %1 Role": "Unable to %1 Role", + "Unable to save Role": "Unable to save Role", "Unable to delete Role": "Unable to delete Role", "Database contains %1 roles": "Database contains %1 roles", "Edit Role": "Edit Role", @@ -433,7 +433,7 @@ "Subjects - People, Devices, etc": "Subjects - People, Devices, etc", "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.": "Each subject will have a unique access token and 1 or more roles. Click on the access token to open a new view with the selected subject, this secret link can then be shared.", "Add new Subject": "Add new Subject", - "Unable to %1 Subject": "Unable to %1 Subject", + "Unable to save Subject": "Unable to save Subject", "Unable to delete Subject": "Unable to delete Subject", "Database contains %1 subjects": "Database contains %1 subjects", "Edit Subject": "Edit Subject", @@ -656,6 +656,11 @@ "virtAsstDatabaseSize": "%1 MiB. That is %2% of available database space.", "virtAsstTitleDatabaseSize": "Database file size", "Carbs/Food/Time": "Carbs/Food/Time", + "You have administration messages": "You have administration messages", + "Admin messages in queue": "Admin messages in queue", + "Queue empty": "Queue empty", + "There are no admin messages in queue": "There are no admin messages in queue", + "Please sign in using the API_SECRET to see your administration messages": "Please sign in using the API_SECRET to see your administration messages", "Reads enabled in default permissions": "Reads enabled in default permissions", "Data reads enabled": "Data reads enabled", "Data writes enabled": "Data writes enabled", @@ -685,5 +690,7 @@ "Auth role": "Auth role", "view without token": "view without token", "Remove stored token": "Remove stored token", - "Weekly Distribution": "Weekly Distribution" + "Weekly Distribution": "Weekly Distribution", + "Failed authentication": "Failed authentication", + "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?": "A device at IP address %1 attempted authenticating with Nightscout with wrong credentials. Check if you have an uploader setup with wrong API_SECRET or token?" } From 5aa98eeaf64a27834ebbd7f50469defd261e2221 Mon Sep 17 00:00:00 2001 From: Caleb Date: Thu, 21 Jan 2021 01:51:58 -0700 Subject: [PATCH 015/129] Implemented #6720 - Added es_ES template for Alexa (#6779) --- docs/plugins/alexa-templates/es-es.json | 320 ++++++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 docs/plugins/alexa-templates/es-es.json diff --git a/docs/plugins/alexa-templates/es-es.json b/docs/plugins/alexa-templates/es-es.json new file mode 100644 index 000000000000..dd705d91bd96 --- /dev/null +++ b/docs/plugins/alexa-templates/es-es.json @@ -0,0 +1,320 @@ +{ + "interactionModel": { + "languageModel": { + "invocationName": "mi monitor", + "intents": [ + { + "name": "NSStatus", + "slots": [], + "samples": [ + "Como lo estoy haciendo" + ] + }, + { + "name": "LastLoop", + "slots": [], + "samples": [ + "Cuando fue mi ultimo bucle" + ] + }, + { + "name": "MetricNow", + "slots": [ + { + "name": "metric", + "type": "LIST_OF_METRICS", + "samples": [ + "que es {pwd} {metric}", + "cual es mi {metric}", + "como es {pwd} {metric}", + "como es {metric}", + "cuanta {metric} tiene {pwd}", + "cuanta {metric} tengo", + "cuanta {metric}", + "{pwd} {metric}", + "{metric}", + "mi {metric}" + ] + }, + { + "name": "pwd", + "type": "AMAZON.FirstName" + } + ], + "samples": [ + "cuanto {metric} le queda a {pwd}", + "cual es mi {metric}", + "cuanta {metric} queda", + "Cuanta {metric}", + "como es {metric}", + "como es mi {metric}", + "como es {pwd} {metric}", + "como esta mi {metric}", + "que es {metric}", + "cuanta {metric} tengo", + "cuanta {metric} tiene {pwd}", + "que es {pwd} {metric}" + ] + }, + { + "name": "AMAZON.NavigateHomeIntent", + "samples": [] + }, + { + "name": "AMAZON.StopIntent", + "samples": [] + }, + { + "name": "AMAZON.CancelIntent", + "samples": [] + }, + { + "name": "AMAZON.HelpIntent", + "samples": [] + } + ], + "types": [ + { + "name": "LIST_OF_METRICS", + "values": [ + { + "name": { + "value": "delta", + "synonyms": [ + "delta de glucosa en sangre", + "delta de azucar en sangre", + "delta azucar", + "delta glucosa" + ] + } + }, + { + "name": { + "value": "uploader battery", + "synonyms": [ + "bateria restante del cargador", + "carga de la batera" + ] + } + }, + { + "name": { + "value": "pump reservoir", + "synonyms": [ + "insulina restante", + "queda insulina", + "insulina que queda", + "insulina en mi bomba", + "insulina" + ] + } + }, + { + "name": { + "value": "pump battery", + "synonyms": [ + "bateria de la bomba restante", + "bomba de energia de la bateria" + ] + } + }, + { + "name": { + "value": "bg", + "synonyms": [ + "numero", + "glucosa", + "azucar en sangre", + "glucosa en sangre" + ] + } + }, + { + "name": { + "value": "iob", + "synonyms": [ + "insulina que tengo", + "insulina a bordo" + ] + } + }, + { + "name": { + "value": "basal", + "synonyms": [ + "basal que tengo", + "basal", + "basal actual" + ] + } + }, + { + "name": { + "value": "cob", + "synonyms": [ + "carbohidratos", + "carbohidratos a bordo", + "carbo hidratos", + "carbohidratos que tengo" + ] + } + }, + { + "name": { + "value": "forecast", + "synonyms": [ + "prevision ar2", + "prevision del bucle" + ] + } + }, + { + "name": { + "value": "raw bg", + "synonyms": [ + "numero bruto", + "azucar en sangre en bruto", + "glucosa en sangre en bruto" + ] + } + }, + { + "name": { + "value": "cgm noise", + "synonyms": [ + "ruido cgm", + "ruido del cgm" + ] + } + }, + { + "name": { + "value": "cgm tx age", + "synonyms": [ + "edad del transmisor", + "transmisor edad", + "edad del transmisor cgm" + ] + } + }, + { + "name": { + "value": "cgm tx status", + "synonyms": [ + "estado del transmisor", + "estado transmisor", + "estado del transmisor cgm" + ] + } + }, + { + "name": { + "value": "cgm battery", + "synonyms": [ + "nivel de bateria cgm", + "niveles de bateria cgm", + "bateria del cgm", + "bateria del transmisor cgm", + "nivel de bateria del transmisor cgm", + "nivel bateria transmisor cgm", + "nivel bateria del transmisor cgm", + "bateria transmisor", + "nivel bateria transmisor", + "niveles de bateria del transmisor", + "baterias del transmisor" + ] + } + }, + { + "name": { + "value": "cgm session age", + "synonyms": [ + "edad de la sesion" + ] + } + }, + { + "name": { + "value": "cgm status", + "synonyms": [ + "estado cgm", + "estado del cgm" + ] + } + }, + { + "name": { + "value": "cgm mode", + "synonyms": [ + "modo cgm", + "modo del cgm" + ] + } + }, + { + "name": { + "value": "db size", + "synonyms": [ + "ocupacion de la base de datos", + "ocupacion de datos", + "ocupacion fichero" + ] + } + } + ] + } + ] + }, + "dialog": { + "intents": [ + { + "name": "MetricNow", + "confirmationRequired": false, + "prompts": {}, + "slots": [ + { + "name": "metric", + "type": "LIST_OF_METRICS", + "confirmationRequired": false, + "elicitationRequired": true, + "prompts": { + "elicitation": "Elicit.Slot.1421281086569.34001419564" + } + }, + { + "name": "pwd", + "type": "AMAZON.FirstName", + "confirmationRequired": false, + "elicitationRequired": false, + "prompts": {} + } + ] + } + ], + "delegationStrategy": "ALWAYS" + }, + "prompts": [ + { + "id": "Elicit.Slot.1421281086569.34001419564", + "variations": [ + { + "type": "PlainText", + "value": "¿Que metrica estas buscando?" + }, + { + "type": "PlainText", + "value": "¿Que valor buscas?" + }, + { + "type": "PlainText", + "value": "¿Que metrica quieres saber?" + }, + { + "type": "PlainText", + "value": "¿Que valor quieres saber?" + } + ] + } + ] + } +} \ No newline at end of file From 85aea0fec56c7be553fbf520ab827301994f8895 Mon Sep 17 00:00:00 2001 From: Caleb Date: Tue, 26 Jan 2021 12:33:10 -0700 Subject: [PATCH 016/129] Added sensor code transmitter ID fields (#6780) * Copied #5442 - Duplicated @c-robertson's work * Added tx id and sensor code to tooltip * Added swagger docs for the new fields * Added missing language keys * Added new fields to sage plugin display Co-authored-by: Sulka Haro --- lib/client/careportal.js | 12 ++++++++++- lib/client/renderer.js | 2 ++ lib/plugins/careportal.js | 42 +++++++++++++++++++-------------------- lib/plugins/sensorage.js | 6 ++++++ swagger.json | 8 ++++++++ swagger.yaml | 6 ++++++ translations/en/en.json | 2 ++ views/index.html | 12 +++++++++++ 8 files changed, 68 insertions(+), 22 deletions(-) diff --git a/lib/client/careportal.js b/lib/client/careportal.js index a6edfe3ec228..38704d7c76b3 100644 --- a/lib/client/careportal.js +++ b/lib/client/careportal.js @@ -52,7 +52,7 @@ function init (client, $) { submitHooks = {}; _.forEach(careportal.allEventTypes, function each (event) { - inputMatrix[event.val] = _.pick(event, ['otp','remoteCarbs', 'remoteAbsorption', 'remoteBolus', 'bg', 'insulin', 'carbs', 'protein', 'fat', 'prebolus', 'duration', 'percent', 'absolute', 'profile', 'split', 'reasons', 'targets']); + inputMatrix[event.val] = _.pick(event, ['otp','remoteCarbs', 'remoteAbsorption', 'remoteBolus', 'bg', 'insulin', 'carbs', 'protein', 'fat', 'prebolus', 'duration', 'percent', 'absolute', 'profile', 'split', 'sensor', 'reasons', 'targets']); submitHooks[event.val] = event.submitHook; }); } @@ -92,6 +92,8 @@ function init (client, $) { $('#proteinGivenLabel').css('display', displayType(inputMatrix[eventType]['protein'])); $('#fatGivenLabel').css('display', displayType(inputMatrix[eventType]['fat'])); + $('#sensorInfo').css('display', displayType(inputMatrix[eventType]['sensor'])); + $('#durationLabel').css('display', displayType(inputMatrix[eventType]['duration'])); $('#percentLabel').css('display', displayType(inputMatrix[eventType]['percent'] && $('#absolute').val() === '')); $('#absoluteLabel').css('display', displayType(inputMatrix[eventType]['absolute'] && $('#percent').val() === '')); @@ -115,6 +117,8 @@ function init (client, $) { resetIfHidden(inputMatrix[eventType]['carbs'], '#carbsGiven'); resetIfHidden(inputMatrix[eventType]['protein'], '#proteinGiven'); resetIfHidden(inputMatrix[eventType]['fat'], '#fatGiven'); + resetIfHidden(inputMatrix[eventType]['sensor'], '#sensorCode'); + resetIfHidden(inputMatrix[eventType]['sensor'], '#transmitterId'); resetIfHidden(inputMatrix[eventType]['duration'], '#duration'); resetIfHidden(inputMatrix[eventType]['absolute'], '#absolute'); resetIfHidden(inputMatrix[eventType]['percent'], '#percent'); @@ -213,6 +217,8 @@ function init (client, $) { $('#carbsGiven').val(''); $('#proteinGiven').val(''); $('#fatGiven').val(''); + $('#sensorCode').val(''); + $('#transmitterId').val(''); $('#insulinGiven').val(''); $('#duration').val(''); $('#percent').val(''); @@ -244,6 +250,8 @@ function init (client, $) { , carbs: $('#carbsGiven').val() , protein: $('#proteinGiven').val() , fat: $('#fatGiven').val() + , sensorCode: $('#sensorCode').val() + , transmitterId: $('#transmitterId').val() , insulin: $('#insulinGiven').val() , duration: times.msecs(parse_duration($('#duration').val())).mins < 1 ? $('#duration').val() : times.msecs(parse_duration($('#duration').val())).mins , percent: $('#percent').val() @@ -415,6 +423,8 @@ function init (client, $) { pushIf(data.carbs, translate('Carbs Given') + ': ' + data.carbs); pushIf(data.protein, translate('Protein Given') + ': ' + data.protein); pushIf(data.fat, translate('Fat Given') + ': ' + data.fat); + pushIf(data.sensorCode, translate('Sensor Code') + ': ' + data.sensorCode); + pushIf(data.transmitterId, translate('Transmitter ID') + ': ' + data.transmitterId); pushIf(data.insulin, translate('Insulin Given') + ': ' + data.insulin); pushIf(data.eventType === 'Combo Bolus', translate('Combo Bolus') + ': ' + data.splitNow + '% : ' + data.splitExt + '%'); pushIf(data.duration, translate('Duration') + ': ' + data.duration + ' ' + translate('mins')); diff --git a/lib/client/renderer.js b/lib/client/renderer.js index a3841695060f..5e9f9c104598 100644 --- a/lib/client/renderer.js +++ b/lib/client/renderer.js @@ -255,6 +255,8 @@ function init (client, d3) { (durationText ? '' + translate('Duration') + ': ' + durationText + '
' : '') + (d.insulinNeedsScaleFactor ? '' + translate('Insulin Scale Factor') + ': ' + d.insulinNeedsScaleFactor * 100 + '%
' : '') + (correctionRangeText ? '' + translate('Correction Range') + ': ' + correctionRangeText + '
' : '') + + (d.transmitterId ? '' + translate('Transmitter ID') + ': ' + d.transmitterId + '
' : '') + + (d.sensorCode ? '' + translate('Sensor Code') + ': ' + d.sensorCode + '
' : '') + (d.notes ? '' + translate('Notes') + ': ' + d.notes : ''); } diff --git a/lib/plugins/careportal.js b/lib/plugins/careportal.js index 90f9bbd992a0..2dc992341c61 100644 --- a/lib/plugins/careportal.js +++ b/lib/plugins/careportal.js @@ -15,87 +15,87 @@ function init() { return [ { val: '' , name: '' - , bg: true, insulin: true, carbs: true, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: true, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'BG Check' , name: 'BG Check' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Snack Bolus' , name: 'Snack Bolus' - , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Meal Bolus' , name: 'Meal Bolus' - , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Correction Bolus' , name: 'Correction Bolus' - , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Carb Correction' , name: 'Carb Correction' - , bg: true, insulin: false, carbs: true, protein: true, fat: true, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: true, protein: true, fat: true, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Combo Bolus' , name: 'Combo Bolus' - , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: true, percent: false, absolute: false, profile: false, split: true + , bg: true, insulin: true, carbs: true, protein: true, fat: true, prebolus: true, duration: true, percent: false, absolute: false, profile: false, split: true, sensor: false } , { val: 'Announcement' , name: 'Announcement' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Note' , name: 'Note' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Question' , name: 'Question' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Exercise' , name: 'Exercise' - , bg: false, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false + , bg: false, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Site Change' , name: 'Pump Site Change' - , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: true, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Sensor Start' , name: 'CGM Sensor Start' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: true } , { val: 'Sensor Change' , name: 'CGM Sensor Insert' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: true } , { val: 'Sensor Stop' , name: 'CGM Sensor Stop' - , bg: true, insulin: false, carbs: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Pump Battery Change' , name: 'Pump Battery Change' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Insulin Change' , name: 'Insulin Cartridge Change' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Temp Basal Start' , name: 'Temp Basal Start' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: true, absolute: true, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: true, absolute: true, profile: false, split: false, sensor: false } , { val: 'Temp Basal End' , name: 'Temp Basal End' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: false, split: false, sensor: false } , { val: 'Profile Switch' , name: 'Profile Switch' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: true, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: true, percent: false, absolute: false, profile: true, split: false, sensor: false } , { val: 'D.A.D. Alert' , name: 'D.A.D. Alert' - , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false + , bg: true, insulin: false, carbs: false, protein: false, fat: false, prebolus: false, duration: false, percent: false, absolute: false, profile: false, split: false, sensor: false } ]; diff --git a/lib/plugins/sensorage.js b/lib/plugins/sensorage.js index 9f25e59de5a6..a28db2109df1 100644 --- a/lib/plugins/sensorage.js +++ b/lib/plugins/sensorage.js @@ -184,6 +184,12 @@ function init(ctx) { if (!_.isEmpty(latest[event].notes)) { info.push({label: translate('Notes'), value: latest[event].notes}); } + if (!_.isEmpty(latest[event].transmitterId)) { + info.push({label: translate('Transmitter ID'), value: latest[event].transmitterId}); + } + if (!_.isEmpty(latest[event].sensorCode)) { + info.push({label: translate('Sensor Code'), value: latest[event].sensorCode}); + } } }); diff --git a/swagger.json b/swagger.json index 8e2c30da288f..104f402cf2a4 100755 --- a/swagger.json +++ b/swagger.json @@ -1192,6 +1192,14 @@ "type": "string", "description": "The units for the glucose value, mg/dl or mmol." }, + "transmitterId": { + "type": "string", + "description": "The transmitter ID of the transmitter being started." + }, + "sensorCode": { + "type": "string", + "description": "The code used to start a Dexcom G6 sensor." + }, "notes": { "type": "string", "description": "Description/notes of treatment." diff --git a/swagger.yaml b/swagger.yaml index 8cc72542c5ce..c47f1dd17530 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -891,6 +891,12 @@ components: units: type: string description: 'The units for the glucose value, mg/dl or mmol.' + transmitterId: + type: string + description: 'The transmitter ID of the transmitter being started.' + sensorCode: + type: string + description: 'The code used to start a Dexcom G6 sensor.' notes: type: string description: Description/notes of treatment. diff --git a/translations/en/en.json b/translations/en/en.json index 6c0ff4984566..ff7e4eca1071 100644 --- a/translations/en/en.json +++ b/translations/en/en.json @@ -211,6 +211,8 @@ ,"CGM Sensor Start":"CGM Sensor Start" ,"CGM Sensor Stop":"CGM Sensor Stop" ,"CGM Sensor Insert":"CGM Sensor Insert" + ,"Sensor Code":"Sensor Code" + ,"Transmitter ID":"Transmitter ID" ,"Dexcom Sensor Start":"Dexcom Sensor Start" ,"Dexcom Sensor Change":"Dexcom Sensor Change" ,"Insulin Cartridge Change":"Insulin Cartridge Change" diff --git a/views/index.html b/views/index.html index b9a0a564585d..27eec00e52da 100644 --- a/views/index.html +++ b/views/index.html @@ -375,6 +375,18 @@ +
+ Sensor + + +
+ ' + - '