From fc60ab110df38b546037dc305cc51b0ec021da49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20W=C3=B3jcik?= Date: Thu, 10 Jan 2019 08:07:53 +0100 Subject: [PATCH] Hello, sass-spritemaker! --- .eslintrc.json | 52 + .gitignore | 5 + .npmignore | 5 + LICENSE | 19 + NOTICE.txt | 29 + README.md | 67 ++ example/example.js | 28 + example/icons/basic_accelerator.png | Bin 0 -> 1191 bytes example/icons/basic_alarm.png | Bin 0 -> 1107 bytes example/icons/basic_anchor.png | Bin 0 -> 824 bytes example/icons/basic_anticlockwise.png | Bin 0 -> 964 bytes example/icons/basic_archive.png | Bin 0 -> 741 bytes example/icons/basic_archive_full.png | Bin 0 -> 782 bytes example/icons/basic_ban.png | Bin 0 -> 952 bytes example/icons/basic_battery_charge.png | Bin 0 -> 464 bytes example/icons/basic_battery_empty.png | Bin 0 -> 368 bytes example/icons/basic_battery_full.png | Bin 0 -> 287 bytes example/icons/basic_battery_half.png | Bin 0 -> 367 bytes example/icons/basic_bolt.png | Bin 0 -> 962 bytes example/icons/basic_book.png | Bin 0 -> 274 bytes example/icons/basic_book_pen.png | Bin 0 -> 406 bytes example/icons/basic_book_pencil.png | Bin 0 -> 389 bytes example/icons/basic_bookmark.png | Bin 0 -> 400 bytes example/icons/basic_calculator.png | Bin 0 -> 462 bytes example/icons/basic_calendar.png | Bin 0 -> 339 bytes example/icons/basic_cards_diamonds.png | Bin 0 -> 1109 bytes example/icons/basic_cards_hearts.png | Bin 0 -> 1152 bytes example/icons/basic_case.png | Bin 0 -> 413 bytes example/icons/basic_chronometer.png | Bin 0 -> 923 bytes example/icons/basic_clessidre.png | Bin 0 -> 543 bytes example/icons/basic_clock.png | Bin 0 -> 943 bytes example/icons/basic_clockwise.png | Bin 0 -> 963 bytes example/icons/basic_cloud.png | Bin 0 -> 770 bytes example/icons/basic_clubs.png | Bin 0 -> 1150 bytes example/icons/basic_compass.png | Bin 0 -> 1151 bytes example/icons/basic_cup.png | Bin 0 -> 625 bytes example/icons/basic_diamonds.png | Bin 0 -> 597 bytes example/icons/basic_display.png | Bin 0 -> 262 bytes example/icons/basic_download.png | Bin 0 -> 410 bytes example/icons/basic_exclamation.png | Bin 0 -> 821 bytes example/icons/basic_eye.png | Bin 0 -> 643 bytes example/icons/basic_eye_closed.png | Bin 0 -> 892 bytes example/icons/basic_female.png | Bin 0 -> 885 bytes example/icons/basic_flag1.png | Bin 0 -> 368 bytes example/icons/basic_flag2.png | Bin 0 -> 446 bytes example/icons/basic_floppydisk.png | Bin 0 -> 425 bytes example/icons/basic_folder.png | Bin 0 -> 320 bytes example/icons/basic_folder_multiple.png | Bin 0 -> 385 bytes example/icons/basic_gear.png | Bin 0 -> 732 bytes example/icons/basic_geolocalize-01.png | Bin 0 -> 1039 bytes example/icons/basic_geolocalize-05.png | Bin 0 -> 935 bytes example/icons/basic_globe.png | Bin 0 -> 895 bytes example/icons/basic_gunsight.png | Bin 0 -> 753 bytes example/icons/basic_hammer.png | Bin 0 -> 650 bytes example/icons/basic_headset.png | Bin 0 -> 836 bytes example/icons/basic_heart.png | Bin 0 -> 961 bytes example/icons/basic_heart_broken.png | Bin 0 -> 1091 bytes example/icons/basic_helm.png | Bin 0 -> 1221 bytes example/icons/basic_home.png | Bin 0 -> 438 bytes example/icons/basic_info.png | Bin 0 -> 824 bytes example/icons/basic_ipod.png | Bin 0 -> 552 bytes example/icons/basic_joypad.png | Bin 0 -> 731 bytes example/icons/basic_key.png | Bin 0 -> 553 bytes example/icons/basic_keyboard.png | Bin 0 -> 304 bytes example/icons/basic_laptop.png | Bin 0 -> 275 bytes example/icons/basic_life_buoy.png | Bin 0 -> 921 bytes example/icons/basic_lightbulb.png | Bin 0 -> 993 bytes example/icons/basic_link.png | Bin 0 -> 843 bytes example/icons/basic_lock.png | Bin 0 -> 621 bytes example/icons/basic_lock_open.png | Bin 0 -> 627 bytes example/icons/basic_magic_mouse.png | Bin 0 -> 579 bytes example/icons/basic_magnifier.png | Bin 0 -> 816 bytes example/icons/basic_magnifier_minus.png | Bin 0 -> 828 bytes example/icons/basic_magnifier_plus.png | Bin 0 -> 845 bytes example/icons/basic_mail.png | Bin 0 -> 514 bytes example/icons/basic_mail_multiple.png | Bin 0 -> 530 bytes example/icons/basic_mail_open.png | Bin 0 -> 643 bytes example/icons/basic_mail_open_text.png | Bin 0 -> 664 bytes example/icons/basic_male.png | Bin 0 -> 850 bytes example/icons/basic_map.png | Bin 0 -> 577 bytes example/icons/basic_message.png | Bin 0 -> 439 bytes example/icons/basic_message_multiple.png | Bin 0 -> 440 bytes example/icons/basic_message_txt.png | Bin 0 -> 456 bytes example/icons/basic_mixer2.png | Bin 0 -> 492 bytes example/icons/basic_mouse.png | Bin 0 -> 655 bytes example/icons/basic_notebook.png | Bin 0 -> 286 bytes example/icons/basic_notebook_pen.png | Bin 0 -> 442 bytes example/icons/basic_notebook_pencil.png | Bin 0 -> 414 bytes example/icons/basic_paperplane.png | Bin 0 -> 1014 bytes example/icons/basic_pencil_ruler.png | Bin 0 -> 627 bytes example/icons/basic_pencil_ruler_pen .png | Bin 0 -> 548 bytes example/icons/basic_photo.png | Bin 0 -> 570 bytes example/icons/basic_picture.png | Bin 0 -> 711 bytes example/icons/basic_picture_multiple.png | Bin 0 -> 717 bytes example/icons/basic_pin1.png | Bin 0 -> 656 bytes example/icons/basic_pin2.png | Bin 0 -> 590 bytes example/icons/basic_postcard.png | Bin 0 -> 301 bytes example/icons/basic_postcard_multiple.png | Bin 0 -> 331 bytes example/icons/basic_printer.png | Bin 0 -> 325 bytes example/icons/basic_question.png | Bin 0 -> 1010 bytes example/icons/basic_rss.png | Bin 0 -> 1252 bytes example/icons/basic_server.png | Bin 0 -> 653 bytes example/icons/basic_server2.png | Bin 0 -> 575 bytes example/icons/basic_server_cloud.png | Bin 0 -> 864 bytes example/icons/basic_server_download.png | Bin 0 -> 799 bytes example/icons/basic_server_upload.png | Bin 0 -> 749 bytes example/icons/basic_settings.png | Bin 0 -> 989 bytes example/icons/basic_share.png | Bin 0 -> 1012 bytes example/icons/basic_sheet.png | Bin 0 -> 341 bytes example/icons/basic_sheet_multiple .png | Bin 0 -> 405 bytes example/icons/basic_sheet_pen.png | Bin 0 -> 525 bytes example/icons/basic_sheet_pencil.png | Bin 0 -> 503 bytes example/icons/basic_sheet_txt .png | Bin 0 -> 375 bytes example/icons/basic_signs.png | Bin 0 -> 548 bytes example/icons/basic_smartphone.png | Bin 0 -> 338 bytes example/icons/basic_spades.png | Bin 0 -> 1088 bytes example/icons/basic_spread.png | Bin 0 -> 433 bytes example/icons/basic_spread_bookmark.png | Bin 0 -> 526 bytes example/icons/basic_spread_text.png | Bin 0 -> 528 bytes example/icons/basic_spread_text_bookmark.png | Bin 0 -> 618 bytes example/icons/basic_star.png | Bin 0 -> 877 bytes example/icons/basic_tablet.png | Bin 0 -> 341 bytes example/icons/basic_target.png | Bin 0 -> 1177 bytes example/icons/basic_todo.png | Bin 0 -> 405 bytes example/icons/basic_todo_pen .png | Bin 0 -> 521 bytes example/icons/basic_todo_pencil.png | Bin 0 -> 510 bytes example/icons/basic_todo_txt.png | Bin 0 -> 428 bytes example/icons/basic_todolist_pen.png | Bin 0 -> 549 bytes example/icons/basic_todolist_pencil.png | Bin 0 -> 528 bytes example/icons/basic_trashcan.png | Bin 0 -> 290 bytes example/icons/basic_trashcan_full.png | Bin 0 -> 848 bytes example/icons/basic_trashcan_refresh.png | Bin 0 -> 602 bytes example/icons/basic_trashcan_remove.png | Bin 0 -> 437 bytes example/icons/basic_upload.png | Bin 0 -> 410 bytes example/icons/basic_usb.png | Bin 0 -> 640 bytes example/icons/basic_video.png | Bin 0 -> 612 bytes example/icons/basic_watch.png | Bin 0 -> 767 bytes example/icons/basic_webpage.png | Bin 0 -> 262 bytes example/icons/basic_webpage_img_txt.png | Bin 0 -> 300 bytes example/icons/basic_webpage_multiple.png | Bin 0 -> 297 bytes example/icons/basic_webpage_txt.png | Bin 0 -> 278 bytes example/icons/basic_world.png | Bin 0 -> 1217 bytes example/output/.placeholder | 0 lib/scss.mustache | 39 + lib/spritemaker.js | 116 ++ package-lock.json | 1107 ++++++++++++++++++ package.json | 32 + test/.eslintrc.json | 8 + test/spritemaker.spec.js | 64 + test/utils.js | 42 + yarn.lock | 917 +++++++++++++++ 151 files changed, 2530 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 LICENSE create mode 100644 NOTICE.txt create mode 100644 README.md create mode 100644 example/example.js create mode 100644 example/icons/basic_accelerator.png create mode 100644 example/icons/basic_alarm.png create mode 100644 example/icons/basic_anchor.png create mode 100644 example/icons/basic_anticlockwise.png create mode 100644 example/icons/basic_archive.png create mode 100644 example/icons/basic_archive_full.png create mode 100644 example/icons/basic_ban.png create mode 100644 example/icons/basic_battery_charge.png create mode 100644 example/icons/basic_battery_empty.png create mode 100644 example/icons/basic_battery_full.png create mode 100644 example/icons/basic_battery_half.png create mode 100644 example/icons/basic_bolt.png create mode 100644 example/icons/basic_book.png create mode 100644 example/icons/basic_book_pen.png create mode 100644 example/icons/basic_book_pencil.png create mode 100644 example/icons/basic_bookmark.png create mode 100644 example/icons/basic_calculator.png create mode 100644 example/icons/basic_calendar.png create mode 100644 example/icons/basic_cards_diamonds.png create mode 100644 example/icons/basic_cards_hearts.png create mode 100644 example/icons/basic_case.png create mode 100644 example/icons/basic_chronometer.png create mode 100644 example/icons/basic_clessidre.png create mode 100644 example/icons/basic_clock.png create mode 100644 example/icons/basic_clockwise.png create mode 100644 example/icons/basic_cloud.png create mode 100644 example/icons/basic_clubs.png create mode 100644 example/icons/basic_compass.png create mode 100644 example/icons/basic_cup.png create mode 100644 example/icons/basic_diamonds.png create mode 100644 example/icons/basic_display.png create mode 100644 example/icons/basic_download.png create mode 100644 example/icons/basic_exclamation.png create mode 100644 example/icons/basic_eye.png create mode 100644 example/icons/basic_eye_closed.png create mode 100644 example/icons/basic_female.png create mode 100644 example/icons/basic_flag1.png create mode 100644 example/icons/basic_flag2.png create mode 100644 example/icons/basic_floppydisk.png create mode 100644 example/icons/basic_folder.png create mode 100644 example/icons/basic_folder_multiple.png create mode 100644 example/icons/basic_gear.png create mode 100644 example/icons/basic_geolocalize-01.png create mode 100644 example/icons/basic_geolocalize-05.png create mode 100644 example/icons/basic_globe.png create mode 100644 example/icons/basic_gunsight.png create mode 100644 example/icons/basic_hammer.png create mode 100644 example/icons/basic_headset.png create mode 100644 example/icons/basic_heart.png create mode 100644 example/icons/basic_heart_broken.png create mode 100644 example/icons/basic_helm.png create mode 100644 example/icons/basic_home.png create mode 100644 example/icons/basic_info.png create mode 100644 example/icons/basic_ipod.png create mode 100644 example/icons/basic_joypad.png create mode 100644 example/icons/basic_key.png create mode 100644 example/icons/basic_keyboard.png create mode 100644 example/icons/basic_laptop.png create mode 100644 example/icons/basic_life_buoy.png create mode 100644 example/icons/basic_lightbulb.png create mode 100644 example/icons/basic_link.png create mode 100644 example/icons/basic_lock.png create mode 100644 example/icons/basic_lock_open.png create mode 100644 example/icons/basic_magic_mouse.png create mode 100644 example/icons/basic_magnifier.png create mode 100644 example/icons/basic_magnifier_minus.png create mode 100644 example/icons/basic_magnifier_plus.png create mode 100644 example/icons/basic_mail.png create mode 100644 example/icons/basic_mail_multiple.png create mode 100644 example/icons/basic_mail_open.png create mode 100644 example/icons/basic_mail_open_text.png create mode 100644 example/icons/basic_male.png create mode 100644 example/icons/basic_map.png create mode 100644 example/icons/basic_message.png create mode 100644 example/icons/basic_message_multiple.png create mode 100644 example/icons/basic_message_txt.png create mode 100644 example/icons/basic_mixer2.png create mode 100644 example/icons/basic_mouse.png create mode 100644 example/icons/basic_notebook.png create mode 100644 example/icons/basic_notebook_pen.png create mode 100644 example/icons/basic_notebook_pencil.png create mode 100644 example/icons/basic_paperplane.png create mode 100644 example/icons/basic_pencil_ruler.png create mode 100644 example/icons/basic_pencil_ruler_pen .png create mode 100644 example/icons/basic_photo.png create mode 100644 example/icons/basic_picture.png create mode 100644 example/icons/basic_picture_multiple.png create mode 100644 example/icons/basic_pin1.png create mode 100644 example/icons/basic_pin2.png create mode 100644 example/icons/basic_postcard.png create mode 100644 example/icons/basic_postcard_multiple.png create mode 100644 example/icons/basic_printer.png create mode 100644 example/icons/basic_question.png create mode 100644 example/icons/basic_rss.png create mode 100644 example/icons/basic_server.png create mode 100644 example/icons/basic_server2.png create mode 100644 example/icons/basic_server_cloud.png create mode 100644 example/icons/basic_server_download.png create mode 100644 example/icons/basic_server_upload.png create mode 100644 example/icons/basic_settings.png create mode 100644 example/icons/basic_share.png create mode 100644 example/icons/basic_sheet.png create mode 100644 example/icons/basic_sheet_multiple .png create mode 100644 example/icons/basic_sheet_pen.png create mode 100644 example/icons/basic_sheet_pencil.png create mode 100644 example/icons/basic_sheet_txt .png create mode 100644 example/icons/basic_signs.png create mode 100644 example/icons/basic_smartphone.png create mode 100644 example/icons/basic_spades.png create mode 100644 example/icons/basic_spread.png create mode 100644 example/icons/basic_spread_bookmark.png create mode 100644 example/icons/basic_spread_text.png create mode 100644 example/icons/basic_spread_text_bookmark.png create mode 100644 example/icons/basic_star.png create mode 100644 example/icons/basic_tablet.png create mode 100644 example/icons/basic_target.png create mode 100644 example/icons/basic_todo.png create mode 100644 example/icons/basic_todo_pen .png create mode 100644 example/icons/basic_todo_pencil.png create mode 100644 example/icons/basic_todo_txt.png create mode 100644 example/icons/basic_todolist_pen.png create mode 100644 example/icons/basic_todolist_pencil.png create mode 100644 example/icons/basic_trashcan.png create mode 100644 example/icons/basic_trashcan_full.png create mode 100644 example/icons/basic_trashcan_refresh.png create mode 100644 example/icons/basic_trashcan_remove.png create mode 100644 example/icons/basic_upload.png create mode 100644 example/icons/basic_usb.png create mode 100644 example/icons/basic_video.png create mode 100644 example/icons/basic_watch.png create mode 100644 example/icons/basic_webpage.png create mode 100644 example/icons/basic_webpage_img_txt.png create mode 100644 example/icons/basic_webpage_multiple.png create mode 100644 example/icons/basic_webpage_txt.png create mode 100644 example/icons/basic_world.png create mode 100644 example/output/.placeholder create mode 100644 lib/scss.mustache create mode 100644 lib/spritemaker.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 test/.eslintrc.json create mode 100644 test/spritemaker.spec.js create mode 100644 test/utils.js create mode 100644 yarn.lock diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..e22eb65 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,52 @@ +{ + "env": { + "node": true, + "es6": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "impliedStrict": true + } + }, + "rules": { + "no-undef": "error", + "quotes": [ + 2, "single", {"avoidEscape": true, "allowTemplateLiterals": true} + ], + "no-unused-vars": [0], + "no-console": [2], + "no-empty": ["error", {"allowEmptyCatch": true}], + "array-bracket-spacing": ["error", "never"], + "block-spacing": ["error", "always"], + "brace-style": ["error", "1tbs", {"allowSingleLine": true}], + "camelcase": ["error", {"properties": "never"}], + "comma-dangle": ["error", "never"], + "comma-spacing": ["error", {"before": false, "after": true}], + "comma-style": ["error", "last"], + "computed-property-spacing": ["error", "never"], + "key-spacing": [ + "error", {"beforeColon": false, "afterColon": true, "mode": "strict"} + ], + "keyword-spacing": ["error", { "before": true, "after": true }], + "linebreak-style": ["error", "unix"], + "max-len": ["error", 120], + "no-multiple-empty-lines": ["error"], + "no-spaced-func": ["error"], + "no-trailing-spaces": ["error"], + "no-unreachable": [1], + "no-whitespace-before-property": ["error"], + "object-curly-spacing": ["error", "never"], + "one-var-declaration-per-line": ["error", "always"], + "one-var": ["error", "never"], + "semi-spacing": ["error", {"before": false, "after": true}], + "semi": ["error", "always"], + "space-before-function-paren": ["error", "always"], + "space-before-blocks": ["error", "always"], + "space-in-parens": ["error", "never"], + "space-infix-ops": ["error"], + "unicode-bom": ["error", "never"] + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac6a09d --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +example/.sass-cache/ +example/output/sprite* +node_modules/ +tmp_spritemaker*/ +bthlabs-sass-spritemaker-*.tgz diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..ba692d0 --- /dev/null +++ b/.npmignore @@ -0,0 +1,5 @@ +example/**/* +test/**/* +yarn.lock +.eslintrc.json +bthlabs-sass-spritemaker-*.tgz diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1e18e24 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019-present Tomek Wójcik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..646d115 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,29 @@ +sass-spritemaker +Copyright (c) 2019-present Tomek Wójcik + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + +sass-spritemaker includes the following third party software and resources + +Linea Iconset +Copyright (c) Dario Ferrando +Licensed under terms of CCBY license +http://creativecommons.org/licenses/by/4.0/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..8f09759 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# sass-spritemaker + +Convert a bunch of PNGs to a Sass spritemap. + +## Installation + +sass-spritemaker requires **Node 6.9.0 or later**. + +``` +npm install --save-dev @bthlabs/sass-spritemaker +``` + +This assumes that you’re using [npm](http://npmjs.com/) package manager. +sass-spritemaker supports [yarn](https://yarnpkg.com/), too. + +## Usage example + +The following JavaScript code demonstrates the most common usage of the +library: + +```javascript +const {spritemaker} = require('../lib/spritemaker.js'); + +spritemaker({ + files: ['./icons/*.png'], + output: './output/' +}); +``` + +## API + +### `spritemaker(options)` + +This is the main entrypoint of the library. The *options* argument is an object +that specifies the function's behaviour. + +**Options object fields**: + +* `fields` - array of globs that will be resolved to construct input files + list. Defaults to `[]`. +* `output` - path to output directory. Defaults to `sprite/`. +* `urlPrefix` - URL prefix for background image URLs. Defaults to `/`. + +## Development + +To bootstrap the development environment, clone the repo and run `npm install` +from the root directory. + +The `package.json` file provides the following scripts: + +* `lint` - performs an eslint run over the source code, +* `test` - performs a single test run. + +## Contributing + +If you think you found a bug or want to send a patch, feel free to contact +me through e-mail. + +If you're sending a patch, make sure it passes eslint checks and is tested. + +## Author + +sass-spritemaker is developed by [Tomek Wójcik](https://www.bthlabs.pl/). + +## License + +sass-spritemaker is licensed under the MIT License. diff --git a/example/example.js b/example/example.js new file mode 100644 index 0000000..144ad05 --- /dev/null +++ b/example/example.js @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2019-present Tomek Wójcik + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +const {spritemaker} = require('../lib/spritemaker.js'); + +spritemaker({ + files: ['./icons/*.png'], + output: './output/' +}); diff --git a/example/icons/basic_accelerator.png b/example/icons/basic_accelerator.png new file mode 100644 index 0000000000000000000000000000000000000000..00f5e322582c551051d256d1dab0e9fc6ba36ea4 GIT binary patch literal 1191 zcmV;Y1X%ltP){~&W(=ZH8a{9%z{@%a05Jc^z%^(kl;ABEQ4@X&Zvddl(|K47F})E%NHnEX9KKwHcQ!ZA zK+tJv4MJ}i#LxsDcO~gBnta6!kxP;c37o?ZhHzPva0y9J?GTEA*H@ChBd?8f7&K^J zFikTvgf9+N*hj()%hs0A*BM)Q6g=0Wgo@ianyP4Fe2w4H^NI$aCoUj30YDrJM|eFv z)?5u5EU0z~cNz!<3jh>E4Z5~uw$ue5(ZT6Jls2H+$k8TDV;ffyX*$nykDfl){DWZR zEsY5@(+{>piwVQb8lP#f>zJreWj)(Y0I+j~a5|>9^^p8j3=mQxm*@gOdEb)3Ky`_X zkjn${QF|i*n)a8Loi&$Chc$myS}dSmSb=HoZyBCdOdtgowh_xDBSo@z?rVtW6Iuu4 zHWsOYl~4dOtE}mHpn8Ifq1r|<#BXF205zvKmfFuI2ta0O1sm!!)WcrqM+TUj_6=5$ z**HVB5>9Od(@kfh0N74t1ymX%04fLQTF2a}T z&g^ZM#yzpO2(&l&BIPwiG{w`iN3?JnVxV*K?nDXTeNLSPK<{^$Yx%Wj5Ugbi27s1} zd)+(W$h0`4a6J9*y~$`$p;P=P={G(uaDmbUa+JWwN$yJk01oJfq&M2DN6EwX<^jOL zYdjeFh>xD&U_|n;3=Kf6X=WCU${Lf*Nd)8}Cz^jEejrp+vL0ge$e{s%oc%MN2Le4} zga{2l6Vtpn)ac;tB|%oWL<$-K==vw7E2C&W?Ysg$9gi!IDBD}^k@OWhK!`LyRpg6F z9iCc9+u#@Ws2)iV&w~{xJ8y;m6nDcw@4Yvcngf8EAiZ zjyf(!W7kM+M`JOG%@xTCiyPE_LH0E(nv^&lk6)Sg)5zv{oLeAqCBoYmNVt^9Tmb;Q z5*e2wsR;|uFOnKkCO0wR-OJ>L6iQA|c(+2yp{24@5k4AHDtm1pL=Kf}voDvwUzoUG znYmw@8vWW_>e?LIH#EkghR002ovPDHLk FV1h0*23i0B literal 0 HcmV?d00001 diff --git a/example/icons/basic_alarm.png b/example/icons/basic_alarm.png new file mode 100644 index 0000000000000000000000000000000000000000..778a062ff4d03a2a16ad72fd1449f598c2ea11a1 GIT binary patch literal 1107 zcmV-Z1g!gsP)$S zK~#9!P~D{5OTnf3cFH0Q*Jp`NtgzKmZ0%6WpnQl9UDjkMK?`^#3iD zp({`+D(j+=H^RFMe0#Ex+ZyWDfvgfR@fa~PK9;?ZD9b@m%PG-)Uji6a1#QX*GD?LG zzU~v$jq1%UzVG4L3|=Qd^1gw##si_xXHshBq7vE6eQWquCZkd4bipuNsBi>d3)UXM zB8AD7H98BBF$i8!JCaavvTp5UQn{H)fzY-X@M-I%x@RF!*Yz|_R7lT4;8StuDz$-jK z7Z_VU=!@OLr0ME{xA}!Jq0o#N=Wag}+J!1;^kN%}m;@H1dc&|ep9$asp=yN3`gxoH z0hkNwsuAPd8jNFUtK{vv+C1CIw^*s|%*%&Xg zm@o_;UDX=_f&rBiJzY|?g8L=moaaTr@|aFjtqUN8M#!suC*Sm*a(NS^<&Y=&bo}y% z<}-;7Y@HS-KRf~Wt1s|-Tu}Eb#R8bD*9F+e-2qbnoq)-TfCBFQ0SM>?OjZQo0}_DO zc))l70!Ez&NP7X_(K#kPQ7n#<3Rcg$I(&uuFG9i)goqGBR71Xh^K}Is9@P)5R*O;~ zf?ow%G8fQx9iBXqCNpVf>L)afH)tBQqiAiH{<5a)*pY}2$V9tb48yR5fIbuf0ucqj zn`2J`wBzT*F73P~=yZ68@x{97u)tWAu=Oj`tX4+=3qEDS1e5|6yMfSNNzt8_%CtF6 z(@>Z(*Cc5D#%O&D4>;Vy$f9+Dqb-fCBH$>Cqpk!by*%zrK*}2=HX|U#Ei#)EkkTe8 zp9Dm|P0lL;v2T>zjer=p%I;1;Oq->H5fH<6d6$B=JU56CqKVAkq zUF=jE+pkFX@^-d5f_Xr;@VH8Bx{?9!OJ`Exedu9wA%g3s)>zq2m0Ju`X#1kdAdK22a~I$3_rhX7Am>P}7)R+VtJ@@7cu+I~J}L{&nqOe&5~{=_$<@{@046-DGQ42~U`7 zy?(zs=liz9{fSo(^FCPfH|`u`x=X|N4}8|4YJv)u4oVIT91M&K3@i-{0t`%eIStB; zDUsKre&@ZNy!yeWY5T99w8*{iV#~jRTjKRw0xkuudTAsUe)i!io336}EtGzUKdar%^yQ6Hww8?gsEIYTF8Mqy2F#OswkMaCo0rlAH3@b7@R_p+1zuC6IHXDG7PgBDymHXt-ID{#omyR8S-S`%*!&>5q4YaI37B_4LG$+oI&S$ zqL!1V-;TX(4a;wyS2;Fs-G1Ti2j^r(ok(@nYB1Y&ui0fY=bFVdQ&MBb@0LEr+ AF#rGn literal 0 HcmV?d00001 diff --git a/example/icons/basic_anticlockwise.png b/example/icons/basic_anticlockwise.png new file mode 100644 index 0000000000000000000000000000000000000000..4df0408f9db0877144523840455353dc49bd3f3f GIT binary patch literal 964 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 X(3KZ$?0vJ^1SIe2>gTe~DWM4fWU;NG literal 0 HcmV?d00001 diff --git a/example/icons/basic_battery_empty.png b/example/icons/basic_battery_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f8b2826a9758b51989c2078991ca84c0b6a665 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;sc7srr_TW@Y1~x_#5|s4(F~jjhSz^g$RinAG~fmY3+~nj^#%ui(|Ny eVZ!=(Ogs#SFT}rilJqSXB=70!=d#Wzp$Pyt41o{; literal 0 HcmV?d00001 diff --git a/example/icons/basic_battery_full.png b/example/icons/basic_battery_full.png new file mode 100644 index 0000000000000000000000000000000000000000..9469454b57f9f26272f231bbb7de8b8b8acd0954 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+Gs7srr_TW@Yzb2T{dusSH; z`+q8Mw`)YW&ScITH!S!3Rgsvvvvgf;b{tSKI@lE&< zx`h-DiA`WCnY)5h awtVdWZ literal 0 HcmV?d00001 diff --git a/example/icons/basic_bolt.png b/example/icons/basic_bolt.png new file mode 100644 index 0000000000000000000000000000000000000000..f418f9367fc7ecb5f9f96b4cddd859ec0fc399ab GIT binary patch literal 962 zcmV;z13mnSP)u;SML=Xig&dI7-dS1>%{WsPGYVF05G0HNRE zXT5y00+fCv2-8tw+DfEWTelbse58oQc#;CJR5 zdVLk0Ow1RAuY50kP$2;H^D{yWXo-MG7wJFksGUU0ud@UOz6^=tdCCMF@ zs*aSTHWeP kAi(PTix!u6to;*U0EoR4(q=_$b^rhX07*qoM6N<$f|D4li~s-t literal 0 HcmV?d00001 diff --git a/example/icons/basic_book.png b/example/icons/basic_book.png new file mode 100644 index 0000000000000000000000000000000000000000..23423ebae1c88bea487540c42bfa019ee722253d GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|#lWisZN}H=f0@&@4iVk&%;kHS6qB)^QUb)UrGbb zfPw=$A1=q%T)VQIakJEhTO}(P85k^BO%7--05XUK3aPu^vsCNbm;XO)Q_HN!$j0#7 VOujQ|rT8t70iLdYF6*2UngFyZO^^Tp literal 0 HcmV?d00001 diff --git a/example/icons/basic_book_pen.png b/example/icons/basic_book_pen.png new file mode 100644 index 0000000000000000000000000000000000000000..01bed0a055fa737c4da41326b25ac98252959e3c GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TS7r;B4q#jQ898TpzOcwBEE ztDP`6$}S71YEL-=V;Y1WF&6SoY{%RG>EkokPyMMnha5Qc`*1Nx8OMeeo}DcHjFFSk76 zZ%{>cy8!D9<_;!}1+O#?sBnOk5dk!A$9-I|YHexHyV_4j^lhE;jiwj<+kC03YP+Vt z`Qz7<)|YZ0Fe~BgDQ6HCjnJ5-*Y!77FMPdSe9nih{@+VpOCGO_e`ofja5cl~rk#op z;~3poldAVmD?O0>a1S4APl&?fd;QmLus@4?;ldisIwh-m>QAu*hKh&(xc4ku{{-Yd MPgg&ebxsLQ0Bbpm&;S4c literal 0 HcmV?d00001 diff --git a/example/icons/basic_book_pencil.png b/example/icons/basic_book_pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..4c86757bdf8b911e7f5b1dec42d7c16fe46cb09a GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TRwr;B4q#jQ8DAMzej5NLa7 zec85T%Pvpz!mU=EO$To%u>3PQ@i8uFaf4^&k6D*oLS5$Y#GJD{yLENeKa)h<||kq+$?lqm$-ek>Q3%2UI+Hu%1#0*c%bLN zw1ayBSTR9j2G0Y@xR6p`Yrfp~h7XtPotyroFRFh1;)i>#Tcn-;@^)jsDfa}wEiB2h z57b#TyN>Z6{+GX@EUqqQ#)qr&-*0^3xW4cIy|>24a+ofOJkjI)%;^!N@bcC9P5d{w v-tXs>*cvriGFajGRsO9fY_>j?if7_saAiw&QoD67~tg1^iCo4A#x5XWz0tc<|mjed`f+3n9Dj zn;$ZI9ZLU~d5m?1U>&!jj>Fjx($(!77(x%PR|sJiXy1Hz*H+o-`|^+Le#sY?e)ndB wcLn!qTld{=C)yRaf0)Oya{7lj4tYj4hGSPM-cCF7z6j(iPgg&ebxsLQ0Izn9^#A|> literal 0 HcmV?d00001 diff --git a/example/icons/basic_calculator.png b/example/icons/basic_calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4f9544518d946667487e549a581904c21cb76e GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R5Ur;B4q#jQ6p8#xad2)GtM zVvt?(fTd}1>6E^p0!CK$!e$A>i3%B)zi@QcvbV1_+4f)6_n)ibv53tNZ_MmHZYL9w zo$7ta^@tG@&_jtcHH0MUcARH3P!Djf`I4ZulJCLnfVK1Vc^&SF zh+X?q7dbmdF6Q2!>w8bHK0W#O-s-cj>wg%lOFOVUeA6n;|0rVj4+#dp0@i~cxW4Rr zp8v06)y=P|mIv$Su|%>NIz=RQEfisBcCxhD@{fyW=H#gG*%hMNcd8z++!SF2`K2Ml gxkYfp#R?7shW3h6bvLVf)`5gQUHx3vIVCg!0FxuCssI20 literal 0 HcmV?d00001 diff --git a/example/icons/basic_calendar.png b/example/icons/basic_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ab724b8bf4ba7ef80fff727c62fe140a998c76 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|*WV7srr_TW@Y(k|`0!;`IVDtBD_b;&TlEvni?_9i>4 z%+HI;56i8K!d$;NGEUt6U0b#0GCS*=!gDk88gqHMP840MbZB9!n)`8H?UL{Vb5mZq zw6OP-?W?}8z$C~};qd3k*E9ZZk|4u`qc9LPlfaO{5Q0M>1cyKfgg^*{pb)$nuo*Z6*5^I2hdr}Wjc~Qw`m5Du zXH1ofviYd{J*m|nQLXEG_|C`M;hP^X0QMwIRaMQG2f(A`B(Kl1b!-ADBgoO@p_H0c zb6j6RQ}=eozp+iw0QCWVihX6Fd5Vm`o`&zaUtx~A~Optx-2W*z{ya&rKkE6i_p8*iZMD|yk zBLqi5^DOoa-rJo+2ClV<>(KUXJvpF;@Z#F{}1`@ zIjAxOhUCCu`D5m_c3*>5tB~dW&4XIUz<%s;(dRlsj-OK5DY!T)Z&pU*muw%gg-U(@ zhk9PWC*;_M{gJQ;s{lIrh;UVhMIwtS?8mSg3YMBG?=JRz0F2r=sZnq$$bKrT@1Fa5 zWYpu!4!N{hz?NjVW8aKNU(c);gaEulojcv0tq5#JpEzIcFi z3C{JTDB^wKt1lt(0BP_QS;i8jvOP#?XFL#+?jo%Xx`HICTpyU<-gqE@{ect!SCB-N z>!Wxcr@N>DI6dUkc9QAMiDI*cn60Mp1m)Wl_EP}pz+7!Ot4e|Fj~qKh9(Hs+6Nua_ zR!WD1W3L}O5V?8G)B?p_CFxl}P-L=GJN5=i96-2|ouvVY4U))#Kr$Rz0Z6GNQ3C<` z&nn=u&p!>s6+C+l3R^#O1~qjplhp#-3Z1?Y0sN0kN}{GD06}Z8Wv}5yE9RXVaKi># zg?6!7+UkSHBsP3N0LN>9qhSvKn1ZB}W$S92V=VDb^WA(efIfGbNp^9YfjCn~pVXTm zg7@fBe{+=DDymOs)#q-YpfXYyId#op(5ZZ~?+YmbP~O;u|5QDoG=XDy#}%!gc2x$66he5uq9B!mf#Y$1WKR;vd?+oCC>y;#Ezn~v24p) za(B#las(DjpJe^o=Ve(=pZR(_ee&xIfFlueKA)=(4?uv)VSPTWqf;Zu8bOV*UY4oJ zj-BTV8us0;I9-a2W9B-?d)qtrbf5QFYD+D5W_l}!vkQ61Y$Ac zmYEAYpQ#ogpt=nZEg;kwNALAS+MVZqK))#lgc{?7nWq*wq(AQ13F|=&u_t!!N*w?o zW+22E4lzgzeo>nM09_e#o0Pe;0g#xSXu* z1gJ{iLx*tzU?{O4N%|f-uJ2-Vcws2uqJq+2uNvs-;r*(h7S3Sz{)x(3UqVt+`oK61 zWbm?-^gvs#(PJanJ2Eg8=>zjKl8OO(?!-PdLT>RXeGEV)IZ>qaw`Zdxb-rMOB|yi3 zrBCC4ZKAuD<;Twg>GOn_Xr}ZRUm%3Fpi+|l2Kp`VjT;Kg@G#t^illG6p)ktOjE3b$ zL^Vvmz3dpuI^bQL!rfDos1^`!Tdr8uPD!pAw4wI5_%xJsIk))rL z#b&9Pucz<==9|TgNkoi9=|8!H5oiq< zG#Eac!@X#GhVaw5+p6?=R0I5)_Ntn7Z!@~%ICa`^l#_4xJv&QU+37CH!hvF znrDh1%X2aPlKAbn*q%onlmFGRd*8bIvsQN(3T(>q|9Z~STUdX&KhRGwFvF~fv8d5; zr-OBMz4Y@8+aks|Mur$^X1C`LD;iAse_W5B!_fp&jG&v3{bzb++i?CFLNa1&KLazv XbP0l+XkKL?M!1 literal 0 HcmV?d00001 diff --git a/example/icons/basic_chronometer.png b/example/icons/basic_chronometer.png new file mode 100644 index 0000000000000000000000000000000000000000..a2eda2de2b37a5aafa05e07dc6128499e9829fae GIT binary patch literal 923 zcmV;M17!S(P)|5cnqaYBD&insz9gqs1C0If_I7>+hmS8&YbznO1DmXhhuL2+3Ei=3gAQ2Xg zftek~Xk_=}TU-{%rfE9FC|Q<0)DYJzi=kJ3c=3|OVt|bmv3ff(AOVm7h(88!KR@!S z;8H>@uiw$5f4THrMyQ2!T)*+@0N_S5UY)sATs}Ns_lrxzrRBN~n+AXzUV_m-HAZyM ztHOvu7^8j#05mC*F&Mn70E0i@1yfo8;47f8P-;@712B%3|4si@Fy3eI4&A$pAi8@R zF8sMh$_ctM$NyUa(16jPwrU%|qyRv#4~jCatKpuYGiXb;JNU3+sS*`ZprkfjqeF>0 zpo#(jqI~O1!2m9(vY{pg0Qul$EyFc>UDPp%1OU|Y)mDr*xMdv_0QB-orQik(KhEjt z1ptipceDq0=r=G1^eXLbQCl z0EqgfD+MEhV0A%=6J}k()^)^0?uueAz+oOB?hl{xugyBJC%# zFYm3nG!}AiK+vVJv^biU$I}Lhv_&Rul1kg;(niU&RW@ywPTS?vfr$`DX4saG%)I=e xsb@GgcLSf_{;@erLUPH$$$yNY-m3E@zyRpczH~}8<}J~CaRq9n=qU1`5)pgg16a`746EGOqQtO~AW5ny0M zLkejbYcKe0xGU9gy+F2A#$4^|v+j6)4PC!I?sa>t@@1T!JH;liIDY-Q*lT8~YwU+t zId(|B_vXLIX=c#&;h`7vrQ0mE7mgifWJ&J7`1-+m*@*j`S@}x?-U{{e&a67;=~7w{ zt*y3Ntup=XT2F12Q0eC)S6-{IDV*dkVh{A?rC-#tZlKY;t^Uy&b0sl literal 0 HcmV?d00001 diff --git a/example/icons/basic_clock.png b/example/icons/basic_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5f322ff0b0ae6b1084b2251919f0c840854d05 GIT binary patch literal 943 zcmV;g15o^lP)|2eMoFEVeD=-zrRB(0>O0Wb<*b=scE5USN32q0bf|v?o2L>)Pn_15FRAlf} z-sAD!{=j_S{D{LK`@R<;o0Kv$gEAdQ+rB^f`3=U}^wy3>zBZ_QAqX&_3o{e|_^ao1 zzk!g-$Xacd00TNT!^Lzx0Qv?X8q+&FnsvK@|L3OTs0J*>l2O{enq^o5d^(u66{;uQ zf_t?fR+wMGT%EIqT{HEb-&44&Bbe2)p7HIST>c=TrmQ!-5tO;8+B;z)Mg99AB?|ebAQxm?H&Q?y+HY0$`EGhw0GWvCL+w za^`}!=2mPCJdw2^E-{IODU(w0`BuR@0s2mY7XifQKLz+FB$SH?aD1u=B&c@~{J)0C;sDxrt)QSTfa&V$00dMNvxMmX3*13+N+PA~ zW3Fr3w}fc_CXUk(t4hEEaHDXPhFCLd0nLF3Xs88X>kdS~9jk6jvO2=K?V_0ALk> zf8nwOx<*2FMR}z6^cW-{)*FohX{3q{hUC+~J2HS=<#`@qjsIQZ$lfJtRfx z7w86h$KW+JfA?Snv!!~+c>wKT6>iY!w-yWo9gSt1I2>grpcZ3?qcM)hBl!Ninun+b z5{&zaX$2D8B{EC|%qx-MERtfb9-Uq!#Z@N9P&K-&Oztd{JWFNIV(GJ7{=6`8UYR*B zO`X@~X80hD4WH`bsUm#2?@eg3Zi0|0~HD8b8N RdrtrW002ovPDHLkV1mi7nJ)kU literal 0 HcmV?d00001 diff --git a/example/icons/basic_clockwise.png b/example/icons/basic_clockwise.png new file mode 100644 index 0000000000000000000000000000000000000000..4f72011be447d1a058734483ab56ac35697852ce GIT binary patch literal 963 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 RfZhNA002ovPDHLkV1h274}<^! literal 0 HcmV?d00001 diff --git a/example/icons/basic_cup.png b/example/icons/basic_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..fde0d37bbc7590bc7b696229d991b740935b3574 GIT binary patch literal 625 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnfPZ!6Kid%1Hzs+qi;Ava< z>VI1ECdZd7d-D!(^Z?NXL5YRRG3E=T3#4Pz7ZheMF=>*K_Y*!MeX{FFd$RqvnF%GC z_rIUKHF4R?U$a@;zbVF6zmF~YP$+N36y4^+CTGXYz+kHIiAz6}d)X_II;Os2@pyq7i0*>jsXL&|EwJ-1dSA5+rRezijG2wy{X*zxDLW?QA{EaKr% z;awgs#?7#8X~ONc=aU~J_7-jXlX50xTgT1k(hg^IO>IqP)|242!Y~Y^Ouz=u2>lJ%fR4Zj{SDaQ8KEPT4cOp2!jI4m`i|t6tk(;I>ey~M zOHtIM1m|MAiS1O=G;O@7s;V7T13%Wp%V^ERcH>JOl{YS(2LoHj)o-afil!sC+4A9` z0yNQ@sxN;0;QEv6cj9R(iUoE>i^nkMq06IYR{iFAvV# zlcpvBW@mOyUxNw&UV2}`9xP7p)%^}j)O$^P@a!MB`0nS%98>@xYK4f^(I)@L9{lpz zssQlppaDS0UaTTw6$FGVb@dL9`x8_EMi8GtY=p2C#$gD@VK_wK5`$9|ZgB)g5E?^p z6yb3sNFYT9Nm59YL!u;7Wsxk6ba`Buz?B(XntF|EbGSGeB!1@>cXW{eAql;>KYS%# jnwPjc9O?S}j{pMzM)DZl?9M+Ns~e^VS~y!KTB=#$fFxQ_S?h Q;|R!9Pgg&ebxsLQ02f?G_W%F@ literal 0 HcmV?d00001 diff --git a/example/icons/basic_download.png b/example/icons/basic_download.png new file mode 100644 index 0000000000000000000000000000000000000000..f62a51e2731fd2c909c6750ed9d4a704ec69d026 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TSFr;B4q#jQ8DyLp=o1R4^v zBpQ5U8Utlo10{|MmI#|$tPc`8BFpHbp@x^km^GE`A0E4V$KA z225OiRW=u18i<&FaTag`+KdI96U_JS-M&nM5nb+wt8MJ8sG0-Yt^L&iz^o2Jbs=3cA4Dep2(~(S2sxhUUqX$%=Cra-QQA)2+1VP{u4>kWqqH#cT~G;ID}+??sPCu?5% z^mnt?etZ7$dVNb!W3HA(_Q&=5D%U43&Q$sG^2?;fKh`j;VFfy(LHS5<10%x)F2SVi| zK~#9!>|2YGqc9A$ser3s*$(L7D8VJTgp`mHwggI`1kwQ=9I0UGfV1bMM9~1dw-_fN zYsTZ5P1e$TmK6V_$8l6!iq^VtUF90~UVhJf{Q`aKTJL*jU%#n+TM*zt8`l{C{I+tq zD-hB+Tbq|9z=6(PcXG{6fW82T&b7h!PVX@B|D|i#R}-G%$*6q`<{6%VH4R+b8#R*V z!F_lT0miRjtbyt9I`h@zuQcw=4D+*W*BZ5;&w>t0^f@{K;G!J^UTp<@#w#ch-j*^7 z0TAbO25cgoBQ0iPn02rd}uS8JYcyk|T(<%D@9~ zp&&&NYe7Ar6GT8qJpg48M8FNJhTlXlzxZ|4fs>%$A$~p(5Zj1n5vw4Q*TZHXlaV(p*09e!dGyl;o$wbd0qs04sV zj8~66W7|U`zyS=!j0E5@krhCIeZWjkOM4ahN=!vQ6;}5vvVQ7fq!!=>mSI)=7FEjC zSdlJA1z(Tn>48LgB9k6TrDt;Kp=5e0n;uK2=klpwB9+XfqN!9i7b*s6ZrD}fWXRIl z0%pj!HKntKx))l{mCk;IddrZCr=^$A{}o^WzT_%+F@Hul00000NkvXXu0mjft~_K# literal 0 HcmV?d00001 diff --git a/example/icons/basic_eye.png b/example/icons/basic_eye.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd2c0e64de66de2e3c09642ac9255d6d86eb2b3 GIT binary patch literal 643 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|S$Qr;B4q#jQ898gmaB2)KG) zWxTQACJ^3R&@(|$qEXPw$*sVgL;3>m8Md1TY!`QzMDST0Tesqm^4uncoxA_Pdvt`a zcWYVj=Wm-<)-VGtMFR~|+pkYLH+xxT=JkzRbD}qWZw;CvJyI~AOo z=32OJd;B+A?RxsAi9Wk+pW4`pG6=n6`JOVraejZy$(@U&yDas71pX;}C$arMhs-Zu zvkCHl3qJ8VbQNmLN6Zj?=2Ewl&*Q6X$I=_mPj;tTwC8Sm&)(v%G_g}Sr?_*U;Qpr( zb$?U@vYWrhC4@Kb+w#Ktrv$&td|8HI`T4FDEFFg1q?6~ocfG2=_M6Tj=ACkTV!oeb z_z`toGentf%fZz%9=;D*X6RJ5dY`G8j^)ceEZ-%CJ~!&ktV;>`ZWYe-ZV|(VA2089 zaz1*h`)1XxMcPl+ny|A(p3q#PYBD3mx9RVzXiuF3*JmdE{_tCY!T-;Mz&%2ByHBh- zdwg||K$}3z&xW}o^D9&2uKn`0OkWzGzPnON;dY)zLAFu$YRz58L{6knn4Wx?b64c; ziF^U9%Z^NYE^{`1j`+*pM}j|XjuE&SwuP_Abnd!eLMti-LU!;za^&bgG=nG6s)toj zr!z57_F;7=N Jmvv4FO#li14B7wy literal 0 HcmV?d00001 diff --git a/example/icons/basic_eye_closed.png b/example/icons/basic_eye_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..0a50257a91a32ccd9a65b96a2c97841437947a4e GIT binary patch literal 892 zcmV-?1B3jDP)|5PU!!QtT5Ce1rx&dJVvH=~TBXoq0(6_#3gz&(7m;g{EB;GPYo_IAjT%@aI zCywvzQrDJFtwdwr_ubj|<4_187S}v(7FRwp0hxeIKqep)kO@d^6h*O=vUB0=3Sf!XTFbxV4lT00<`OU`{pn9S|enb4k&eB@d7m zQHpJ(JQ@D{3W^RERSUP4c`Eoic#Qgdv@EOUd+@eA)dRrVJA(-k9P@wT))!{(X!{iX=Dqrv;-r9^k zZ=0ml6x=ddv~h^}FH(-wI1iqS2`-%o0Py|Pg9LXL*xH&`U?PsxBu6u3Z^B|aOaxb! zh30L>lt3hXVNVEfmI(duwt=r1!B=SB(m_c~Ld8fzZ6aa#!5V{SKF#Z~c})l2)H4ja zC|M6>0N(R;fN<8?tZ6&#k=Jwq^r`W7#0s{7;<@-MIp)QA+jC4h4eNHeA+o%*W(HxL ztQB<&xFk7Iw?NE8a7Jz);}ERQ5eB~;z?ad(V1z{IMI&Jh{IDIHsEJUhR2UREYH99N zD$GLu>{OV$7}D53YMx+|h6%i1F~n64Pb4{`3Ld<1f0nkm{~%{oG=gs-+W2cu z2hd*t)X(fK=16U1iPy9Mscq79Df>@DyS37+?47AySV^K;iZHC?Nb}0?)m~ZvG+rAT zJjk9~%$Z{jea`w`i&z7EL0UC{r;f?hiJ-NL%?W_XRyNwPv@%*d*@OUqZ!}?w6*t&I zTerDI!qVW$9K{AvMrdw#m4v0iXIq3>$dXMV!S$k*58y{gs1_x_@IA3Lc*7k=_ac`& zaJTk`H$yp{8Hrpipu$h>8~9r?x;C-YV*=747j?<(!B_B_tOwHytdb#_q!6p``1oDU z)kYq-A$cDx=PWS3_zoV4AIbQl%Wg|Rj<9XkW>AyeKP_#lwq{@M-CmG* z!-D6C!3BvW>j7VA!@=Fawd1|Orbj2fKXA!zES4{EJ?2fbg#BNVGQc^d@Kp^~c$d30^OU{rQImFTeZzsa_#bB=7{X6bPLT(!<;kM!$|!i{3~6{ zoUpcT8J|I@J!`}AUy)V^V*Y+$xc4gk1w;5(XXco|zb|ATtg~D0Xr*9qpyplwM!qv& z7d%l8C>P(cin~I%XWriJ+!nlPC+=Nltr0vmY429b zWVq+h&u0FC+v-IyBG4?_HQvYkDBJtVdcHcW|PTo_7g>`o)*2Ui!*aPAnug>u6^F&+;3~U z-yU86*Z8Qv_x|K>+f|tgqoP66 zx?ItTMT6B20xLSxmTow)Zdd;C9sL5!7yjf>jO0uc5t#ip`LmYlkMh0cv+hJM-}x;l z@2&EY3tvp@>}$%hvm<9SW~rLAnky$iYfA8AjN(XRT;gQFtH9b+$q+5DieUrWLJ##F zC2##-XMPu~|9R3dj6H$vVcb>02n)XT8Q%9^ym3^I4q4eyxuwEoimtsIO_B#(`Z=?*%>xqxK2YBkopJA s9~gfyq(QWyaAXXY+50SL@OrFyfZ_c$+mZ|hKW&gQPgg&ebxsLQ0Ng;C82|tP literal 0 HcmV?d00001 diff --git a/example/icons/basic_folder.png b/example/icons/basic_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..a570309f83f0229fc3237173e1e3eb9481c96119 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;aW7srr_TW@Y3VKa`2Cpv@qB~(9co|3(E&%Z0{uDHG58@eu9I}WH12pk@EZQP``@Oi{> zi7j!V!XG4F_jLRgWlk*m}2+Vo9!{RX`&}4=Qyn>ulFGsI$m~GY) z%X}o zX)^@m4*yPg`h|7s1>4lx0PA^$#of<@6Rc*`&ShRU?`!%#CgbzJ7PI9iT`On*!QS$W z;g(=oa6)cU@VQ^{)wg{c+w$MpFKgaccw-ln$(dgZMGx3If?S0KI0VP6%_-T|24cgCGp8-XFjbI?5k`5jsLg=m?I`5juh+bOiqfZs3Rip+~J}lMtfPaF^5e zfV@1SL;}?~j)&Z(sw$Eai>=Cytv-Bs`I1xy9Z{;ss0T<9U`MENvK1pz@YED#_R=}o z0tv}@+$;bUTbzQsYv#q>H-L8IzbddEP<<+%r#^_r-zWEtGyy4i&;-mVYv%rwA|MqH zih!k#-zl}lSh-RO@NEqj9y9@v4rl5Fqld^4Cj)|jm$rcn0-lCM0Mf;$FQXUWm>1K; zdxn{QF?g2irgkvXhHNyD3@n~S8(55w+j1Grp#x$IYbb0x90a~62JQ}7yyz;l~mWnB;{l7M2| zpZXZo1&u!03r2((h7meiX|428zrFw1IWm1XVQd0d92mfz0D4Z0j{%$jfoC%|zKgxd zk6On`0%FxEKLOtDAIn?|^{!F9V@U)A!#Y6S;0dh+0aB^4Z+~q8bzAgYo|0I3xIxBL zbVzn$lcN%tG&w4y=f|^d03&1KHl+{{qO&ug?pZqO)M-!yAq|B$@iEk{@-c*rp`p7`&a|!U<&o2IFzok8b6O6t8c>!b8 z)R-nmH9f8yBuX=WwLL--vje*h-6p3SC3UN;ZkE>V@_Jz6bC1ka*ps8tA*H{ZA7t-t z&eRwM&r^HK(b*7;K$Ydr4Px;m6Hr2OR5~@b*&=#&Sn^D;dH}He3NQc&{OGwrn3KK$ O00005SPHB zL`p#g2)>^s>hX!BXkL39Ml-Z=MWY_oe8KzRR91z0|CK+^#b;!$Fco9rV0Sa;#Wz7h4ZaBLHJaQ zmjEG^lIn|p2ZUY~05nXyx6Im$59IJ3XXhGR?!-&##2MYLSHz+M0QzT7y`j|NNwn$Z z=`;Yil-luh&`@kKsJXawRh6KMMo~XH1~0 zkMZ|l@9x|)0|~|djU{3O0>5uF1y1jElQ6!GjSFJ7z<}3{xldv7FZlMS>))LKV1rtC zjh{h#!QXP)Mr6&m1%k+HN_3s;$>@%Agq~x)K@0;ryxtg^nZ4%Sq~-%->_iE1d(ER633xHSD&UiwDV|Y(>0AP+kwp}6& z+r)LZEZHIq%*H(dD!M^`GTbEGppAAhZ)5dmeEY*`Y74gmyoS%q?b7{ak{vD-8@A8^!`3%HjPh>0I!y?{S+k4=4TBr=Ks;N6+2 z5CB7DJja~KEdYM@Pvt4GFEMomQ4GL=d8sEI?O&sdDiTspwxX;sJ5`rDp{Zc;CdEB- z4?_z{bd+pfhE=UX1RqJ+)C_UPr$Uzdi0*+2nhjVmRiOQaT~U_!V6qqsa%exr22d6( z1+>2=Yd?hncUWKwSpFpK=c*B!8^v0I=50;DoIGCUKx9?`V9s$Y&kewslFDMH*2Zc8 zAUVTL5Po;UzGH73O<4FIwT-ejl* zEdszD>W+z4U#uWgI%-=uUIAUI)rc-N4lcLY;3WunZsPJO0MG~8oFZe1{?h}1i<+7f zwf)3ys2s1WsqH7xp5DJt3f1;sKHB$<;(rjd^LYI|>rT8yuPRf)2N?(YdLwy?tPTKD z3uFUEEG1+S`S0+_C%UlLpMnzFp@0q{m~$57XnkmIia0|0o&QF^AXizom9002ov JPDHLkV1hHD%sK!7 literal 0 HcmV?d00001 diff --git a/example/icons/basic_geolocalize-05.png b/example/icons/basic_geolocalize-05.png new file mode 100644 index 0000000000000000000000000000000000000000..385688063291e873f03472afed25ecc936aa2b71 GIT binary patch literal 935 zcmV;Y16cftP)|2d>qc9APyTEZ1G`9gGFajfR8)O8Jzy{}TzzA$mI>FHinwubJzbE&(F2TY` zj(Ons^pX}~qtE)YM8xfOJMDQqopwGB01f~S01g0>4IxCSsnyhLx_Q*YwK6FJCJb_u z9<`>?EQch+TPJxoX2AB)DqdDa!0Dv7F9N~)`=1K`b>+D)V1gO=fHfsRDnOWPd28t^SU-`q6I_!BaXCRsA27ma zg)lp_)8=$1fXsJ=SfldR%E}4$SO8Xx%3EuF^dby{pCM{46cWwp$l_bt@zaqX;3Rp>93 zvw}v+E4B0EJPViyd?B<~JI4#P@NAtSs@foDEigr6M6FF*o%C95u`_gbB0{~Q#CGM{ z{lx%a8=Mm*tZ_;B^1`W{IC0K4R#^b>&g@tK3J0_{qPg+~xCPy1NeY0sBh5msshtNa z7dpObh1nF80JNcsEwZUGAb=h*%@suDxg`OBBBb53X^y_)($JYCoMBACd+?g5I;Beb?%xo=?N}ZnsewZNl&IA zOonv!H@q?eU^1yoT7Ag?gl`(2toD`(0N=Dc>Ik`U5WXDk1;oien*PD=)4zt2(SRna z35!28{TA@Y^G<&;^DaOgc00&hV_O@?uf`4l4gd}Sc0K+JFaXmo#K|7<%lZHS002ov JPDHLkV1gk|2YCYuocW2tvOj1kU)Oi z1WVRv1PPC4V=$2N`Fs{b z&<1~hkt*6l?tpjLv|&v^stVF->w_u{6;%(BcC$88CV&v3J>$-Z&_klW1OXNz3<;W$ z?lJ@rA{v}23=w_oyABD05a4)lt3lscH8Txr*Oq|mvEaQu{CwcwPk5$FDhOg{2V$vE z)z6BVHab#Ydqs8n5WtR)tTWoWJw|rnc&5cV6MJ^_5y40pP9p$=)L^k<6FJUp@2VD% z&>v0!0-lzD4Sa9Sh?rc2G7`GO2te0W1fbYySWRU5YaR7^Qm5XX0PK8p5Q-RLboz6V zVCsy!5`b>6VuH`gb_ZhR#(~RA(rNk&J)0bU?6oz^L`&C(;o z|4%{*Xqa22BoBs>igcC5dcc?<0ZuEEvU)86<^?K20+g$hzOtY#F>{Ck&y)!g;Kk=E zdn+z3nSe|{n3%a%Bsl&B#b`Nqw3dYuFyU{NpfM|kaZy<)0lvBRZ1Js8#8w1IZ(?z- zv<#zd1uIvd3|&1LDoE;iOUU{+hK&Zm7B54D7vAijox5e|pNIn|N zhokv;e76e{^(8JyQ`mA26o>f^8c5YrSWXe zfVy4ox;&0+$ySBknw4R3zy}kX2SEr-cif?&pS%1q!3{ejd9Zq^PiC+qH|7yBs+LTJ zNqK<9BWhw*W98qDLzk(z(r0rioHpmP!Aw9VAQNzD*=-h>`6xPOy;5cm*g?Jp7yuxE V&_J61i)a7<002ovPDHLkV1j#=d&U3& literal 0 HcmV?d00001 diff --git a/example/icons/basic_gunsight.png b/example/icons/basic_gunsight.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb7e60984137f86237f1432be1b9e1f23025d83 GIT binary patch literal 753 zcmV|2X%!yph1U7#L;Za^ofNAM^fAtQ8zWCM>tCa5>4vw<^#d$eZ>A=SnQwjn+w zgreAR@7?2bfWmRNqh}%a#=G`H2vt&8 zN+}(c+)TajtWHt^=yC0M@B+D-cxU)C;otu&ti!HT$5cct@U`)(16+E%H%Wj)u1$n# ztKOXelx#!wjxPZdDl=^tyAXijTg#Z5P{$$y9L0_8wjm_M0B_`266+xmfbW)8w)(fixB^o#%V%fVTk&wWUnC1_9&r zqf-MPVk1RjGGPMb(k{A`*-NV6En6>3R4^M1L6Blt{l=ef@O+nae813MpAC^3%WLZ3 zF}O1}ULD(m2&k}ZGTP{A9NTF-LKvfenRp(aE3(?^5~9cbg!iePr8xzZSn5-LNjn%w z1Sl-q3<+o*3?u^N6DUB&P(Ys{0lkj`<_5vtPj3SU!dd$Tu9`yTU6BGvJ{el$WatQ8 zU`_!KYeAG7cx7Xt5-`rCMTP<>eAX~?1av;DsYFxhUx7c`9tLlTc`S8J1vmV8&cOSljW;i6@wPZ0jPTJI z^>9=j>Tr~g$N7Q;Uy jzyvS>Ou&)Tj{pMz`eF6aiNoO+00000NkvXXu0mjfn;}6T literal 0 HcmV?d00001 diff --git a/example/icons/basic_hammer.png b/example/icons/basic_hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..0a779e5c08782a429547566072156f9f4541866b GIT binary patch literal 650 zcmV;50(Jd~P)-|HxN~icsY)(QY6Ep$x6X;8%i(dp#g7{egrHG#dP?Go;0Hull2cSgp z4*;c#A7dfKiXQXCWLRX<-nqu=Lc1xC}{eZV=bu4LJag;}Rn;Fp&jH>NrG5 zY@yTHgv6cIThimBo6P0gYY4Y*0wB_XgCR5u?ji%{g$xeB76>Bm6)20&gg9TU8>Yq( z)td9gdTJcL2?j=$TzR7wSA*cng7X;M+_JE)sfHVXM0Fn@307yZA0w4ha4gfa51Tgc?;$#>-TL2z}YA%P6 kHGq(me)a&?%C7(e02{JEg$_9Mk^lez07*qoM6N<$g0SKQ5dZ)H literal 0 HcmV?d00001 diff --git a/example/icons/basic_headset.png b/example/icons/basic_headset.png new file mode 100644 index 0000000000000000000000000000000000000000..6db7563004ee2e28e0e00f22143d975f159b8d8e GIT binary patch literal 836 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 JPDHLkV1i+5^5_5n literal 0 HcmV?d00001 diff --git a/example/icons/basic_helm.png b/example/icons/basic_helm.png new file mode 100644 index 0000000000000000000000000000000000000000..b11fe9463f601b0e745d1ce49b54800a8cc3fde5 GIT binary patch literal 1221 zcmV;$1UmbPP)|4EV+%OEzW$0SZoji5+3lzAyOZ^Dmivsruegp$ecQ4KCE}icQ0s~!wn=V5- zJ8hSC=v7MTfFSfkQP!PToz*oa$PwR*%FL535u0aCvd&*8;!- zzyiPmz*%3bW4J-(?h18VtETTc++UK<9#rd9+rxdUckWL zX<@$8S`rGbHN7Q*3@~OrS^|7~_^*SXC!Wa~YJWweb+>Q%CMg*xD1U5utEr&@T00i8YSk#6o{Kh4Vt7C&YYLmv^mttW0zLYDBUmqj0I+Dar-FgWvv}jqp8=U(NrWGyi<1-p zwAc<51W?+*<&8^>YWp4$C?Z^?7yyHEzNvOireh{@gARgtPW@KxO=PSP1por!2k{g& zw|{6Tj3cubs(n;ZUVh?eHYXwdCnZ=tc_avgMsvFgnP&;7Kx3Jfc~m55AvU_7Edm6u z3)K<50HxiSc$^FXSaC;Uxx?4CsR1CX|9~S+0A}Q6JtY8Jmw-OMJYgVI6FRwLq25jc z06{hP#O*_fdkhGLX?Wf`B0v_uApkU7^EO0al_k3D$ToQo?<$7LR{`$2nF4^3(J~-t z>I@4M1;^HUv|ZlVLU9idmMb%EIO^>gUIl*ST|e}^hVl4{b^7^ec@K`H=oMPQ>>06MsD6hm16^BDwTc#P01;{fObU=R0oL?E<-LTDS%^)vL@!5ETjO=O6&fI?`7 zT8ppY@tu0^T$Z4J)8D8+-@>a`>bVjEz>8v2Y=#V(q8q_x=vI>DopduK+zuP7GQ#b! zw>+10J1j_uc&jpkgh&;d6PP+7;!QCbOrBSj;itq3TOu@hO3arOHKeHP6j@oTfT#sLEW!VT8FIkhm9> z=K|+hWpGKeIU*w}&jlPrDkOgS*oUMzn+8c9C#N@V-fx^OX$pjY)=E$ z^@;~&_H1F9{9%&NnM2;52E6*8ZeHV_Gxsp-pDW&Hxc{t~v+lw2KbI<+lk)5tY=wO>-5AYA=V+gHZ!`$k%7el zjt;DPowmkOFn`|$<}~#ew#|#n1j^u&aK?d-ynt2SlTU5`!&kv=!0 literal 0 HcmV?d00001 diff --git a/example/icons/basic_info.png b/example/icons/basic_info.png new file mode 100644 index 0000000000000000000000000000000000000000..d9668f930e8c4d1214d346f3551e2f81c821ad8e GIT binary patch literal 824 zcmV-81IPS{P)w#0 zK~#9!>|2YGoG=VER6r^S>3|N75?q2y*b=scD}fRyf$e|}!d4JEAl5|M(`ta+9bgt@ z&3HVsAFTH*3EQ%gVHnJok|as)yV5u6LEa{Qe#5@;t%Kg{*KMlb76f?E)^`>G|6KUE zI}%cRUF(-6z=O_wck#`QfW9G!*0&ydKW;zr|H3!w%MnWfGAd}RSq2cWq@ihpQUhxM z?j1m^@ca^=)r&D;%xv-V7bi z0Q7S{11=Qs35(zsc-fQy;p_DpKDYu28S3(g4XYD?gS1PS4nV|3xJ0%J0RlXjn|(F# zOjpZX;!`Ai=Aj&X@v7iOfPRp$hydpEhX6l8LiH^IgiqO{fEVuY-ns7dv7sNkqk|VKMw--ojsS}KO(4aFe;d*u zV>M%M1v&c^Fv=4WP%?ZE*G}2dfTP0;|3za?CWwiS+%EL_7y*?zuT%o7k&A}@EP-#v z6?(q7BMYz!W?x!?HqtAyGg8oIul2_^*`B{%sFMm@*-Su$C!W z04)@>2w}~+1+G3RHkcd}g;w7ngO)g%Pj8|pjW$AcbJ{C;Gl9^aE70c$<@GX!l(>1=L33azI~XW!Sl%MgpFwU^KT6<`2&*f4m8wvWXC0000i<`@R2H{HmQ9}K8pa@qYe zHZw2Cwpvp;JL9&S;lexI2jVg}T)K3=&VC|a_C>$o1^TZ$-&|QOe&pLHk7lL3yk{=2 zW_}6Rub6Z?m$Sw3W@mQn7MoQk&hDO>x4_`a~w3^;_oe5`)8T^~}aDOm6QFmZv zdCM8G`RCT%6}@J=->Y#?|2*kA$GXba|MtICq0+E-+tHt8GZq{2xlMZN-oVK4Uo5bx TpnuylP^fyk`njxgN@xNAEn4N? literal 0 HcmV?d00001 diff --git a/example/icons/basic_joypad.png b/example/icons/basic_joypad.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa6384cf64a1ef3d5fdcd0a93c515edc1c7b07a GIT binary patch literal 731 zcmV<10wn#3P)|242!Y~X>svm$67$F;ce*)OxI|?H(0&Kttut7)QH(-N)^6yB-ZAw~F2=pvj zZBbJBuC^09LN`sL<}8Jpxqtu=00KY&2mk>f00e-597Jo~IE4p1P(E@rD%J~ZA*bO1 z@8kioUo>T&z$yR&Kmd|p_RAeS;N6$O6dM|N00;m9;}UVq$&k&~YkMiJ8mpg~V>(%_ ztsX75Lrek+s+En^vm5rJ>TKWiVhjK`0=T>1T6LbV?0exe)!9ZiZaeHZQ3P12*u;x_ z&J}P3Ar)cpc&c6k1b7!ei&q8DFf9m6CkfK+{h-~e1MeVW$MBgh0({IIB3{<~=g+4C zDhZT~b@y8tnBzU+d_@3ddmr5#TUnCAMNu;B!pLrEeh0ti6OLsf*X5w2c$ zkWg_iP_%4ZxkbhV9GIt?kUd1iB^1)^gRcvUCI9k#x2#$_J6H7RV!ZCz+|>-%iso|h zSj&Rga&pXki(Aok-v?fhuorWcz-knWmu1c&z}&WswTHZ*72dRC{F|fcrqz_Vw_TOG z$&uO~|335s7$Zx`SV)JANhm*b{ff26jTLiSSPQD36-$P>$}y18ViKoJ@E+@_pv{6} z%SNuUqwBZ*f+iwoxG~>it`b=5*>8m2VJlp+=W_5?c* N002ovPDHLkV1kAxHn9Kz literal 0 HcmV?d00001 diff --git a/example/icons/basic_key.png b/example/icons/basic_key.png new file mode 100644 index 0000000000000000000000000000000000000000..4adeb9ba5c169637c2e4a5748aeafe2c1f19dbdc GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnWPZ!6Kid%1Hz0EzWAkgMK z_5W9nmuw|X>mCRiIk|n{kUgku;AG^u*KscI9nL$}-zTg{owB0!n}GhMlRq1--$}NR zzmYcYdFE1jMyZ`czJn5_2 zCqA~FVeRux*~?(b@|EvXw0>z#ZQgAWPKP=2OzFFH)0N)tT5xwmUihrfHLh>@O>zvR z_Bm=WHvI1WEXc8rgTZL}-w#_kzvL{qK8@jk`)|F4%lbK$>&>I&dr#W_>3!q8=+6|7 z?SdQnQ_jy4Ubt8$R_nRy`<}Ignnc*SziemRZXi-ro@ZTIjRp?8!^NKSeS% z-EulNdrrgZc;0v0IjXG;e{KKgU)fr*BW)JbtLcZQhZ>v_Owgaj$WxSKoKbx?@w487 z6s{|CIVK*qVOn?TVzAT8$r*9ei(NiF{kfWds$Sa`h9BFXZZKk~->YQrNwwJbjKetNIYr1on4?U#4(#Z5c5*%50%GB7mkI<=gEnPIZQ$!99BrY!=g N@^tlcS?83{1ON*(-}nFk literal 0 HcmV?d00001 diff --git a/example/icons/basic_keyboard.png b/example/icons/basic_keyboard.png new file mode 100644 index 0000000000000000000000000000000000000000..658685a3280922f44b1545f81c484b3925660feb GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;pb7srr_TW@X~@*Oe|a0%2u z^>_UqMb@Rl%>@s?N^9~8olXBzt|2t@X4$#bxpE8)5zvM=iir-)?W8h>0^2-kVfA?<_1PWitQ( literal 0 HcmV?d00001 diff --git a/example/icons/basic_laptop.png b/example/icons/basic_laptop.png new file mode 100644 index 0000000000000000000000000000000000000000..f30c996dc4a6b57222242479549687a7f8a72413 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|*TU7srr_TW@YVay2Ljum-5_ z`agAfQ--9H3!Z&3 ziC|8PoVz`08KbdZ8ZS&KR{Ft5neW9b8C#3*^3{J8JyG!W{CCba1%}-Xu?xzW|Cpq5 fFu}B4Iiq%fL3oXHts%?X6CgoPS3j3^P6|2eIr63GeEAT2fO0a{q1WTZVEx{5j!4fP%JFo<{g0%w=XT!T(27L;FeYcVs z#u-JDe1wqjldtQVg`_;sg?`k!nCC`sJJlz6j=HGrspV5aA^HBe{$!uoWZkNRLq zJ+z5=Z12i%1ps;j3$~f6JW}W?0OY*{9vJ90Islp~U1p+qeN`dX`Y=>55SuJj6aX~6 zlOB-13c1z?i@+B69uxpF)`zoWFcbjD2MyRaumb>0W>=&`0O$f zW{l+u2xl6_%2$p~GYSC6K|et70sxJ9XXRr9U;&|b0)ULE#xq`s3IG}oPkq)Ag3eRR zD*#~W#OewFX50@HRHbg0RWW9AGC)6kjj!VQ^eU|Pr_InPWLz) zWaKaRI(5(MkBrQ#gY@=UsTk!LZL#@5_p5!= zW@!VUw8vu%9?2{lw`B)S5n&Jq?h%Zq80Dyvqg;DvL z$#hGOa2&O_;NXrrzs^%o#i{%b2+F5zq-&1>P`)8Aa(IeU`5k~eh7ehq6>-6oe6YH%iZ`We(l@mSoLW=CMF%xbDH3 z{k|cKM+4z~l^(hlXrs~lIwAnI=gehv zoeIlK*D0xq2teaG^$HqVa>dpnLKG+%y5X+JRJl8%SL3Kz3BD%KLQK@X@A3v)yVvL00000NkvXXu0mjf=Y5lc literal 0 HcmV?d00001 diff --git a/example/icons/basic_lightbulb.png b/example/icons/basic_lightbulb.png new file mode 100644 index 0000000000000000000000000000000000000000..5df11506baa17e3558ed9aa61dac7a26805f8a43 GIT binary patch literal 993 zcmV<710MW|P)|5P!+b|H8f;!Qqs4_qSWrBDFji7GePEc)7jgUM9$XkR=AWu+vf^q}( z*q&N~kSrd}qZyb44vG>|y8C#%UnL*MG2Ba02+XLpiU9+CfS)& z0B{kE3g}V2#*x(8ij_x3!3RSawX+S-R%yb_niBuk;9Py}zy*YF!3%?VrNTR<@($11 z;96;bSVRc`jCw|J;o-Sr28cQ;0ARGnxfKk@N*MN}jRF8e_?pvT&1hPCRsam)D{kQp zBkKhOUpo;@_yrK^pa7t?52p5(n^1%VU~+Yj=MrAyWipI?5CAmQlN{FG(K|@jqv-O& zDZ<;GTX>D9-4rph0ubBo`_O_bV(zrXYZD|>vrp(G<`6oMcA2VeI*cjpFTDK(>xL|% z0sN`l;V0gHwA~Xu@Brg^rrXnN zb$Y`DWskfC359FCK7ik@ z2mshbccm==7&AOL80OOe0HjqA^9^r*ScJ#YK?CH9@JitCc>5K2>N7`Sd^AVpvGc8Y zg3jWZ-I@o8qB*J=pnk1MN-=C}1~ZGPJ-+baLbKrKtz6sEye!raBs2yajk)1SoL<@n zO$(agwIl7VAOa6ls(FvMw~mJJm;t=O>m9tSiLxSu-r%IWBF3&Z5_a!dAD*WNS>=c(~rM^G{AlU#W_rmNAk_N;Y2bdagsyE>N zE+HAg1VHiv%tj`1Z;-qI_kWJMTJca{r6nVn07zaSkg8(h2w{1#vU$k@EzoNz|t P00000NkvXXu0mjfaFxO} literal 0 HcmV?d00001 diff --git a/example/icons/basic_link.png b/example/icons/basic_link.png new file mode 100644 index 0000000000000000000000000000000000000000..4affc94fb6995f4d9928f59883851cf0bb306f61 GIT binary patch literal 843 zcmV-R1GM~!P)~#8o^8MtokC4yvoWIP_4il`v-e6N0b5#x+Tyjd??G{oeG{>08zNO%e+1Xd@xyI z3wY~5Dt7p{LI;@u(4{+=+$I!qPViZ$&iEGaA4^@{1ptWNutM9Kz=M0-zSQuZV|}&Q z=~Vy)0#|8u7k)8>Z*9um-UQH$!RClDzh@|U7vP|Y%XtRKi2w@3WO_G3gx@TH2EMk1 zS9f*ZQ{#*(H(wCKzgB6fn(uD^X}cQv9N-!LZNnm| z0G_L~LB#}WmA3N;KL!yEB6oE32=Bb7ZCM6SFdy~~tF*pXmrcu{+%Ywz2ESY%bV<=2 z^3>p+Zj_7xUJCF~c26b)F9l%A?#X1}r2tpOFHZ(uwhH;=&3{|xO|PZU$ literal 0 HcmV?d00001 diff --git a/example/icons/basic_lock.png b/example/icons/basic_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..64bb289130209e943794dc6ab83888645b7d4044 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnPPZ!6Kid%1Hbr&8o;Axv2 z$G$*%hwv0ZiAF&qC$|I^w-X#29Ni3rr|_O)TUm4BddPI|h1*h{>+ZjlIl%wYd85ej zuLe9*-B!N76|hzH=7b%u`7b_kDN=js$+zTsq^lvj!qN=~&#idqS6FLy@~d~okE%l- zm_1Jige~5t{cqh4E z4F>ysp9IEEWN4Y>%XB_#(t+L`4^;Ptt1GPcW_l3*yV)t?YqnE73j<$#-BxohhBF#g zEYCUh1&db7Ua#(b)BF5J_s;+G7q%@qH0NI3r{m>oznDJTvruls(_bs5?fzeJF!03$ z)&p&?_g&K8dqI(#;qcb83YTLGrDp{gd&V@>yEop-xVPE|WM z_n5>w-$`>-CSP)$_uBt&C}YTe|EjmEUUOa)jd!Wf8q!mEgMLrw51H=0a9e77&Ha}$2R1HkPdeFm zI#GhFGicgUqpRmUa*xE-Z&FKF7FXUoaq-31N{eQ&3Iv}>$iDJn$&Kn)FMhe2)L19} zxai>>uqyC&*S_qPyzCoeMHq~ZNEVoG+Mf6S$ltDaJNtfRiZdRV()aiAsm1z7Z5ExD zVldv<`y?=S8pDi9zAWdn79HTVc<5Rirmm1*%=94b_hN^L(qgCitPEW7dE3I77_Mko zRXpdM&9L*zyjRUG-`tXAZru2PKA<)z(JO!di^uIDzod#{;`wg`)(V}z`#!E9$x4MW zAo#BMr={sY)`At+I2kgQIZv`YaQ9E%ubo~|`Ny_#ugI@bIkkkLM&v`w1KWSgA}Sdh zwlY^lZ~CP8OwNW07}^N1;gZpAd4pRYB1&dP8z-1*Y<=bR=pKKCftn*+&Bq^iBrcly zO}_D3Ep(Pexm5BF)6TLKFKYwW*@vj+UJd%0CVPu)d(7hl~W9e0LXlJ*~GH!o0S zwAmuXvsG+H^<24ErQbLIQs(05FJHE6?vJ&pxpDejYwCnzY9&(UEpTspt#pp@^`1oz zeSej?5`s+qkg%G~Cqum~jQ>FVdQ&MBb@0Pc(Y AqW}N^ literal 0 HcmV?d00001 diff --git a/example/icons/basic_magic_mouse.png b/example/icons/basic_magic_mouse.png new file mode 100644 index 0000000000000000000000000000000000000000..b33df626aebd4db2decdb44697aa0cc15c87e355 GIT binary patch literal 579 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|Vm)PZ!6Kid%1HzwK={;Axv3 z%>E*Gf?q+;1VJk%Wdo+g226Jw@-FxVm|2*euw13QaD{ze&EkF2);P3o{QQJDysP!v zuL;gA0+VKOuT(O_Km`Z^|swy*Kf-0;-Pis<=e^m=c6x&Z@NCGw`)$_^-rQRJmYulO*?%z{y@+A z)xyq#3|+ThPKZ}iZ&PAW+5Vl0;hi5(-D!&g{td_Of0=jmdfjWe1KXbQUs=DtHiTgx z^Tx$3^TMD45qUf z6t3oC2mo5_z4D3UNvS_5{31Gjd%_C~o!-ZvG-f!Q)wU~h-(bb9V4zkmlM3FJn^@3mH?ozw3IEp zJN?TSJIj+wRsi6--AKXU?urmGfOTIr3ji?Qj804Gq6o2e)L%U-0Jyyw`CT+chLGrD zhJ$M~j7zrB-Er^)87ncK8U;B=X0`@k7Zm^!l8M9F=I7XYj5}^($Nd%gpos#&qFyin zP{i_r4N8J%9QW!=$)G;bI_xdoNSe?TR8?n6!YB2)REZ1PFAx$)%$&ggP zO?KyP1+W4b=Guy3{8yvpbus|v(Klx}Kt?A?34naA^=RbJC>yN8m~}vI&FDn-h`ts> zrVPe$%V_ksmTq+K2CW5={GJv>)+MoZQFL7vUtf%Hc{TQiKEG#sHOA!S=x5CE(A3JPlrI=f=`dE}H+@Y#VRkrP$OqmKSZr3j5CZ3B1aAmQ8Xpou(yPMCfDSq7pyW}9 zn-C(uc|9OyFYxsQmH=WxU<)7?1l9mzKwuAm8bT5PC?O;RfC@rV04N|N2Ou&3T2q uF>H}pVzVG*F5?#sz=DvujMwc)fB^vWL`gz1o^E#l0000WrU8r*7~AMu zCyKte8rv_Gj5WNqjM1a}s-$)qg?nmTBdvQ|4j`^EJa>$^{#;J*p7O-s%2@({!qQT< z@b2_4Uo@5{m8<~3bq@mtgS#t2!~oWP)hqzOcr!X3rHdlOxj zxflbIV%P=F-I0{AMs^R`ZP?id)}xU>qpYwB zW7Yw=HKP;RBl=PdnKBs14WrTDSh~@@8?+Wg@_SkkS(e0>MbTwhe0ed#<<;05`ux7x zt1%`oM?YhRAE(#j-!T3pbim4IyFtS8hJO$SzXkP3c3Wgz5FB9=31Q-BRKu|=Avf5?<0000okTJJU-K-^+@?x=D7xg6m=<(a&4mH?ozw3IEp z3q8h*mE}n#D*$laeNVyQ?usU20PC`9764$pshyV6MbX6CUU~Ih0l@7|&99;Yd|NeQ6BeZvrd(W#;YP~d*g5P;FC zAPa)%YJvrtP(hF?KRZ2*Rmk@_%E&&n2|RQf>;czmj@o4@Jizp|6*uL2I_)R{n4xdZ zu!4+Ek`e%UU+a;`$0!S|!kBeHZpr9GHbkE%LuML`>ylCJFD>2Z_6Ds5k^GSsMCK*2 zc~Nv;7N0jpxNMDmqRhkHw#Jxjj{d}Kew?<)4>0~Lbim3ddqBeShJO%xzXkP3c1L7f z5FE`U7zCDwq%4ECkgn$e!62|bCI<*xyVfr?lPCZjf$|--DILa2{HC9&NAwQcEAhY^ z0*k|nSDL`39>E(zlE#OGko2;+GGLFGv{CY+o0||KAG{urvKRPz0!sifA+QAy3j%8Z zF(9x9Kn)=Y0F)4t0YC*IDF74@k^>MLLXrSNLP!=sC?;4Zwnsxs2E8SAYQk XS>jnv@bDBR00000NkvXXu0mjf(${T~ literal 0 HcmV?d00001 diff --git a/example/icons/basic_mail.png b/example/icons/basic_mail.png new file mode 100644 index 0000000000000000000000000000000000000000..1734b88f5e424fd2defce1b65bbe06b1c47fc06f GIT binary patch literal 514 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R5fr;B4q#jQ8DdV3Ekh#dHs z+}!to1BlF(uT0{wwMED@}`krKO)48}n7B{ommy^jg>9!UKua z!w-9#?OpcP@!0L=SCG$JoHOH|ru35Q%U4|Aez9DRc?riliyupP{Fpqh#&|y1yva;b zA!9@T=7U!gSsVGwt7_+8$dhv@*i_(R`&)2p;s@)UZ3WMygl?Z>uP|EPH|wT?tl_gY zv6~pYVqF%po>lsj(;$?&gJI8&x8Xbr=?b$x{yxh7U=hPsu>jNM540Fmr(fPGo*2ql zROO#787G_I>7QlSv69iITBSEl=&E~RXoGn1j~hwG%Qz1-|J?KH*F(_*rT!Q8W`>w6 z_kPU$uiRdD)gTe~DWM4fES1Gc literal 0 HcmV?d00001 diff --git a/example/icons/basic_mail_multiple.png b/example/icons/basic_mail_multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..629ecce7a7803faaa9b8f23984d15d38f41660ac GIT binary patch literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VoHPZ!6Kid%1HH?D0m5NO*e z&Yr;HUI0aI1uf=H$_7o!7ERI#*();7Me#rMy8O>~mO$>qcc0(wk7{U3%*e{C_kGF> zv=0Qb@}y5HC`k!0nz}b+r(N|}YVmH7loAI>Y6X+&%Ky?0LE@H|n$%6PBhU(73edBtaSX))FZy!Q-$Z5R2Ku>Rnp4gbYjwHWqz zvQMku+h*5OS(kd?`=Omx40}$-IyByH{q#rosoFee`2#`6*gn;mT}fex*ilq#;WIPt)sO{!%s-Vx!<3c8WEmX?Mx_{i&>IT_q_G*pa1>8Vd`Zh`3Jo z;o89By@ACGOad9+AFB6nYtdCyz0ugnb2D*%M}~t!T-rUKV~T6O|FGC)m^1JB?9&N7 zJAHjpI%3YG-aG#G(PLwgn-R(R%j5Pj16_d~H1Hjh5I21$<}+`z&G)mNpVlARazw*r z>!N*6ME3f84%VvLr`3EWNaFeAcs*C%MQXW>Ka1xpHr$)woTe?#a3sUUmSg8~tGE~3 z&zT%vKXFUFxcTIov+u11Z#|nNv|V=&H$%~!)j1{Adt`U4e>e3EV}@*@`b_al6RMZ~ zZI`_uq^`pdlCu6pZO~Ibho@Bn+e5h-#DeB#&As!Esnx1HIek6Tg}ip(UF}goo+g%J(#C{7~}x+qUkfJPjvOLMI6}ORH{AUj63w z?d(ZCSKi&dc+Q6BfRbljQpG;ioeLOrCdoLJHSc=W-2KFlF=1kgutLpd_oC&D3b~%D zkyR1fO+5OlYvMlqZdiQei`q&1bxX^`#2+-C{4YH3;i|WjmN*v0?Rsg#;4*3QY8Bo| zv-`aCI2o!{UPc$4WVkUYMdPF@`vIks3X{CW4s@yP^*$%cP#xIu!Tvzc#;DqF5)U`m x7rCcKanA3Zza9O|&VN3eW^n9{ znwn8X+?lj{$KO7BY%Fp!;_%iW{dh*8D;OGL6|B2|-{}ls+&S+-09c5DVdYz<^uK8h z#SW`PC;ZB1UBSR$!O+mX_L!&8`-uRi#Czf6~ zr(PfPNut8%6w{;P`HBs3liN?MjbVJS_~}QLCvl&u7V5q6u=luer#a~4+B2@P&QEUr z+b6s*RZrvUvesfohjrJD%x}r%i_6X4J1LS|;?6e(%k>=HaXbH;GX%9vR=fYy*|o~` zi|15phMCtV?^qkfXfWYb%F8F)xJ5qQ+d6eGr^8J?cctz-3@eJ{!*9>$Y%p4R@r{t{ zp_AfLr_HSwobeCSyY=4FsPReW>u<~2Q+XRsqy$eA6u$0tZei%1s%q~^6Ho26j+)ud zD4`NLe@4w-^_>eCcqYj>g*Df_YVLjF$Cxl7MOxwKHP@o$j0&lqs*zO@+pl=6`&JS6 zq58nYq^ikJP;l|1?g56IZb|DM5|5=PoG=gtl>Z?ekP1R72qkPOTf&x*61Wa1fvX@JT>)V`U@PFp$+N;)>>b!+ z@E9zOyh00}_dGV957J>65@{_>Q!b^S(w!5KWQo8=la|^D-TH;(w|D|9ttO|gCHXcc zA=@eVYBvN-fv4rr?}C7jz(-BM9PrT+Fc*B31S|m`9RW+hM@4`Q_-F{Q1s??gF5p%B z#HdJ#6PD@=^q-Bt-AS$_9r~7(y>10wI~LXgpg#dD;LgTw)SzVQBk<68o+ z!2B49V!k1{XiJ#5Pg}_a|Lu)uw3tP&;H?S3jGMq~l9PiKo$w5kh{6|mD*~vUjTx(# zn(Yj7Yr~?>KEN*`0E0GjW`~i8v6VH@ferkd@fNJL!JHAF0*lk*zCc*Pze|7tzMr!> zc_5)OmfZ^{_=f~cfG^huZ@f9~YZK6f0Nx-$TSDWN0AuY{TZ1>21N&YywFCESZ+I3P zW6$*_G6&GFpEfk`zI1$KVnx6N6r4+RirG3;@FQJoE-Uz(8zi?-7pvKVM&YEz@_@z!;#B44s9M&W1^xZbHl#LRF zt-z3=*12+70wsQ51rnfjE?o#HBCvph!vcDN1oW;Jkm5j*poBzXUcgEJ-IT~21RMlB zCg46wZAn}I(_+0U?#ic^gksq2#6ngi!~3GVXYY!R349zgXU?~|H=>WZnLqHD8D_5A zd%A9=Omwz8r(aHH{Dx)6mOPpA^2oGLtj`&M-kCW^YtD_W`yTN8uHAZU`V*BWN5np` z?(bQ?a$-hxwf9Eh=!HOs3TawwoVv=%Rhjjv@x^vCW6`kIF1N?xbE8+UKg2eB`A5Sm cWxvG}7&cGX*dWI;c@D@Ap00i_>zopr09G{Q=>Px# literal 0 HcmV?d00001 diff --git a/example/icons/basic_message.png b/example/icons/basic_message.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2e436d139ce9c8c16c2953123de54b7b0a6c47 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TRrr;B4q#jQ89?{Xe;5NL@# zxw|ZZGpb27qNyx}J&V08!K*_ygFWh?CA;9KMQokV57luu+w1TAS!OJLWb>3u8b!VC z2e}z8GR~MXqv1fP?fne%4FQYur_BJ`PbzR|@N(At|9Q{)5bl>oPrmLCsbpBSw4^v; zU;S}AiC4T1Ti@v{n7GV&&BJKXvkb@nVxA}E! zDC@3yXRlw{^EYcT_xrtX7_Ro8eZIur%lM_<+LV2KA7vCipWgQQ=AW&5@5j#kFUc_T zyl4F+wM&-oe;VCysSqle`DJMt<9g5ker87wo_zjsvfoaxUz2t>oL-_ol`(Jfz9TGi p?zZ1ueS7-h%YT$acFQsGFkEK+x8%{ruqKd?Jzf1=);T3K0RRAPsM-Jk literal 0 HcmV?d00001 diff --git a/example/icons/basic_message_multiple.png b/example/icons/basic_message_multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c9f88cba4e79cdc4993a5d3f7a0ea543043283 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TS0r;B4q#jQ89FY-1y2)NiD z-e0mnHiL6p0{ewV)kO9ijH(HoWeuWpsw-4ncwJhaB-~dMuH!pnb1hPjC3$UZ=DM$5 zm9DkiJ%-cxF5F@C^$eS#Dw%H;UCR!1K+A%4AAU1z_+oj#ocSlWPVG72CZH%G;1D~J zZF1~;&X)|lYP;{%K=jODs@+`Vv1{A9-IJa5ZmpJXPWq?N?zDxo((Rv4`K{Mi&Y5}D(X!B(IvTG^~dn#Xtwq(@_F$6`Pt`S@H@gn1n-G9>l$?U3Jp0Q*@ckOC(&-tg0 z8jH?Woc|^7Os*^c#lSPuwd7i&lF!ZDfBtOE+r$&?ljG%P<=v}U`Z4f_Rru%Rlmo6k x>QUy-FYlcFf0pgaHo literal 0 HcmV?d00001 diff --git a/example/icons/basic_message_txt.png b/example/icons/basic_message_txt.png new file mode 100644 index 0000000000000000000000000000000000000000..682b064f6b497d0907f166d90e4a186794cf6e66 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R5Ir;B4q#jQ89Z}T=e2)M>R z-d~o$8O5X;(NyNbp2S|ZK-Gi&7Gv0kd%gw_53^4ymED{^Nm}0i%^b;hd@OUm*G(zz zai7V~P{jT~#h*PzX7X?Gw`_W=ua%#>%m{P>7#MKWnppht{v!M4MZ*o3k1%0|87wn_ z5I3J8p)9Ls>4ztk@tV^vSw8#7u4T*Ms%XkK>3#f0bIz}93nI$J3MQo)UNZ>sv~>ud zvea(d+w-w6SacWt{F?gsy0t<`KTbz;n6(R_=(> zU*ScDadT=4j^CJadHEeyAFEm|euLLvG_4kx<(HlJi;tW4tS{hRp>P62)=J@>FZ`u{ Pfc)y|>gTe~DWM4fpscJ% literal 0 HcmV?d00001 diff --git a/example/icons/basic_mixer2.png b/example/icons/basic_mixer2.png new file mode 100644 index 0000000000000000000000000000000000000000..dda145f24c177064a32b85299fe0c20a5dbf536c GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R5Fr;B4q#jQ6p8+n@*1YDO+ zHt=#!Xz6>P(f5Eu_F&)(6_F?(kLando))S97fNa>IN;4ae?6yS$=1Z4O4GhtA9n$v zPqDj>F$3*mU`WVL-@1`!jvFm2f5o{ZxnSjy9ZS`upKhC$tXyB=pBP`?RkO8w zep2C4>*=rg90j-)+H}Rt*YQ}0y?ry2;SBd|Ew;J!oXu_w-m@Q=+P8P*rsO>~dDr;t zdhCOE-@W0NAL}VZu-g~~hCAM!T6>P^!Mypku6_R&_tz<2`D1uvk3f^izkk+CHs2HP z{&;KV>x}{qIZsEVw=8oeHbN z^p>7+>ajWBI_sO4m+Ir^{JAGXJ=ZS@zNEGPmqK4J!!{AF3LY=1Q!9e=-ra9&6z6W- z?v>TFX?E=Wi(6-1d!f*^gdsp7n4x*n;Thk!Uq8|1tdA96VtnRZusWkduUqw_N9S(2 zGDvk)x|swrUuaq%zGgr7gZ`eZMJx*}BiCMuWNo+>7QKhhj(gt5Vl@Ua1#v^h8LMiu zSEREvlq{Qd!IiP0Zr`#jeI^Eh&GGEdYY%m|@4eFaEV<*Z^i7MbZEwq0=tU>qx>tAU zdU-H|SA0-FrN{2i4`(q}&+VsTDynoBtJt%8N>Q{|L&_>ex1m8NAf{X>rP{K zR{>zG5CR8ME+n=tI6U1qoFRM`cUyaShTR5+7s?D5ikV(y=t(k6nZ;kWUg){wNr^XB zsSJ{Km#=F*xI8~+?%ajNa?`eLQ8(&uUmDqeI{H@E>m7T%54R+Tdrho4-ShD8YMpD- zByTU%^xkpy@RqY{bt+zNIXlzL@1O7wMemJ;mzI>4ZTq${Dm^%B-nsdEYyU+zFfu3_ Vs8!3Xd+Z8wv!|<{%Q~loCIE>@3XK2& literal 0 HcmV?d00001 diff --git a/example/icons/basic_notebook.png b/example/icons/basic_notebook.png new file mode 100644 index 0000000000000000000000000000000000000000..9151178840412293ff88c5c1917119e708102983 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|<2n7srr_TW_u%=!n?5BW8psy;~w(VqTl z&0KD-6{>quKds*S<(^dQvtM6o7dC{c1xfF33pxDZ=DpjE$py{Ai&8GOZTNI6p@j+P zG6sePqRK7&FJc+j{%E*mD9pkL6nen?f$;~!KYj%ckdg!J5Pp*aki$^JV8FgdxP0=OWTt0Jkgeat~ zo*#VRW^wDGkPC6Gsh+HJY_DouS?O>lEZ*fioAiHT3UKA7HrA-#RO%z$+8v NC{I^Emvv4FO#lfGsFDBx literal 0 HcmV?d00001 diff --git a/example/icons/basic_notebook_pencil.png b/example/icons/basic_notebook_pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..2e07f2b374ee819100196141da609959dcb1f100 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TSBr;B4q#jQ89AMzej5O6!V zqrId6WcvjUcIB}LobQ&nkO^hNIe!RP#2wuX7~tSt>pV!v7`W4~})xy992 z*ER;P(^xR|gZb;PclTs#Y^i1qV6u!nS{pr`nd?Rr<43OPd2WyV8|TR=sw&tz&QVy- zV8_7vfH?r@LLdM!fP4rChr|K)2h1NBe=wLif|M~m7BefGZ28RB=GeZhe^GaDtu0wM ztGp=j&=14UIXvfkA{a6kc_++L`@ziMujR4u#gAt%;@nnzyB2Zw_s;h}TKw0=I$ghd zec$ii&riM{)lvv`T&J>$>&Mp>p&3hiF=Nx_f>kFM7Lk$!XH3-8Wz byBU}ng#PmS1n<~15#$O_S3j3^P6<3w0EXT$&{%er8Bo7BG+?lN8^Z5yy|DvcB&x&gsaqEQix4urFXAvU4E-f!~6C z278OQf4x2f;02s&ur=5_>E~~YjQ|1owWi2#u+^&t0x!XKaQPsBzf%&6M6nFZ?(?*$q+D=$_(mGfzO3;W1SoU z6RE5)tgi(xdB4@Rkw_}*B zIHET;sf-YOC5xV51ZYy()(5x^cr3fea`kMx#3TCNC6y6_FHOBqLVzZfZ76`-g2(b> z^lgmV_e^E2Pby;oU+P2;2>}yww4wy=0$vh5jq!70q%tP(g{}8z34r5LlgieN>C+m# zH@9e4B+p<-he%Uy@zK%S~hcw=h~?gnpc1=#Zh_QM)KMYg6u?4fVYvn zE@_aB2tx1&$?Mf0OQGXM1QmG6`!yQ@ltd7Nx01Y+V#tXIO7N28t-W7KqB(%pcDahc z`#s5I3-M&g5fRkjvCXZmXu53OFQhQUuIJ0f*#GkpN{BNZ!9(ECISGnA+C9L;{YYfK&2LS=8?a zvn*?I;`Aei|5vad(5Et3Clc5#K2D-`oT4Ym2#}&+I3A%tMabu;@a1T&xejtf|9Bca k-r#q>FV~@;|5tzk098W8_>KgOo&W#<07*qoM6N<$f@amvhX4Qo literal 0 HcmV?d00001 diff --git a/example/icons/basic_pencil_ruler.png b/example/icons/basic_pencil_ruler.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5d2e883c353c8c8fe15a6da80449f5c6945864 GIT binary patch literal 627 zcmV-(0*w8MP)QZotR>)A;>Xg}Z~hD+#G>P~ZhPwZS{* z`jl@m#=#LM?|n!g5BSPb2Stj25K;pjRUWSg*Nt3t5Ve!Ofve8lnfylyRjRb({)= z5j#{1rodCeNZ176K#&?8-U3h}NRAG>07M9fL%k)!ApjA=1Q96fs0Khd5(0G{)c`o7 zLra7#0E-CO0M-zS04yOC16V;o0a!pl187HBzY+SEts{^DXhk5I0-6!X0kk2o0BAyB z1JHs{d@F1Pp%kFEg5XNRU!k-}1Pp))gwiPxtsr0ldhG~UfS?@#1wasjnj@eAv?GuJ zXhc9g4paW0*Z^UG@?YctN)YZ)wj-SaS`fyLL%BN}fMkSm=tG%-6+k$`ybiDe2tXKM z&Ue$Iw_XR>0R$i{^91sk)`2PjEf5y-y@QSpZ$Qc)hikkdBYyw41yT<{0>TDJohcv~ zp+0~lgk}Iz5SjuASs2>_v_=pC&=LXlILw@D-7JX(sDj|lgq4 literal 0 HcmV?d00001 diff --git a/example/icons/basic_pencil_ruler_pen .png b/example/icons/basic_pencil_ruler_pen .png new file mode 100644 index 0000000000000000000000000000000000000000..ab2b545aa60fac0e2f8ce7414261341aa33a4cee GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnmPZ!6Kid%1H^YS$-@U$j= zlzW%)PVHWb^{jaKxNf_x%uBi1U50~IpkSq$>p$Gyubb~+ka)koCuAEz5fguY;5-4 z-yPKdaRJL_?ilThNe7Pn)(`)>ETmu?)3#e1k8NaFVKn3Gmf9C;rE^zjoBf(`|AL#W zX7u0VzbZepoueRULzKqSrYj6P_6svJZ1vzem&!1~@k7Q0Pf?cVUk#fQ zrha~}9d=A2iNCb?^r{Bimrjhp@Ys~>!1gk1z!AVLklpE0VYwB2A*^<_(M;%I`ZEST@Jp~d*%D=lHsovcoAB?Z^4 z*-f?mvX|wq@LaKYdavl`pyD;BFKx`*{QHiWzSMz>-zAqYM(9j?{r7b2boE=eSvTL$ z6cT2>7V_Y6ts&Qpl@1&C>gx#Sn9s{B2of;}YWjTMelR}A czMqMQVNwdS@V!&LSs;gay85}Sb4q9e02yr7kpKVy literal 0 HcmV?d00001 diff --git a/example/icons/basic_photo.png b/example/icons/basic_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..a94e48713ce28073dacd02bfaf64bfdbaa854527 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|Vo6PZ!6Kid%1HH})P@;Bh_d zJAro-)8dqto=bv8hk6fiNHz*y;@!l^I(MQ#c`sj=r{?`hQ@3&Q?Xft<7Ale4Ht%Wn zix{9?P|)DtBCz=C-Bq3;*VF#6@CSq~?Dsz4AV~+u^rvc zSrvY>{HCKa1e|hI6 zT^W^wJ6T_vyjJoEWiYX*H!clR3Vyk|>Ge}}h7Wn`g>F@F?8;)K#3N z*D_tuXW3-A>0+GLokJ!aE*vWjx)$y`{qWW4M_XPP3Qy3S@yg_A=lfZwAKeglP~!mk xz}EZZ+rkQm$#M<$zKR@7(C`LPUo`m{*%*#nCN}rAJOrf)22WQ%mvv4FO#m=E;)wtN literal 0 HcmV?d00001 diff --git a/example/icons/basic_picture.png b/example/icons/basic_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2eb21f1eb2e6eb684583924510525eeb8ebbae GIT binary patch literal 711 zcmV;&0yzDNP)R{BtB*X!O>!U|s2!Vv8A-s3T zdYAC`zP&#>R!J!jCCl5Pa3KH$fB+Bx0zd!=K)F(>CJ6umP(P%sic-9)B*g#%KmhUv zp!}Gr##IyAr=baW#zN_pq3t9q)`R%p%*m{cr z028z~BbJ0PW1r~(C^=da|Ckss7Xnxm+cW@B_@TVRR3|~O0-o2WUj_g+c(o>MJ^i8~ zKpHc1>$uWv1^`m38&ZBM1msd;4DzY~P^9ld%`+4N%x^Y%gmJc;on8h&o1vw=R^oGp z<@6w+Lg#|sop7LC6@Vknu>|h(G>_%?L+Ab3dzb_O(@#{$JV8KyUk6%YbcToqkkbD~ zAUym&vK)@e5WxV@29reKfHf{N#KWsM zGlUlaMA>eOhnQ4ZY7hXL;F^>2F&V-Mz;~d@{4Ynn_|*e|lt1RId`O0H0az@}Z2&?q zL%0B}66s$E;^eY+`;O3;>L_-8Ek+0UbJ2H%6odv2TkpkQl2Q{1g8@Qkz)fHnK2-pN4 z5^@xu5%=WG`}!lS@B3!U?WNgxBLD<|01$vpx1CQAW2~nN*m4D!rc4v7C2>>LvYkLY={M}Tqo zq5vLE-qQ1Ej{uhU=A-+`0HjLZf)L~pRNJfmX_+4l@~{K|nbO*Zcm!mAaN@QZ61f2+ zP2SfdpmH}cx&rnH43^h(?h4?UR_1|6aFn}-a2z@Qj8CU57el!v%kl_kN4fKW(`od_ zD)yeB<1+eRxqFUrK3KPh3qR^b|nxY`>uP;UE^Y&3q1HtK`X>Z%u7;L000OFklNQx0sshFA-+QL z*~PwHMK4HH(ir`5lHL&_00e*l5Pfg&P3gkad z<2^M=Π_n>gWro8Qbd+gmQo;B-Z{JI(ar&#u(o%ct1Z9{k?!l5P-qDlxU|>`#fGUInW{JNFu~ zGx+v=vR`>$V@j0v)$fxJ+}^@@z4+3z`#lMCnVj=toD8Kq%6J^s@JL-U zyj{-vL2jK{rndVnm7_+tKbNoc-hOz?S=mGDHa*BySs!)#mf`N=Cy|-mv2VbK|VriLJH{^KL)PW>@l3_j~)S?+DAUbH6>_Omhxw zJovm?qbs?vM&jV|jlOjh ziaDjF=R)3uK%-N=1;gTl<8}OYWK-*|GLd?3zB+@V*6>lQkIEOEQ=!h9BehP3x1ezZ~)0xaj$E3qGg) zIVtjnYYVS_ihFw_^LlJTs_fnOg30e2&nq%iM054tlx=8yXQ*n+YPX_6nc>6oot8;& zWPZqG3HvZ!SjfcU^GYTmD6T*FxOpsNnUQU6jmi#Nru(t_jdlxJ+tz*vUIbV!n@4kKOCz)-T-9NMFmdKHk`-UdW4l15(J6st&re?l;8p^_;s=O)i@AiYw z9M0>W&fgoK^~nCogL?ZLd+rpSV{|@bZ8!bw&R>aq4f_-sYJC}YDKX6DPS~t;?;&VfHL^1=TmJqP$t>rXecwK*wx%-OcN04eyS3j3^P6Ndj6GYnK>Md3Y YhR=K^jZ%MB*n-47UHx3vIVCg!0E<>+rvLx| literal 0 HcmV?d00001 diff --git a/example/icons/basic_postcard_multiple.png b/example/icons/basic_postcard_multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..f800b757e7a81564071b68497e871b9fa93f996b GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|*!f7srr_TW@YV@*OhZak(h< z^eNP}# zu4Z!-2NOesfR1P#PldTc@kvR;>5MbI`*;{0JlK7}C$?JKV$qj-qG<;tzyII6{Oilw z{dHk%A*=TR<(CNTc@?#`+-j{Pd$1i#e&T^M%z{n-bDF|qblEbRW+?z|d=Rbh{Yw=u zvzATD`s*By3@HxxcH1#C{77Oo`XAK7xOdu%{9-2oh}#%eoeOSYWH>U#dAcRnmX{zw MPgg&ebxsLQ0E;AYf9MS+2V?SV!;rkP0w5O||%Q~loCII*0Zb1M5 literal 0 HcmV?d00001 diff --git a/example/icons/basic_question.png b/example/icons/basic_question.png new file mode 100644 index 0000000000000000000000000000000000000000..a820e1388a5566773b7c586de9e130309b8eba0f GIT binary patch literal 1010 zcmV|2YGn=lXs8VDU6S3&6DR01Wa1eZVwE`fAF2Z0JgDhTd?R6wN5u5Zx+$ANx6 zq#2Fu8C%--w7c5XCmzQ!GFjp{&P2mR#a5P=g`c<3Hlp^j74r2)Q#yv1K!wBFU&^)utJefFl)DTM9Lj zD#2YP2o3!+=xb2MkYlEY`#&gLsR$-#nI9EuWjqdJP@+rg1b~Wm3UFo$_<~kYBBU(2 z6#~G{=?rjNz!x-vYT(5v0gA2HI&4q_2`R{O_YK+!fI+$=Oj{u0qL@Ugg#ZP-RJX!6 z@I=;vn8YR$wscCt=e~kh9Q2)pLj(|;e+cjkBviWyP;9Dr6!3~UeCV^*81&ZR?R1R! zX9z&MuOAgW!BVgJgQf5m?LO6PmnBJc)!d@s7XX1OE8raOO3aSt|IMXyJnp3}3wIR_Nbo(Ia7xATY z1e7{wANuU~EThUQ#0+RbIY&UR)Apgy@&BI7uK!;5BsUvP5lm3 zD-+lmE1<0+Pl^z(gO5*|yRIl^BmlRoYhMU}O;Qu3RxrPLf6pQ~zBQxU>zgF@gfP*1 zH2WDi!HBdv3u0vnXaFt|zJQl%`c2f|V#ZAPCB!<>fX)N(4CMGO>R;lVb(fB60G7d} z!xL2oVn1Q#Zx8^PIv1Q^eHR{Dc6Ln34ja?5K#qdrxmy8t~yG-@xf_E5>FH{LU+GCj^MWAsPDPVkvYOdgINo z=LFR7Mv{@Q4jwVyB=$r}4~r8hKtVAl%5ua{Kmea$Hn}ZsV!K@TwsFibg|8BX% gpZ_Po0Qe2OvC#OV literal 0 HcmV?d00001 diff --git a/example/icons/basic_rss.png b/example/icons/basic_rss.png new file mode 100644 index 0000000000000000000000000000000000000000..835efb2b3ea28863af820cd0b1e67188e50f1df0 GIT binary patch literal 1252 zcmVv(fr$xryq8!g`X&Hyz^EM{%x7^k z060J>1cZqg<;?)#EDgLYnwtRt0a1aF!rrhNN%|;3EODhPgV$1f`n)DO{6HE)tfC)0 zp2+-xDFCL8O<>>+BRW^Tg$D@uxFmz`-x>A`TzAm(t3XdEKtEVz`KaftcO!%Vj2bR- zTJVrQhG#eg*~j9AwMeX407HhlFaT}m8)JZwg3*`cuLzt|#R4I9j8~3Flv{(ah1lsF zk7y%+&|j1gf(;butmlde!W;s^o^k+IMu>>q0B8#U zN5+=Ffgm(!DU?Y_5CEwcz>r+da6lM{W2Ns>NF{$ej#}f!d5A1_+;NjI2p2Jg<^T>c z){N|N+EfPsS4<(&7llaWyQE-QP9L2!We(5>#(BH0M~3&js|~i0zT7xpB2sJ#UnggA#p3j)Z~szQhx=baGe z>((QY3|~cqe5Jyx5zszC{b27o&aBZ#_}X}$&dz=G>~DYK7pqr^v9_pQdqGL;Ul2sm zkSZN+86i$mlAa}Y_jo8%%5-=nvUN>VdL1!@{`Z(v00^R67sUQYV)U>cCRQQA1#*+9 z%)asHub|4rm)vaa(7op+*}A4GUn+^wHfU3(R31#h-$F`LIylxWw*EMJoZ$K^0sw{U zc7sPzl;rLY5Xnjqc|iK=2fSo*REQ)|A<|E6Uv+0wM3w2!pS67hl#QEBFoxPFPu2Fl z^PGG1of{(3OOX_M@@IElow7B_%pNIZH4&a_>l->zC{*Mm#Mzvz8NU_G&$vf->xQzs zWUnJfr1a=hi3x<$5#=WyOKB6TOY~g=q@|goHA8uO!}fh(@W7K(fa%B9E4AE`4CS@A z!1`cy*ip-1EgXRDDJ86|aeHeyyxQjLlJ@4y!{`)n!Y~lEPyCl|P&UX28I4gG0X9fB2otm$)J#BQ$(E2Q@iPP|@8XlJNJ+5n zp5MK*kJ#(=Y7n#5VlOVl#<(ofP@eQfSCc!94Rmm0s!p>C#%3sAMkU0kBSAMCH9-E1d^G+gbCq0PYzEFdu`9j>S0uG%=uo%b=DLh{PlRyd1^iZ1mW}{-7uq zz^o98askW=p(q!?tPqOwU0`-Mcvl73z6UI|v=WF}xouFSwCn{+8X~K(3P1&*0#E^9 zRP<&XN3ZN*9FcDVq2utG n3P1(m#x}r~vob)l{RuDtz8zosp)U*L00000NkvXXu0mjf@VNxc literal 0 HcmV?d00001 diff --git a/example/icons/basic_server2.png b/example/icons/basic_server2.png new file mode 100644 index 0000000000000000000000000000000000000000..49ad1c40e0e936344577530b88ed9c293eccbe8a GIT binary patch literal 575 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|Vn3PZ!6Kid%1H_vSVm2(&h` z9%4&vzQlQo?X8C7O63c@FIY;=7f2sq`Eo~Yl51|VIv?Zjxg}mHAI{fG%&(mEIdj&g z3Dcfe`r4~j9(EP|opZj=w^rkSby=qDPlv~1j>oEb8MwARbjarWWO)19K8c=|i-9_K zeHjA|d^)*r(|(D(-(mA+d}(C2n7zP`y}d4LX~w+JsgL;EUcG;^_RH3~I$x%UVz~pe z_tZYLoj(7mPeG>klFx6fKTA}d{gG0co146}IY@ZN1HaX4nadc0KHg|yb9u?y&@66e zQqGoancd3Qw6<~Qr-J^MvOi2EpSADUlNZC1sW@q>-xL3ZLFe}N1b9KLjtF4EE z-cLE2{y#}eMyqtr`~F{Fr0?1MTzb$u=+rs!gD>@CzPkqS+O(NeNH#>6IjJ#h(=qs{ zJ?Z!c(Q8MO|B4xeTD&@b!IweiWpRZugSB7#t%@$4LS|qLfI-Cl8#1;00rAGn3)mg_ z8{`;l8LAk*FuY*Az`Q{e6o()H;^CHV=wR#-e8sq!zroDOcEQ(+%$Mv;rvBNuGlb7i kt-eI8eR;6G-GAi+4BOd$7H7S5jt80O>FVdQ&MBb@03@;I3jhEB literal 0 HcmV?d00001 diff --git a/example/icons/basic_server_cloud.png b/example/icons/basic_server_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..46b616ae152124a64cfc33ac18dffe4aa61d0e04 GIT binary patch literal 864 zcmV-m1E2hfP){`)n<1h@3h5k1iTr$DA8)$>`ZP0Ge4KBAqM#u=x2JHlOCTK=bC-6}y1qixC zq9r*n6$v05AhJw8k&hJZW*o;AWi(Ago4Akxb~TiFf@u7D#cWV@7R2>hyuNE>mn>RG zN9U{nCnjM088Z1| zlm)*W-IGFq69G;pLJ9zqF#s~B2Pj4WsGJ^P;^>VL0B_V{XbJ!vJs=1`Fb(ETfw0~N zF0UA$KP}eQyVk>V4mVAO8h~qpO6nhjZyr@(>~KAwob}FSc-DaHN#8tiD*}Wa(L4Lc zoGL+nTPL_DkiX~&KR`ZUzPt$$5_fEuap#{s^R%)(&eI00Gdy#b;sMD7h%s+={>2yL z@Sg(d;O7bC5sjFY2&o~EQUnG#R$e;<8SZ9HlB14SvR68!72CIdA#c%ULxN-Z#@BXk#|0#E^{ z08{`tGI|TrYi393Dc=N=j>Aho3ZtRAwtsZ~(jQmION~#TT^v1NhsNvoep{6HRpj>s z96i7&yfyC~@gs~+pWY>Tz}=JJ5w8cm^SJv5=f6sV#fAVHD4pFt`iw8i15(Mel3*=` qD*zRM3V<~p2qkCrfRe{Q0R{m6%K@gUQMTCt0000{`)rgD?yQU;dkJ&`c0U@CX^9nVi!fTF8>M_s@&wp(QE zJ0BbvBRxw`vY>3+wxG1KENKH5(mK6L$~Zw(ep@hWRG9^Fz6y^wKz7L;WHe+B3V>p; z_$mef+MF5&05pcoK>&~p0gy2)fRhW5ETE)>K^+3Ap=ALPfGn>dOs2`?!6*to4B5S0 zfD-{a6Cniv$ru0`(gIWrUyYPvtB@9;{itSS0W~!lasfaw0)U(iTEk$>5V(Z7g=G>= zBKLw{yBj*pa)B*F^LHXbLG=HcApj&IqyoU%0;&)$&@cpmlnqWsfnJjG+>MKp2t|wn zp!lb4eqouQzzNv7Kwsvm`k)~A|IKqHPIHQ?@C-cbiG#I1NC80kDBm59z{oBj;8qz{z2345j1C8=MP{+uptQTLk;qneRT} zT=m!(iUp_uWF&2tFtGA60Qo8(3;3}*zI|wQ^*chZyo(-V4^{Y}3MI%02(57*RC#=- z!nrFK7l@Jp4!DDEA22*qF50SyrPTUQw=;hL-uZvJB%42t4D{eqWXBW9awjs-;D z27|&~KVXlUYEN#9Z2)lG20LYggS$a)pTc~0og%S1pmTjtBvuD>CPI-|9nhHwMdAc# zB|?!{9nd)&{1pYb{SP=J|0t;ikyW$}6{%Em0hf~4Dq0301CRm80B~gVs_Sq1Co4R! zX3aI02rV@XqN0%7KN+{+=SV24H7;9Xjuvo2<>9;E4*LzSoz`FhTHswL;|E@Q=??Ex za;Ibgt0%!L9xt%+xcV34UM9h0T>ur7#%f=uluyb6e91GDU`~ZI02zP`K(B2GDQC8T dl-rj80|37{XF1NlFLeL_002ovPDHLkV1h2UKdJx# literal 0 HcmV?d00001 diff --git a/example/icons/basic_server_upload.png b/example/icons/basic_server_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a10a105a972b004b1ceecefbdca17c21536776 GIT binary patch literal 749 zcmV{`)ngD?<*uXN4CLX3q-e;4eS80zXS|6h{-*oUGQ%CzG?}? zB!IJp5CNc!7=Y3z1C-}=TJ-J0&3C4W3!xUlsn%PqyJ<9CebL5_H9T&|p9_!UmppFm z>WeVIYZl0}twDV?ZtKsrM<(FeAb@7~)6M(L+YIo^1k`VoN=<;^3j=_{Hweaf<(ehn zMF1_@x9pTMSg086*5h)3gpk1XUxx}lAP6<00~AsK(clAtpnL$ZHVb@5gP#E5Eoe4~ zDCtsB;y2`A&j%@#0LF4Y zNW#kC*+NLd%HY{$F~R@|OQ4v2CisYRz%Bd-2|5Q{bUsLe1rQQK5-fm_5V{zk1OT9x zFkp2VjF|C6H>6FL#V!COG2jGmgRwmdTeB6?ADsuWXfrw1TCq(o0Z9Vr6hith0erBH z3Lyy>K&KFr@GQ`o4gT5%VtXHON$!D`!@IBpijr!QQ$K-j=9I)SGT_X?>*sz)Za2Pn-U9;$hmXCFpM3A7 zzkE#jEr|iU7r`rED?Rf(`<3-w5<#&`fCDV8*}hH%FNy(c#WRUuN`(^u34jEEVFw`P fObn20-vSH(?2!V*D+Ir#00000NkvXXu0mjfhqyX1 literal 0 HcmV?d00001 diff --git a/example/icons/basic_settings.png b/example/icons/basic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..88f2267f9d6f86336a908bd37db7f11e0430bffc GIT binary patch literal 989 zcmV<310wv1P)zc!91@ z+-3nbuG{ErqYH!bt&b!CpaDJNgTp4-%))59_td#>)rkdQ60RKgv00QvcJH-o7=#(> zl`H_Dq1F(WZ}^LmVip)9+XeWCDZ0IY5cK2_J<%d3p8l1mj_y;v!=X;Q0k|9@68|8! zf3IT$)0?-z8@@`{T@C@j4$-nmVgV2kC9Dtt(35Zq00nY(TKI#(1U3OUAlx8iE~u|f zGyvofzXWsmflvSz2zc3EqNp;)0?-Z-PdQQudjMD<^f)XU5o3q~V9?A1_78c)#%C7* z1A@zGcD5*X2tYvR4@1EJPuQ=?7gjm8uDcCXaS z4+LiMUC4~$&g3{DaEXWK_P&i=5&%93)Z$^GR>7#7>w-FJGsFbpdPKYnpxd&Ue9BmN8@AWD4dC?HOJ%5{K9@u^mVV#TM} z3y2oa1z?C2|4)U?WZ{`ud`BSOIRkVWP9y*V@pzf+O1+Vq2etU%pQ>CoZ`(jw_5pNR zXkzg-g~PM_@M5OlX|vGM#3Kj~?o_-;@fHAVsrZ!Q%@ZG8Y)XwR75|FjDItgwPmopK z|9gZa@n=8~Cq6XXQA5Gy_v1kvJCKoBpU8^TM7=Y-%p1|v#57X;UFIFaHxAlOb` zx01zELkK>gC`mje1U&txfJPfb{QWHPWDt<&zf&)aq(N{2n6~nHQpLyS5b)a>xg(1s zT6~bVcb``IcKW&mJMS%r62yw%7-fGL+&F=u-_)w4i}yfqnntFl0lbtrfZzcttMj$v zE4~qGy!iPGF8u}{H$T;T=a;7q2p609w+CQAxY)#h1c0s2e*p#n$cbyNf+F;x00000 LNkvXXu0mjfEhoOb literal 0 HcmV?d00001 diff --git a/example/icons/basic_share.png b/example/icons/basic_share.png new file mode 100644 index 0000000000000000000000000000000000000000..e2257b40541136faa27da14331bb3ba04b5267eb GIT binary patch literal 1012 zcmV{>Ch(=ZT?DQWNxFgFkfU`Rnp;UoA6xdA?ckB}pX;Q~%cg>Ufff*DGuV4w?9 zX7$;>W9LhU1n8|i7a+I_3+a=GkMys|74>Q*Vy_xI%Ilafx!QH`&=sYnBm zlBlax((A5Uihj48)tAt~b0rcDY}7LhfE4Jx0-hb=9rM0!nGC zI@&I^!Rr|n9y$cFh9@AT0DxRF_!$sn5&*zjHs&h==o3g^nF0XD+t&eg8lTYX?-|!P z0QUKBO3vWr$3S{>0QQxVw=WpSIu+bysKG?(R6YK;6$8Z3U49LuubXMF2DGIYRqJhi z+1fS-06O23&Q~PTG6xe{;?Ul4+1k7SAPIw&hbCLvFD_e~GXP-r{anJ}P`>`D%7Ru+yOzvj|*A0Xi0N@ZfPW6pH0t^7=;@e8Ap#1d!0000v zIN%#|@S?1vc_DL-jkM;KwogCel57et{9inMy2;tkHh-#vyr%ytJwN~ThR;v-eR=&; z!g62AvTGl`^A}uw@;|6#%W=1l=N~EKF(%P zI=Y^%Lu@~nLQ;*P!<8RO4JSU%-?uc^fY~NXZ1&#r#-;c58CTqzUd=wEir?~x5ev|j pq=CJ@A9Fw6%Kq%7-F0zGu8oob7UUp^5Du{4L#fYU{VYR=a&Wnsh_o#% zZZKQHo5kY3(D&AoP^pDL&aDPH@iLbg8Lymw+`qf~-Jt+GyN@?lUWw|Sl&s3d?|E|R zfvKC+nB^z)_;}6T#b|xXSoVb#Cv%3{lN{^6bLM*bWPH15wr<(nYTg}1vk&ktkmGKe z8E7ufcpxjjc-DbBNg3%T%jdt>qY^p9p{es+tBK8ldjr^@oJumLN`1MNq z@%*z5=2O^zUp+bJ_m%74V&6Q?YRGqdG3CTPhVx7h&;OhKPUsVV^OVc|MYk>D=g$3F ub~8%h&&~Bk`)?ONl3)q`_4>0vBOAl@V&C5Rsi(?8uJd&Db6Mw<&;$T}r_lZY literal 0 HcmV?d00001 diff --git a/example/icons/basic_sheet_pencil.png b/example/icons/basic_sheet_pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..5813dbb448a28402bf052dc51cd2e342b4a9ca90 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R4=r;B4q#jQ898+i{Y2)G`! zXpnxvX4SO#itn8xp)!u<7kKY5^gqdwVky3QY4vsgqK$%HJCCc^OuE)CFz4u_z2d6R z()k;lx(`fE@)!QFg0tb*_xZ0(8ADnxNIR^2$nj|nlOtEc!aX6$pQ5{rc{7$8GUPH; z=W?uKi1@ZjV2kJiK1bOGGnT8d3bktLwP_soZ~6B2UJzm6;dJCWVAvp_Tc{WJ^^(Td z$*(^<*R~WqEc;ll`f~eoV<+pM!OR9MESYh^1x-npU6SuaZaGw2#+}b};KIIt^UpKA zVg&{O!?W0FTeq#bbz4TnU>ei1H~b4gfr83@8w+Oy2HWR`y`d8w!Pn-`YJEx`V7_yYEewdvIk~!1!<(+7kPU}S~xCP=EwTr znBP~fFDu<0COTo2!giG{_H$&OZn+WI=$&4#XZIjt$F|=eOB`9(S^r-2ctfD*mZzEr Y7)%&jL(ixMUI)3s)78&qol`;+0DyeE_W%F@ literal 0 HcmV?d00001 diff --git a/example/icons/basic_sheet_txt .png b/example/icons/basic_sheet_txt .png new file mode 100644 index 0000000000000000000000000000000000000000..d3a2b5a01be00a51502f6f70f657a952ff9d1b8f GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|O(Ar;B4q#jQ8j5Aq%|;AwrR z@`@qn5LeGRjuK%rj(r8rH!@!>EBx=#!QAn!w)ar+x~+>3}PpUS|efvnH&Uf;fMtw{7k%TO7x5|9pRnt$uv_R}CaPgg&ebxsLQ07eFfLI3~& literal 0 HcmV?d00001 diff --git a/example/icons/basic_signs.png b/example/icons/basic_signs.png new file mode 100644 index 0000000000000000000000000000000000000000..e9557a2fceedbeaabc9f8d6bc3b0f164027ed553 GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnmPZ!6Kid%1HJ6p|bKePW^6cjd6%*Fa5sf-2 zw5xeRMq{1OpIsGxYkyp+{5&s5z5ib3;aZ#ZetSBEvYPx?vhO*nP%-iMyYRJa^F8$! z$QwLoEOF}9Se~oM+82G6*~RQvklFmKE5@rbMfje}A5u(S6QRm>W|i8~-sYpLG#4-O zUZ(TfJ!JAJ2?5t%kyl%aB9s|k&NLT#yEDwrQ*6Uy#%}8svo;@?#JB30&W8Z@Q00c* zTOF=A>K={0zM54$8^rsqQ>n`Z7E^)#~-X(l){0Z2jjLukQYRuW$Xl*Eh^xh`y+3^JFM& t4>|5cLoFEX^d-)&Jf$6|h5K6EFORxk=umrCIJBU|7OaBeas9xGv>>(WP6l6&ue+;;Ix(V7-h}QkQM>3>LUWGepgqnmq`#HOO00DxWYt2)UiG-0kRab_Gncnn^gsAn9zNy zkK$AWDDfsB_zit<&i&OmYY{Ne#J! zFT3CiJl6LnpkZx@T_|=X0F0eLI$A~8Rx4x|#Jyu4W+HnL?*sf4a-X(Ty_-omC3v4C zoEE$<5?lv56nFy(g;xT|0EYs9?;LGAA7XBGo_40e3jyS%A z@8PEpTOZ|)bu(~Tt^Y3_0fO$4p;q5zg#rr2HDb(~V`5J7&xDWIQjF%TdE62NtyAyfFP4LFG{0)j}N$tz^? zse6qA5pqoghyVnPTYkZ7H+Ulf+0#<_h0J%k4A7{|ygN@uCW*~t1%rzq8Hn&8E zrhAi^$s{-eIiWTJ5zyS5C926%?QV??7Mdhx=3sbm>ReCU?xRNKn1(drA`Nh_u#IWD zSnrukssk_u0bLXJKSXJ52te(G#h3;B*J;`_pBW-00GqSRj~%w^NbLvO3OkLV;u;C$ zj$_VnkCp0tattsu@Vs6F>xz``r0EOTj()?rx<2n?xBE=4VRyCy!{HMf29L|SF$IM3 z+&;b8Ayl=BdriJ6*o@zWta~^_Dvj?^M0y#@jG?gz4hf|)zjeMxKmu$sL+p{n?wS-;fWxsjwCPFP@FmjT&ohfW zUg9(0QRWsQRgJs6;%eR=gQn;OHG;l;{UPI(4<8!)E5HDF)3`|+YMcT90000{^?1ly)YtDQR-^BSZduv8>?Zct=&ekk%!ZF-a1(_fL&a#caoQnx(Y))@x0I^n6W z$*kB9>jE>DyxaG#bh6L?swSoM@|*9zOS#K0SbtY0;MzM;4dZzUkJO%gU!EU+U}^G# zh{pyAbCxro{2Q>K<_Syk^mh5sy4{Si=!tNxZXoZ{<0;ooG>&zQFr}?Ip`QRm zD|r9-f$OtkOd9SiPki$9d9v&;J^T2899d6BAK8v1wg(HD{+l!`R7v`EjR@!P_yOq}btw6OV;M4APEjJ$=)b~ePW)WC?_2dGiMt7T7oD~)h;R<#P*1c+vqpmDQ~MS>xg!Mj17S@9*vK2KLamvv4FO#spS&0+um literal 0 HcmV?d00001 diff --git a/example/icons/basic_spread_text.png b/example/icons/basic_spread_text.png new file mode 100644 index 0000000000000000000000000000000000000000..4e541306c8e672e06dfb7eb769aed75ba141ada8 GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|Vn+PZ!6Kid%1HU(7vZAkg-> z>-#q0DZB~I+a^!Wn~=vKeSqa*Q_ZA}8iq$civEeTl8ig^^YFj-^&fWbdp~>Daqr-t zK#R2G{hUHSgeU1={Pli$q|2t-7ra*ApW3&5o_$1%&A_bAW`W)u)`0Xq2e;l2u&KXS z#k5afXUmiy9udzUH0C@OaJbzm9rMfPk;JEJ--x8=#V;4x7ZkHO2$iyVzIYiqy-mOR z)nvvqwLH4(;=>q%TTeJObTdhKANsW2(1~G1jgHW}POgxMZ6R~iuK(mIkMu6m*c8* zF>Wu`C0D#=a(LAXmf8|BimaJ7%F{IsDUf<+FA#%=Hu7xy50l`s*cR|qmUsr7Gg7@5Fhm^Yj4(k;h^TdkaOU##A|xc*&b#-s4{OE=~{c*@718?tr- zM_pB)+=I`u_MQ)d{pLzIyf_}P<8Q^f^BdnD=k)yifh!?Xags}y z7NBcBYTQtdS>SW?(W5O9&nIs@RQB=0)Za>To~Ip1>`gcRvVN}LLJq6Y0}~9)?ALrg z%A#yy;VXSajlpNj>Sfn9OD65DUzi6cdXEPKV$+j9QbpB$!}yM<+hmcOsR8QtXg<|b!Y*`wlpnF-csxPH^?rsTKb7RfI8WTUa zSK=I()-6sd>HGCUoMW5WmUD+V7#SFz*!*LWUzopr0LC5z Au>b%7 literal 0 HcmV?d00001 diff --git a/example/icons/basic_star.png b/example/icons/basic_star.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4a0f77136821d114e8187c891e7281430b6aca GIT binary patch literal 877 zcmV-z1CsoSP)7V^6YRg21Ju?G?DJNHlmr0(IUN2< z$)FU*{|ZS=2Bk3m9V9UsuuDMIv_}004nHCPg8W03=Qec$Oif>vu_v8C1|k$lI$&#^ z+e$frRRRwFOZDyxoL{KyTS5k`#|5sb*JTqd?~OO)3}V!Rj4QM$?8@Syh0=LcI0 zqesh`vGI09(`9a7K121x0>(#G6d77Mgg8_O;ylbK71I&7W2ro%s$$$la9|NB`h*Acm_zxgoA>N-X12X($YBW?57&0Ki zKStBB4osB+D*mAeM@EebQwC`Gry!pqiBuV&;E#cPVi=8W%u zki;fd1{mvhL_U~4S=!T34u{?0=K+jA&6qcM=gL}JJc}A4CoEc8bJx13ByJ=Uu<*}v zjesKwZy9*66fKIvwE8XgpBqDFm>?o(3cMCr{s}MuBZ~1366`uB00000NkvXXu0mjf DRu^_O literal 0 HcmV?d00001 diff --git a/example/icons/basic_tablet.png b/example/icons/basic_tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..046ad936b9c5654bd54569aacd206439f02147fa GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+h#7srr_TW@YVavfF>U~tf_ zZLoiH{nGSX9>E-znp-=MMn+6Jtn_k+Ah+SOInKUEBwll|cYZBDI%`+-44ZfRC+*dW zvJPeMF>_8YpTQ?lT6&FfaoK_WZ`n&4Y8&`~<`W4nx9PiXSjg^v*xL9h3aCXZz`;mv8uGg=>9Rl#Y%P@HA?)y?WcEXXOIu6{1-oD!M|2X*+b|5ZJ%Ki;M$iV;2GIu52pNGRXatU+Y@lqQZoqD!4P3GZ>JXG9Kz$td zLf!G`v-klXzT)S4zuzxsKG*BDwpDA3uif)A()|3fR@!a91Z|XGH*p19AyvA%*XgUDF)sR z(6-*8nX^oS;D5oV>uz!9}1)1PO!(t%pDW?6H@&_rVmJ~yT`QZ!V{~!SY09#`1 zLLPkK)QhNnpXt;z$tkek&^b<1N(XAU&`1*V`V-^u#FB^hdP5GNg<*H#>>S!np{PKm z?+0oVQZz#UPz4yDQ7%xCwmt`#b3c2Lots!&7~hXsg#b_j=__ucNLbW4scj&cGK_Sw zV3a@$R0sf*vL%Uz1d@aA1M{go-OwJ%64^Ux z(0*O$@%w#aWXH(8fAMWC0dr!LW=7+^K;O_alDX+K5!&hViC0dY4C8brCW7eP)mnj_ zw~SdfDMv`mmW=?S_W}Uh%nVS(z+SqqD+>3&ze6f~>ifiI>qF?eUB3Bq7yz)n9oyf( zBph1Iajtzc=GqQ`fPt7t{l$1(?~(fqx_Tz^G~`4H1*nk%cteB481M%XVgSudNYYTh zCP1XbzmmSO&>K4>Q8DjV0B?a#xeR(Kb&=Ta-oN{{DG=bDAMYLdhMrECo6HPAmy!yX zkD>4WIeg%P$nd}g5q;Q#NLdmqi=t&&yljjF!pAdhjSVMkjn!py^ozI0r!U+dugU?5 zazv&ak}AjK%0bC;RJI(JF307|g^6-yrd*mT*XEA0!Tlk-JTl+O!?{Z;CjRW(hKsS!b)WzJ zw$e=I-E98aR85cg+hx%%vrUrc^jIJ5Su45NMKDIocC~ltS;q|hgj>vAr*F1znQl|u ztGi^~v^z`Jr=Mu_Hok9H{7;{={KAbO!5lV)aIPCJ>mBT`ybLjA725Z|dk*`iHx0Kw ya=T8*X9NZTSwPF}!v4di|K6sur}S-SU}pGe^jLXf#ko5m!#rL6T-G@yGywpOVUGO( literal 0 HcmV?d00001 diff --git a/example/icons/basic_todo_pen .png b/example/icons/basic_todo_pen .png new file mode 100644 index 0000000000000000000000000000000000000000..ef494eeea4b68d5c4da636f1a77fe077a9c21dfd GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnUPZ!6Kid%1H{mwmPAkdzB z5`B_s0-ko_mVdl))foE>l^A-3_+!);zlH?8|C}xC!&WoR4ME=iVAx z?A0CS;POoB`ZDjc`@~llZ=BU(HkoV2XYGXz!3TNbyw)+Fk78NPv|z4C)A<)GfB)}c zozMPGdrwVVr2Vt$rF&9%BW{nvI) zHQ%$#e*TL7rPK8mp3h!Wy6<{pb$I#uwPFo2FC=E%VzgP|;I#5t@J-Ho>j&k*b}?7C z&;7mZ@5gt+YnhgCwJme`$|ax`VDvlMlD($)&;2$g8&M7W-`BnweQ*o;u%cmWq~_6o aTm}q1YJQCo5j)yI4)k>Ob6Mw<&;$UpLd@O( literal 0 HcmV?d00001 diff --git a/example/icons/basic_todo_pencil.png b/example/icons/basic_todo_pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..506e5d6f3c429aa7694c42fddf0c2ed701a7b333 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R5Xr;B4q#jQ899_Aia5O7mG zRbSp*#?n6_@D8t)li5q2n+l7UNLvW+2$&n{@qE$bKd< znr+`7-MOUNdd*q^tp#EXn-*`rdo@?)B3J&IP^Jm3_D?Rl&RA7k92(BJx4LiJ^S>W` zrJKGVOIWAU^riU5b-y0R$;s;P3)Hr&x$_Cm;i_Go9oj2+i^V59Am;qO6rE3J|E`%} zrCWI_=Dl*8_vU+Mh5!8pwO6e7WLeEPVHN8$5BCM~ugbJ;F$tdkuT!Vs$vUM^yF=kW z6VUr$5M#e6rmO9G>_SG*(wmZpX9O}@mOVNpCMC!Mk$=Ek&=kVpCqN{>@8FZRHZBbb ac}6w{>0oK2cp?2rkU^fVelF{r5}E+HZI*=q literal 0 HcmV?d00001 diff --git a/example/icons/basic_todolist_pen.png b/example/icons/basic_todolist_pen.png new file mode 100644 index 0000000000000000000000000000000000000000..05684bbc88d4823fc1b7ec1a3e9c23b56ba75ee6 GIT binary patch literal 549 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|VnGPZ!6Kid%1Hz4bj}z|%Il z>;DGEo&d9iDVrFTH*l^gkiNraaA>3B%mq7wO1LtMd~?3rO}akm>h5cWvzBk09JcYY zi6rmFYiX8?{;k=mv~ex-j>}~;q!RQLwyMv*Ilqc!4WmUkOAcRymBh;e{ho&SP4zc~ z4&3^?fg#}WJid4@%@01g`}A2CB>$=}Jbw31#X40+Tu|3=En`{0I(422d2hK+hvP$HRA)>R!E6+a$QVd9$q2b++=i z0mcoF75opLEUVDXI#sq!Z;=8^uyup0NK3#f-KKeeZ63H^3NL@v{H6VteX8ie=)MMz zgV9S|z6uJsG;+?bOTRVY`;qr%N(Z``9^3z|XUOxFU|_rcZnGzY=1<`ShR5fRp0nDs PAM7emS3j3^P6k5I7qB z`2UW^z5^V6P0|)kvn`sXExPg=gcD}Zxh12ZyEde++>?1?-N)VGzf@i<%M9td5LI28 za_n+e(}%g|y>xA^t+ak~dPBb3vU%qpiEikMNZz{ihn8aYWzDZTj59i?KMPQi*uP+3 z+VTclS^cu!olkE^rF_*}vp(md%ap};-HwagHcQLt|F{2Ib!>kvN1X9i-}Ma*XQp0R zCO5lw`TAMEw3u(Dgdea=WLv+#j&DQk@~zpO>;@biOCG$vnE75$==|fvWA|Gs{w(~- zcUAf+i}1Vu^^e(`L?>8p(qj0}3Jeeka5?(GJMiDGZt3p$y>I56n&HT}apsKf);1=X z0)_`H3mGgNHQ;;(KLM@=;TE_8I|jditUH>Hq3%K2+x;$Ff3&mv)BmVFi*{}A%QoK? z*2#Jxe+z$434^X^fkx7P(Xv;!rSHuuS}^}y+1uIQc7JCMU&XY8YuB`v3RVMAjd_2U yN-PXM|I?kZxI5tJB(5p5YxUJNLRjBda2YThol%zmYf@Js$SIz#elF{r5}E*S%GFo^ literal 0 HcmV?d00001 diff --git a/example/icons/basic_trashcan.png b/example/icons/basic_trashcan.png new file mode 100644 index 0000000000000000000000000000000000000000..4de7b8310c54ebca6a335ff26d84e00f8374c8bb GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+=nU80$W0hLFH8<7e$Q7pWx{XHrYkybDgmS0ef0FZb1yDN!!;8#q zdy5@H!`J|5PU!!QtbP#=*B6VMG>UU+Rf0bv5V0UZH0V1%+kHXxOF;fcZmz&jGD7$BV6 zFA&l=f38b%j-``DbV+@m&;ERO#)+axm~M{a98tF`Na}VjsE2rHxBKJK}6R0NTM87Y`UC zS78?b2$P?6ynq7@`a1gnCjjj90MOr>4w16A@+4S0Y03=%*H!>xIvmR5vEuYNVhaFj z2aB{9kkKB=oFo*gLQcuNe6&%G8mmujhUbrBQMf4qZp zX>2P=BBMjGxx)M70X^mb$e`#P>)jKn8?NipTANE_dHOK=Gxc}{VEmt0flEF>p%*~+ zK`8Djaxag^`@lykI{ft%u1g?Z9Y2KWRe67U>5)dr$TE02o!OFxjn#itFdQ< zLUEJCmP=BqB#AWuC@aXedBB)^R=9GK#HNdqnRIB)e~ch6@FW8wSuwKC13-V1r17$S a3orn~&m^A)xDNUN0000H#Zi#bBnz{!t)_A1?;F2m@)$-L=;D0_p|-Aj)$i0jkjF!*;*XBe%Ic$^@-~9#J*4Z_hbwAor$)SYXhfbZ1z}Z%9NFUCHnb$ z-pJ>BjDr_ z`gi?LHV3-q91miQn0tR3&x7M{9(9THm=fJEi0R^KK3UhRy$NQ>Lwb$qAD4boFyt=akR{0LfjM6aWAK literal 0 HcmV?d00001 diff --git a/example/icons/basic_upload.png b/example/icons/basic_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..3957f36e06f77cb26958e9034abbf3e7b30a8182 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|TSFr;B4q#jQ8DFY-1S2sAvD zOJp!BWOYv#aVubPYw*4EV9iH^B}{f1>u3F&9@F%xVDEXcg@J)r1By)+eqvx~IOUwA zWxU`~#`NYNr5d5WwSuW2S7CsPwvG}*{b{iq3t4W9e7z&Ix$XE2_3G@t%D&_sR(%W4 zOuOOs`C#91A>)ObH~#FgGM(;n;W*cY3C78Hq-U?Wm$Lrqr>AocSA5y|r5g@8 zdmpeBT#1OfEqsvmL9BE1*1ZCI7=A5w`@Wu2NElVYsEuBY(Z8|NltCWvmqcnd>9B^$*}6{wvq^A#6k7znaP>@VV`tx3{yl zE5~B1RpPJw)&+no0$Ybrd*|m~dP1%EZiYi~x9@FEs2a~!5Zw4r zzHKKKi_&~;&-)jNkAwgiR-T1;PY4!k`-~9p1wm`- zLdAPPFgZC=JQ{)+I6ZLjNC>Kvdx}Rv(42hn7LR~Xd-Aw^H7o$On$)lw zLT!e!Bh%yIrfcK_65*a(quL|+|KIf0?-MtK~^9y%vKUhC${duzonqO5OZvT^J7wDya zSNmST`D+m}3`Voxz4vSQ#&UA^wFnW0b)TDs=df;k6`d@|U~yMleZ?i;?|}^KWG(ld zd!os3LjFW|cgcCSb%Lf0*UMvH-rMeWYw_8$qHpE8@_uZZG_B76FVdQ&MBb@0LI_~?f?J) literal 0 HcmV?d00001 diff --git a/example/icons/basic_watch.png b/example/icons/basic_watch.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9423a029aa108365f4dbf1aab7c87a9071946c GIT binary patch literal 767 zcmV5-jJ`IAREXtP`2Rlxfc9b+AgjA&Jw*aQg$-$V%OJNUAWR5QQ2=PV zXHUVNvzNRf;sD#ah9Ur9<6ZA8kQ?sCdv!HfhpTVM3INUC_538&@GJFBo+Wfy0AO!8 zlU!0Y-m8D{hFp^az!a-M%&bm2U`h(WUz1}dyx3)pLyypkXO3~tv95cTI41!>s5b=w zXk)A(#2Xy3+=GB~Zf_2Bu=Bv4=yt!Ow&q|2y}D0)+`_vHN0>V{j1F?_a{L}5Ypn(J z&UKA#JhK%n=uTT0gCu|s%R^OOIuIR2EnqGXz)W-$0nlQ3E)c+(=qNG?vP@bf$txl# z3W|@p>dp<|gykDRFj+vP-nm_oIg&_{{XC}HS+1?X#5zDyAiOQQk=zO!EE@q!w2qaX z!C!D_Y;b7o?iA4w9YyAVptUvv#0PqNa(k4(_@7A~0a`IUSH%hIwYS8)dpg@v{DG9t zQ02LvyQ-YDBf80*4RQuV7(?ah0wVB|on(&q_*y{kI~|UwoBZi8S5TDcv?zU0lq)RG zVETE&;(9QmM`L<8s>kDcK|-&{=q0ItaZPTuHy9d~#S@#Ti;~$!enqYpz>vNK7y$pxV1G~GSYZGF002ovPDHLkV1j~sPNV<; literal 0 HcmV?d00001 diff --git a/example/icons/basic_webpage.png b/example/icons/basic_webpage.png new file mode 100644 index 0000000000000000000000000000000000000000..2193c763a6175a738a7d836a9ca5759ed8649b82 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;*h7srr_TW@X~ay1wTupEf_ z@IQXv62Y9Hn;q8NO$p{}rfYB6RjrcV_W`I_!FucZYYh)#zMs9vuC?k{=vv0}Y;#)t zcq@P3;rVe(GlA^}^Bcx*48{kvfr^O)b)xZI$IK7RU)-hu)X}t=MS`Jnzfw6D_dTFz P7#KWV{an^LB{Ts54A@EZ literal 0 HcmV?d00001 diff --git a/example/icons/basic_webpage_img_txt.png b/example/icons/basic_webpage_img_txt.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e3c456a5086043a5e2d861ef7679884890243f GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;3L7srr_TW@YVay1(Wum-sA z`9Jk|4vTo3&J}?f<^dWd3vKF-%V#JXZ$Gs;|0p|9$5!=Q+Nuja$XuU&jeSwb7v&(P zcbqRczY2Z&R&1THb$NsA0`?b-RSmKaw1J9&U=G`SzvB9HFI0XWH&scP(jYqPq4;+L zugR($KuQ0`t5ppwFBpZuN~;d^R8MFStv+xjJGu!h0wpvo>olY682?#jaWXM5Ech^o ZiHE_I%ehv1UF!{y5>Hn@mvv4FO#pC7UmE}b literal 0 HcmV?d00001 diff --git a/example/icons/basic_webpage_multiple.png b/example/icons/basic_webpage_multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..90f880123b6b7426b4f4804d6ee0d253f883bc48 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|-F|7srr_TW@X~ay1z6um&jK z`+w@{QP%)&y-EK!U0ZtozKOy$iDb`prJVXe)hXA_ekX+Ta(eh3h&+BLK-R2IElQYW z0ei~aTFxD63ts=Vn;paXqUu=sWL?J1P1jp$V#~Sz*fQqlzj?ij<&Q4o-RF#)2J9X{ zldyvcd>fYLe0k^G$+84UU7oMT!O)=gqr%t2;rq`6^B2!j0BUQ>7EfS!y4tiq+*^bn OWQ?b)pUXO@geCx(cwoE$ literal 0 HcmV?d00001 diff --git a/example/icons/basic_webpage_txt.png b/example/icons/basic_webpage_txt.png new file mode 100644 index 0000000000000000000000000000000000000000..bcea60da4433e843189dd5c1973a90c87ede13de GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;#f7srr_TW@X~ay2;cusA6H z`+xeQ)WJjAM~)?{D{z!K$An*a^-j0)n{EwI^#ohfzHN*Li(}Lm^M_n{6~2{sNB#ky zjBSeX>rXfAw`EOfkXyk1g3;)JE>JNL?BTWBdv>ke=6T7?_qtAkg)T6EVX$=oxt#&3 t7%U7Y#AM>Tj^#JlySFL;#hRXrBrsIJHLq2jeCsDjji;-h%Q~loCIGo}Rki>C literal 0 HcmV?d00001 diff --git a/example/icons/basic_world.png b/example/icons/basic_world.png new file mode 100644 index 0000000000000000000000000000000000000000..ade877e2f10f2297e8441fc32d9369c564f2de37 GIT binary patch literal 1217 zcmV;y1U~zTP)|0Ha(=ZfHBUm@wAe?}3f(a)eN9Yj-36@9|+d-m7$Y%DL6OcIpnG=wiJtCFZ zu?Ti~Zr{9d>SxDk3$-PyP2!*TzV~DM*`D=%A5EENvso^FWX?oRM7}UoxfQt+xe>V* z^wpEn=NkaQuw=4;{MJ*mHzHRu3wk@R1WN#XWRP$vnF`5tWj*rfiK&fim<600e?k{d%Cy6#DFu#uNtuK%^D1 z?|e_$B~@t?02-57?rA?KequEl07N}|03tCEr^+q{%4h+AZwpjEH_){r{wMJYfW|=; zjPgn{<(_hb0KoTh$b1ZD$p*oN`OLyhT7#CD0Kh=5m?M%E2vabhaa5NBfX0+E-yoP8 zQ_QcqV=nUg6{D;X04P`O8x;mXSSt{m03eR#n%OayR_YOel&e*!&NXLr*ym8_6m(%B z{Uwt~764>Otr=w(8u|+s0ATkW8tRrD5RmjcwgVu2YMT9u1W(c z2w=Vw&nwFysB}DYkzXpwqTpx-l2redubB@tw*~?gp&e*WgM*=De85?o04!c?(>*!{b6DrK z>+{a>6w4NX+YvLW_5_6Ja%4vFdK;q#vJsshV?vaA0HBLqS5;(2bxZ)ptYMlMuZ%{R zKz;-O@)2gZTLGVYKt#<0ZXhJ4VtU-*LL)q?3}ek@n94OIrp9E;kk}kTVzwqwAfBTT z6xD>qU)!K6>dHfn@1uVsEH2yp3Xi+6_yijx#RMB8c{IVsNZ1++o1 + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +}} + +$sprite: ( +{{#images}} + {{name}}: {{rect.x}}px {{rect.y}}px, +{{/images}} +); + +@mixin use-sprite($name) { + background: transparent '{{& url}}' no-repeat; + background-position: map-get($sprite, $name); + background-size: {{bounds.width}}px {{bounds.height}}px; +} + +{{#images}} +.sprite-{{name}} { + @include use-sprite('{{name}}'); +} +{{/images}} diff --git a/lib/spritemaker.js b/lib/spritemaker.js new file mode 100644 index 0000000..65d28f0 --- /dev/null +++ b/lib/spritemaker.js @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2019-present Tomek Wójcik + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +const crypto = require('crypto'); +const fs = require('fs'); +const path = require('path'); + +const glob = require('glob'); +const Mustache = require('mustache'); +const {PNG} = require('pngjs'); +const URI = require('urijs'); + +const DEFAULT_OPTIONS = { + files: [], + output: 'sprite/', + urlPrefix: '/' +}; + +const spritemaker = (options) => { + options = Object.assign({}, DEFAULT_OPTIONS, options); + const images = []; + const bounds = { + width: 0, + height: 0 + }; + const spriteMap = []; + + options.files.forEach((pattern, index) => { + glob.sync(pattern).forEach((imagePath, index) => { + const data = fs.readFileSync(imagePath); + const image = PNG.sync.read(data); + + bounds.height += image.height; + if (image.width > bounds.width) { + bounds.width = image.width; + } + + images.push([imagePath, image]); + }); + }); + + const outputImage = new PNG({ + height: bounds.height, + width: bounds.width + }); + + let currentDeltaY = 0; + images.forEach(([imagePath, image], index) => { + PNG.bitblt( + image, outputImage, + 0, 0, image.width, image.height, + 0, currentDeltaY + ); + + spriteMap.push({ + name: path.basename(imagePath, '.png'), + rect: { + x: 0, + y: currentDeltaY * -1, + width: image.width, + height: image.height + } + }); + + currentDeltaY += image.height; + }); + + const hash = crypto.Hash('md5'); + hash.update(outputImage.data); + + const outputBasename = `sprite-${hash.digest('hex')}`; + const outputName = `${outputBasename}.png`; + const outbutBuffer = PNG.sync.write(outputImage, { + colorType: 6 + }); + fs.writeFileSync( + path.resolve(options.output, outputName), outbutBuffer + ); + + const template = fs.readFileSync( + path.resolve(__dirname, 'scss.mustache'), {encoding: 'utf-8'} + ); + const outputURL = new URI(options.urlPrefix).path('/' + outputName); + const context = { + bounds: bounds, + images: spriteMap, + url: outputURL.href() + }; + const scss = Mustache.render(template, context); + fs.writeFileSync( + path.resolve(options.output, `${outputBasename}.scss`), scss + ); +}; + +module.exports = { + spritemaker: spritemaker +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..705ef11 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1107 @@ +{ + "name": "spritemaker", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "acorn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", + "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "ajv": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", + "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "imurmurhash": "^0.1.4", + "inquirer": "^6.1.0", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" + } + }, + "eslint-plugin-mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz", + "integrity": "sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg==", + "dev": true, + "requires": { + "ramda": "^0.25.0" + } + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", + "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "mustache": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.0.1.tgz", + "integrity": "sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pngjs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", + "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "ramda": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", + "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", + "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", + "dev": true, + "requires": { + "ajv": "^6.6.1", + "lodash": "^4.17.11", + "slice-ansi": "2.0.0", + "string-width": "^2.1.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urijs": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz", + "integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4e2c1fd --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "@bthlabs/sass-spritemaker", + "version": "1.0.0", + "description": "Convert a bunch of PNGs to a Sass spritemap.", + "main": "./lib/spritemaker.js", + "repository": { + "type": "git", + "url": "https://git.bthlabs.pl/tomekwojcik/spritemaker.git" + }, + "author": "Tomek Wójcik (https://www.bthlabs.pl/)", + "license": "MIT", + "private": false, + "engines": { + "node": ">=6.9.0" + }, + "scripts": { + "lint": "./node_modules/.bin/eslint example/ lib/ test/", + "test": "./node_modules/.bin/mocha" + }, + "dependencies": { + "glob": "7.1.3", + "mustache": "3.0.1", + "pngjs": "3.3.3", + "urijs": "1.19.1" + }, + "devDependencies": { + "chai": "4.2.0", + "eslint": "5.11.1", + "eslint-plugin-mocha": "5.2.0", + "mocha": "5.2.0" + } +} diff --git a/test/.eslintrc.json b/test/.eslintrc.json new file mode 100644 index 0000000..f754afc --- /dev/null +++ b/test/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "env": { + "node": true, + "es6": true, + "mocha": true + }, + "plugins": ["mocha"] +} diff --git a/test/spritemaker.spec.js b/test/spritemaker.spec.js new file mode 100644 index 0000000..de9a6c4 --- /dev/null +++ b/test/spritemaker.spec.js @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2019-present Tomek Wójcik + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +var fs = require('fs'); +var path = require('path'); + +const {expect} = require('chai'); + +const {spritemaker} = require('../lib/spritemaker'); + +const {rmtree} = require('./utils'); + +const ICONS_PATH = path.resolve(__dirname, '..', 'example', 'icons', '*.png'); +const OUTPUT_NAME = 'sprite-4744971b12c28832638cc954dd787fa5'; + +describe('spritemaker', () => { + let outputDir = null; + let defaultOptions = null; + + beforeEach(() => { + outputDir = fs.mkdtempSync('tmp_spritemaker'); + defaultOptions = { + files: [ICONS_PATH], + output: outputDir + }; + }); + + afterEach(() => { + rmtree(outputDir); + }); + + it('should generate the sprite image', () => { + spritemaker(defaultOptions); + + const spritePath = path.join(outputDir, `${OUTPUT_NAME}.png`); + expect(fs.existsSync(spritePath)).to.equal(true); + }); + + it('should generate the SCSS files', () => { + spritemaker(defaultOptions); + + const scssPath = path.join(outputDir, `${OUTPUT_NAME}.scss`); + expect(fs.existsSync(scssPath)).to.equal(true); + }); +}); diff --git a/test/utils.js b/test/utils.js new file mode 100644 index 0000000..d8c80c2 --- /dev/null +++ b/test/utils.js @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2019-present Tomek Wójcik + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +const fs = require('fs'); +const _path = require('path'); + +const rmtree = module.exports.rmtree = (path) => { + if (!fs.existsSync(path)) { + return; + } + + var files = fs.readdirSync(path); + files.forEach((file) => { + var filePath = _path.join(path, file); + if (fs.statSync(filePath).isDirectory()) { + rmtree(filePath); + } else { + fs.unlinkSync(filePath); + } + }); + + fs.rmdirSync(path); +}; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..8953720 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,917 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" + integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== + +ajv@^6.5.3, ajv@^6.6.1: + version "6.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" + integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +chai@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-plugin-mocha@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz#d8786d9fff8cb8b5f6e4b61e40395d6568a5c4e2" + integrity sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg== + dependencies: + ramda "^0.25.0" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@5.11.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.11.1.tgz#8deda83db9f354bf9d3f53f9677af7e0e13eadda" + integrity sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + imurmurhash "^0.1.4" + inquirer "^6.1.0" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.1" + require-uncached "^1.0.3" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.0.2" + text-table "^0.2.0" + +espree@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" + integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +external-editor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.3, glob@^7.1.2, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.7.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== + +graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inquirer@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52" + integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^5.0.0" + through "^2.3.6" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +mkdirp@0.5.1, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mocha@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +mustache@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.0.1.tgz#873855f23aa8a95b150fb96d9836edbc5a1d248a" + integrity sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +pngjs@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.3.tgz#85173703bde3edac8998757b96e5821d0966a21b" + integrity sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +ramda@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" + integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +rxjs@^6.1.0: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== + dependencies: + tslib "^1.9.0" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.5.0, semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +slice-ansi@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7" + integrity sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +table@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837" + integrity sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw== + dependencies: + ajv "^6.6.1" + lodash "^4.17.11" + slice-ansi "2.0.0" + string-width "^2.1.1" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urijs@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.1.tgz#5b0ff530c0cbde8386f6342235ba5ca6e995d25a" + integrity sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1"