From cf21ba45164e240c7bad08cdfa7945dae8b2a45d Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Thu, 26 Feb 2026 15:37:17 +0000 Subject: [PATCH] Phase 1-2: Foundation + Admin Panel & Client Management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1 (Foundation): - Project restructure (presenton-main → backend/ + frontend/) - Database schema (8 new models, Alembic config, seed script) - Auth (Azure AD SSO + dev bypass, JWT sessions, AuthMiddleware) - RBAC (access_service, rbac_middleware, admin routers) - Audit logging (fire-and-forget, AuditMiddleware, admin router) - i18n (react-i18next with 5 namespace files) Phase 2 (Admin Panel & Client Management): - Admin panel shell (sidebar layout, role guard, 12 pages) - Redux admin slice with 18 async thunks - User management (role changes, deactivation) - Client management (CRUD, brand config, team management) - Brand config editor (colors, fonts, logos, voice rules) - Master deck upload & parser (PPTX → HTML → React pipeline) - Audit log viewer with filters and CSV/JSON export Co-Authored-By: Claude Opus 4.6 --- .env.example | 53 + Makefile | 34 + backend/.python-version | 1 + backend/Dockerfile | 32 + backend/alembic.ini | 37 + backend/api/__init__.py | 0 backend/api/lifespan.py | 23 + backend/api/main.py | 55 + backend/api/middlewares.py | 12 + backend/api/middlewares/__init__.py | 0 backend/api/middlewares/audit_middleware.py | 62 + backend/api/middlewares/auth_middleware.py | 82 + backend/api/middlewares/rbac_middleware.py | 32 + backend/api/v1/admin/__init__.py | 0 backend/api/v1/admin/audit_router.py | 109 + backend/api/v1/admin/brand_config_router.py | 199 + backend/api/v1/admin/clients_router.py | 154 + backend/api/v1/admin/master_decks_router.py | 262 + backend/api/v1/admin/teams_router.py | 204 + backend/api/v1/admin/users_router.py | 112 + backend/api/v1/auth/__init__.py | 0 backend/api/v1/auth/router.py | 134 + backend/api/v1/mock/router.py | 34 + backend/api/v1/ppt/background_tasks.py | 73 + backend/api/v1/ppt/endpoints/__init__.py | 0 backend/api/v1/ppt/endpoints/anthropic.py | 16 + backend/api/v1/ppt/endpoints/files.py | 87 + backend/api/v1/ppt/endpoints/fonts.py | 290 + backend/api/v1/ppt/endpoints/google.py | 14 + backend/api/v1/ppt/endpoints/icons.py | 10 + backend/api/v1/ppt/endpoints/images.py | 105 + backend/api/v1/ppt/endpoints/layouts.py | 27 + backend/api/v1/ppt/endpoints/ollama.py | 85 + backend/api/v1/ppt/endpoints/openai.py | 17 + backend/api/v1/ppt/endpoints/outlines.py | 113 + backend/api/v1/ppt/endpoints/pdf_slides.py | 116 + backend/api/v1/ppt/endpoints/pptx_slides.py | 613 + backend/api/v1/ppt/endpoints/presentation.py | 973 + backend/api/v1/ppt/endpoints/prompts.py | 241 + backend/api/v1/ppt/endpoints/slide.py | 90 + backend/api/v1/ppt/endpoints/slide_to_html.py | 1043 + backend/api/v1/ppt/router.py | 39 + backend/api/v1/webhook/router.py | 53 + backend/assets/icons.json | 63510 ++++++++++++++++ backend/constants/__init__.py | 0 backend/constants/documents.py | 20 + backend/constants/llm.py | 6 + backend/constants/presentation.py | 1 + backend/constants/supported_ollama_models.py | 180 + backend/enums/__init__.py | 0 backend/enums/image_provider.py | 11 + backend/enums/llm_call_type.py | 8 + backend/enums/llm_provider.py | 9 + backend/enums/tone.py | 11 + backend/enums/verbosity.py | 8 + backend/enums/webhook_event.py | 6 + backend/mcp_server.py | 68 + backend/migrations/__init__.py | 0 backend/migrations/env.py | 75 + backend/migrations/script.py.mako | 27 + backend/models/__init__.py | 0 backend/models/api_error_model.py | 13 + backend/models/decomposed_file_info.py | 6 + backend/models/document_chunk.py | 13 + .../models/generate_presentation_request.py | 42 + backend/models/image_prompt.py | 10 + backend/models/json_path_guide.py | 14 + backend/models/llm_message.py | 59 + backend/models/llm_tool_call.py | 30 + backend/models/llm_tools.py | 29 + backend/models/ollama_model_metadata.py | 7 + backend/models/ollama_model_status.py | 10 + backend/models/pptx_models.py | 171 + backend/models/presentation_and_path.py | 11 + backend/models/presentation_from_template.py | 14 + backend/models/presentation_layout.py | 39 + backend/models/presentation_outline_model.py | 17 + .../models/presentation_structure_model.py | 6 + backend/models/presentation_with_slides.py | 20 + backend/models/slide_layout_index.py | 5 + .../async_presentation_generation_status.py | 22 + backend/models/sql/audit_log.py | 31 + backend/models/sql/brand_config.py | 39 + backend/models/sql/client.py | 35 + backend/models/sql/image_asset.py | 20 + backend/models/sql/job.py | 37 + backend/models/sql/key_value.py | 8 + backend/models/sql/master_deck.py | 38 + backend/models/sql/ollama_pull_status.py | 9 + backend/models/sql/presentation.py | 102 + .../models/sql/presentation_layout_code.py | 37 + backend/models/sql/slide.py | 36 + backend/models/sql/team.py | 22 + backend/models/sql/team_membership.py | 24 + backend/models/sql/template.py | 26 + backend/models/sql/user.py | 37 + backend/models/sql/webhook_subscription.py | 22 + backend/models/sse_response.py | 40 + backend/models/user_config.py | 50 + backend/openai_spec.json | 294 + backend/pyproject.toml | 36 + backend/scripts/__init__.py | 0 backend/scripts/seed.py | 35 + backend/server.py | 21 + backend/services/__init__.py | 0 backend/services/access_service.py | 56 + backend/services/audit_service.py | 126 + backend/services/auth_service.py | 154 + backend/services/concurrent_service.py | 35 + backend/services/database.py | 24 + backend/services/docling_service.py | 33 + backend/services/documents_loader.py | 115 + backend/services/html_to_text_runs_service.py | 65 + backend/services/icon_finder_service.py | 56 + backend/services/image_generation_service.py | 415 + backend/services/llm_client.py | 1615 + backend/services/llm_tool_calls_handler.py | 211 + .../services/master_deck_parser_service.py | 317 + backend/services/pptx_presentation_creator.py | 486 + backend/services/score_based_chunker.py | 163 + backend/services/temp_file_service.py | 70 + backend/services/webhook_service.py | 55 + backend/static/icons/bold/acorn-bold.svg | 1 + .../static/icons/bold/address-book-bold.svg | 1 + .../icons/bold/address-book-tabs-bold.svg | 1 + .../icons/bold/air-traffic-control-bold.svg | 1 + backend/static/icons/bold/airplane-bold.svg | 1 + .../icons/bold/airplane-in-flight-bold.svg | 1 + .../icons/bold/airplane-landing-bold.svg | 1 + .../icons/bold/airplane-takeoff-bold.svg | 1 + .../icons/bold/airplane-taxiing-bold.svg | 1 + .../static/icons/bold/airplane-tilt-bold.svg | 1 + backend/static/icons/bold/airplay-bold.svg | 1 + backend/static/icons/bold/alarm-bold.svg | 1 + backend/static/icons/bold/alien-bold.svg | 1 + .../static/icons/bold/align-bottom-bold.svg | 1 + .../icons/bold/align-bottom-simple-bold.svg | 1 + .../bold/align-center-horizontal-bold.svg | 1 + .../align-center-horizontal-simple-bold.svg | 1 + .../icons/bold/align-center-vertical-bold.svg | 1 + .../align-center-vertical-simple-bold.svg | 1 + backend/static/icons/bold/align-left-bold.svg | 1 + .../icons/bold/align-left-simple-bold.svg | 1 + .../static/icons/bold/align-right-bold.svg | 1 + .../icons/bold/align-right-simple-bold.svg | 1 + backend/static/icons/bold/align-top-bold.svg | 1 + .../icons/bold/align-top-simple-bold.svg | 1 + .../static/icons/bold/amazon-logo-bold.svg | 1 + backend/static/icons/bold/ambulance-bold.svg | 1 + backend/static/icons/bold/anchor-bold.svg | 1 + .../static/icons/bold/anchor-simple-bold.svg | 1 + .../static/icons/bold/android-logo-bold.svg | 1 + backend/static/icons/bold/angle-bold.svg | 1 + .../static/icons/bold/angular-logo-bold.svg | 1 + backend/static/icons/bold/aperture-bold.svg | 1 + .../static/icons/bold/app-store-logo-bold.svg | 1 + backend/static/icons/bold/app-window-bold.svg | 1 + backend/static/icons/bold/apple-logo-bold.svg | 1 + .../icons/bold/apple-podcasts-logo-bold.svg | 1 + .../icons/bold/approximate-equals-bold.svg | 1 + backend/static/icons/bold/archive-bold.svg | 1 + backend/static/icons/bold/armchair-bold.svg | 1 + .../static/icons/bold/arrow-arc-left-bold.svg | 1 + .../icons/bold/arrow-arc-right-bold.svg | 1 + .../bold/arrow-bend-double-up-left-bold.svg | 1 + .../bold/arrow-bend-double-up-right-bold.svg | 1 + .../icons/bold/arrow-bend-down-left-bold.svg | 1 + .../icons/bold/arrow-bend-down-right-bold.svg | 1 + .../icons/bold/arrow-bend-left-down-bold.svg | 1 + .../icons/bold/arrow-bend-left-up-bold.svg | 1 + .../icons/bold/arrow-bend-right-down-bold.svg | 1 + .../icons/bold/arrow-bend-right-up-bold.svg | 1 + .../icons/bold/arrow-bend-up-left-bold.svg | 1 + .../icons/bold/arrow-bend-up-right-bold.svg | 1 + .../icons/bold/arrow-circle-down-bold.svg | 1 + .../bold/arrow-circle-down-left-bold.svg | 1 + .../bold/arrow-circle-down-right-bold.svg | 1 + .../icons/bold/arrow-circle-left-bold.svg | 1 + .../icons/bold/arrow-circle-right-bold.svg | 1 + .../icons/bold/arrow-circle-up-bold.svg | 1 + .../icons/bold/arrow-circle-up-left-bold.svg | 1 + .../icons/bold/arrow-circle-up-right-bold.svg | 1 + .../icons/bold/arrow-clockwise-bold.svg | 1 + .../bold/arrow-counter-clockwise-bold.svg | 1 + backend/static/icons/bold/arrow-down-bold.svg | 1 + .../icons/bold/arrow-down-left-bold.svg | 1 + .../icons/bold/arrow-down-right-bold.svg | 1 + .../icons/bold/arrow-elbow-down-left-bold.svg | 1 + .../bold/arrow-elbow-down-right-bold.svg | 1 + .../icons/bold/arrow-elbow-left-bold.svg | 1 + .../icons/bold/arrow-elbow-left-down-bold.svg | 1 + .../icons/bold/arrow-elbow-left-up-bold.svg | 1 + .../icons/bold/arrow-elbow-right-bold.svg | 1 + .../bold/arrow-elbow-right-down-bold.svg | 1 + .../icons/bold/arrow-elbow-right-up-bold.svg | 1 + .../icons/bold/arrow-elbow-up-left-bold.svg | 1 + .../icons/bold/arrow-elbow-up-right-bold.svg | 1 + .../static/icons/bold/arrow-fat-down-bold.svg | 1 + .../static/icons/bold/arrow-fat-left-bold.svg | 1 + .../icons/bold/arrow-fat-line-down-bold.svg | 1 + .../icons/bold/arrow-fat-line-left-bold.svg | 1 + .../icons/bold/arrow-fat-line-right-bold.svg | 1 + .../icons/bold/arrow-fat-line-up-bold.svg | 1 + .../icons/bold/arrow-fat-lines-down-bold.svg | 1 + .../icons/bold/arrow-fat-lines-left-bold.svg | 1 + .../icons/bold/arrow-fat-lines-right-bold.svg | 1 + .../icons/bold/arrow-fat-lines-up-bold.svg | 1 + .../icons/bold/arrow-fat-right-bold.svg | 1 + .../static/icons/bold/arrow-fat-up-bold.svg | 1 + backend/static/icons/bold/arrow-left-bold.svg | 1 + .../icons/bold/arrow-line-down-bold.svg | 1 + .../icons/bold/arrow-line-down-left-bold.svg | 1 + .../icons/bold/arrow-line-down-right-bold.svg | 1 + .../icons/bold/arrow-line-left-bold.svg | 1 + .../icons/bold/arrow-line-right-bold.svg | 1 + .../static/icons/bold/arrow-line-up-bold.svg | 1 + .../icons/bold/arrow-line-up-left-bold.svg | 1 + .../icons/bold/arrow-line-up-right-bold.svg | 1 + .../static/icons/bold/arrow-right-bold.svg | 1 + .../icons/bold/arrow-square-down-bold.svg | 1 + .../bold/arrow-square-down-left-bold.svg | 1 + .../bold/arrow-square-down-right-bold.svg | 1 + .../icons/bold/arrow-square-in-bold.svg | 1 + .../icons/bold/arrow-square-left-bold.svg | 1 + .../icons/bold/arrow-square-out-bold.svg | 1 + .../icons/bold/arrow-square-right-bold.svg | 1 + .../icons/bold/arrow-square-up-bold.svg | 1 + .../icons/bold/arrow-square-up-left-bold.svg | 1 + .../icons/bold/arrow-square-up-right-bold.svg | 1 + .../icons/bold/arrow-u-down-left-bold.svg | 1 + .../icons/bold/arrow-u-down-right-bold.svg | 1 + .../icons/bold/arrow-u-left-down-bold.svg | 1 + .../icons/bold/arrow-u-left-up-bold.svg | 1 + .../icons/bold/arrow-u-right-down-bold.svg | 1 + .../icons/bold/arrow-u-right-up-bold.svg | 1 + .../icons/bold/arrow-u-up-left-bold.svg | 1 + .../icons/bold/arrow-u-up-right-bold.svg | 1 + backend/static/icons/bold/arrow-up-bold.svg | 1 + .../static/icons/bold/arrow-up-left-bold.svg | 1 + .../static/icons/bold/arrow-up-right-bold.svg | 1 + .../icons/bold/arrows-clockwise-bold.svg | 1 + .../bold/arrows-counter-clockwise-bold.svg | 1 + .../static/icons/bold/arrows-down-up-bold.svg | 1 + .../icons/bold/arrows-horizontal-bold.svg | 1 + backend/static/icons/bold/arrows-in-bold.svg | 1 + .../icons/bold/arrows-in-cardinal-bold.svg | 1 + .../bold/arrows-in-line-horizontal-bold.svg | 1 + .../bold/arrows-in-line-vertical-bold.svg | 1 + .../icons/bold/arrows-in-simple-bold.svg | 1 + .../icons/bold/arrows-left-right-bold.svg | 1 + .../static/icons/bold/arrows-merge-bold.svg | 1 + backend/static/icons/bold/arrows-out-bold.svg | 1 + .../icons/bold/arrows-out-cardinal-bold.svg | 1 + .../bold/arrows-out-line-horizontal-bold.svg | 1 + .../bold/arrows-out-line-vertical-bold.svg | 1 + .../icons/bold/arrows-out-simple-bold.svg | 1 + .../static/icons/bold/arrows-split-bold.svg | 1 + .../icons/bold/arrows-vertical-bold.svg | 1 + backend/static/icons/bold/article-bold.svg | 1 + .../static/icons/bold/article-medium-bold.svg | 1 + .../icons/bold/article-ny-times-bold.svg | 1 + backend/static/icons/bold/asclepius-bold.svg | 1 + backend/static/icons/bold/asterisk-bold.svg | 1 + .../icons/bold/asterisk-simple-bold.svg | 1 + backend/static/icons/bold/at-bold.svg | 1 + backend/static/icons/bold/atom-bold.svg | 1 + backend/static/icons/bold/avocado-bold.svg | 1 + backend/static/icons/bold/axe-bold.svg | 1 + backend/static/icons/bold/baby-bold.svg | 1 + .../static/icons/bold/baby-carriage-bold.svg | 1 + backend/static/icons/bold/backpack-bold.svg | 1 + backend/static/icons/bold/backspace-bold.svg | 1 + backend/static/icons/bold/bag-bold.svg | 1 + backend/static/icons/bold/bag-simple-bold.svg | 1 + backend/static/icons/bold/balloon-bold.svg | 1 + backend/static/icons/bold/bandaids-bold.svg | 1 + backend/static/icons/bold/bank-bold.svg | 1 + backend/static/icons/bold/barbell-bold.svg | 1 + backend/static/icons/bold/barcode-bold.svg | 1 + backend/static/icons/bold/barn-bold.svg | 1 + backend/static/icons/bold/barricade-bold.svg | 1 + backend/static/icons/bold/baseball-bold.svg | 1 + .../static/icons/bold/baseball-cap-bold.svg | 1 + .../icons/bold/baseball-helmet-bold.svg | 1 + backend/static/icons/bold/basket-bold.svg | 1 + backend/static/icons/bold/basketball-bold.svg | 1 + backend/static/icons/bold/bathtub-bold.svg | 1 + .../icons/bold/battery-charging-bold.svg | 1 + .../bold/battery-charging-vertical-bold.svg | 1 + .../static/icons/bold/battery-empty-bold.svg | 1 + .../static/icons/bold/battery-full-bold.svg | 1 + .../static/icons/bold/battery-high-bold.svg | 1 + .../static/icons/bold/battery-low-bold.svg | 1 + .../static/icons/bold/battery-medium-bold.svg | 1 + .../static/icons/bold/battery-plus-bold.svg | 1 + .../icons/bold/battery-plus-vertical-bold.svg | 1 + .../bold/battery-vertical-empty-bold.svg | 1 + .../icons/bold/battery-vertical-full-bold.svg | 1 + .../icons/bold/battery-vertical-high-bold.svg | 1 + .../icons/bold/battery-vertical-low-bold.svg | 1 + .../bold/battery-vertical-medium-bold.svg | 1 + .../icons/bold/battery-warning-bold.svg | 1 + .../bold/battery-warning-vertical-bold.svg | 1 + backend/static/icons/bold/beach-ball-bold.svg | 1 + backend/static/icons/bold/beanie-bold.svg | 1 + backend/static/icons/bold/bed-bold.svg | 1 + .../static/icons/bold/beer-bottle-bold.svg | 1 + backend/static/icons/bold/beer-stein-bold.svg | 1 + .../static/icons/bold/behance-logo-bold.svg | 1 + backend/static/icons/bold/bell-bold.svg | 1 + .../static/icons/bold/bell-ringing-bold.svg | 1 + .../static/icons/bold/bell-simple-bold.svg | 1 + .../icons/bold/bell-simple-ringing-bold.svg | 1 + .../icons/bold/bell-simple-slash-bold.svg | 1 + .../static/icons/bold/bell-simple-z-bold.svg | 1 + backend/static/icons/bold/bell-slash-bold.svg | 1 + backend/static/icons/bold/bell-z-bold.svg | 1 + backend/static/icons/bold/belt-bold.svg | 1 + .../static/icons/bold/bezier-curve-bold.svg | 1 + backend/static/icons/bold/bicycle-bold.svg | 1 + backend/static/icons/bold/binary-bold.svg | 1 + backend/static/icons/bold/binoculars-bold.svg | 1 + backend/static/icons/bold/biohazard-bold.svg | 1 + backend/static/icons/bold/bird-bold.svg | 1 + backend/static/icons/bold/blueprint-bold.svg | 1 + backend/static/icons/bold/bluetooth-bold.svg | 1 + .../icons/bold/bluetooth-connected-bold.svg | 1 + .../icons/bold/bluetooth-slash-bold.svg | 1 + .../static/icons/bold/bluetooth-x-bold.svg | 1 + backend/static/icons/bold/boat-bold.svg | 1 + backend/static/icons/bold/bomb-bold.svg | 1 + backend/static/icons/bold/bone-bold.svg | 1 + backend/static/icons/bold/book-bold.svg | 1 + .../static/icons/bold/book-bookmark-bold.svg | 1 + backend/static/icons/bold/book-open-bold.svg | 1 + .../static/icons/bold/book-open-text-bold.svg | 1 + .../static/icons/bold/book-open-user-bold.svg | 1 + backend/static/icons/bold/bookmark-bold.svg | 1 + .../icons/bold/bookmark-simple-bold.svg | 1 + backend/static/icons/bold/bookmarks-bold.svg | 1 + .../icons/bold/bookmarks-simple-bold.svg | 1 + backend/static/icons/bold/books-bold.svg | 1 + backend/static/icons/bold/boot-bold.svg | 1 + backend/static/icons/bold/boules-bold.svg | 1 + .../static/icons/bold/bounding-box-bold.svg | 1 + backend/static/icons/bold/bowl-food-bold.svg | 1 + backend/static/icons/bold/bowl-steam-bold.svg | 1 + .../static/icons/bold/bowling-ball-bold.svg | 1 + .../static/icons/bold/box-arrow-down-bold.svg | 1 + .../static/icons/bold/box-arrow-up-bold.svg | 1 + .../static/icons/bold/boxing-glove-bold.svg | 1 + .../static/icons/bold/brackets-angle-bold.svg | 1 + .../static/icons/bold/brackets-curly-bold.svg | 1 + .../static/icons/bold/brackets-round-bold.svg | 1 + .../icons/bold/brackets-square-bold.svg | 1 + backend/static/icons/bold/brain-bold.svg | 1 + backend/static/icons/bold/brandy-bold.svg | 1 + backend/static/icons/bold/bread-bold.svg | 1 + backend/static/icons/bold/bridge-bold.svg | 1 + backend/static/icons/bold/briefcase-bold.svg | 1 + .../icons/bold/briefcase-metal-bold.svg | 1 + backend/static/icons/bold/broadcast-bold.svg | 1 + backend/static/icons/bold/broom-bold.svg | 1 + backend/static/icons/bold/browser-bold.svg | 1 + backend/static/icons/bold/browsers-bold.svg | 1 + backend/static/icons/bold/bug-beetle-bold.svg | 1 + backend/static/icons/bold/bug-bold.svg | 1 + backend/static/icons/bold/bug-droid-bold.svg | 1 + .../icons/bold/building-apartment-bold.svg | 1 + backend/static/icons/bold/building-bold.svg | 1 + .../icons/bold/building-office-bold.svg | 1 + backend/static/icons/bold/buildings-bold.svg | 1 + backend/static/icons/bold/bulldozer-bold.svg | 1 + backend/static/icons/bold/bus-bold.svg | 1 + backend/static/icons/bold/butterfly-bold.svg | 1 + backend/static/icons/bold/cable-car-bold.svg | 1 + backend/static/icons/bold/cactus-bold.svg | 1 + backend/static/icons/bold/cake-bold.svg | 1 + backend/static/icons/bold/calculator-bold.svg | 1 + .../static/icons/bold/calendar-blank-bold.svg | 1 + backend/static/icons/bold/calendar-bold.svg | 1 + .../static/icons/bold/calendar-check-bold.svg | 1 + .../static/icons/bold/calendar-dot-bold.svg | 1 + .../static/icons/bold/calendar-dots-bold.svg | 1 + .../static/icons/bold/calendar-heart-bold.svg | 1 + .../static/icons/bold/calendar-minus-bold.svg | 1 + .../static/icons/bold/calendar-plus-bold.svg | 1 + .../static/icons/bold/calendar-slash-bold.svg | 1 + .../static/icons/bold/calendar-star-bold.svg | 1 + backend/static/icons/bold/calendar-x-bold.svg | 1 + backend/static/icons/bold/call-bell-bold.svg | 1 + backend/static/icons/bold/camera-bold.svg | 1 + .../static/icons/bold/camera-plus-bold.svg | 1 + .../static/icons/bold/camera-rotate-bold.svg | 1 + .../static/icons/bold/camera-slash-bold.svg | 1 + backend/static/icons/bold/campfire-bold.svg | 1 + .../static/icons/bold/car-battery-bold.svg | 1 + backend/static/icons/bold/car-bold.svg | 1 + .../static/icons/bold/car-profile-bold.svg | 1 + backend/static/icons/bold/car-simple-bold.svg | 1 + backend/static/icons/bold/cardholder-bold.svg | 1 + backend/static/icons/bold/cards-bold.svg | 1 + .../static/icons/bold/cards-three-bold.svg | 1 + .../bold/caret-circle-double-down-bold.svg | 1 + .../bold/caret-circle-double-left-bold.svg | 1 + .../bold/caret-circle-double-right-bold.svg | 1 + .../bold/caret-circle-double-up-bold.svg | 1 + .../icons/bold/caret-circle-down-bold.svg | 1 + .../icons/bold/caret-circle-left-bold.svg | 1 + .../icons/bold/caret-circle-right-bold.svg | 1 + .../icons/bold/caret-circle-up-bold.svg | 1 + .../icons/bold/caret-circle-up-down-bold.svg | 1 + .../icons/bold/caret-double-down-bold.svg | 1 + .../icons/bold/caret-double-left-bold.svg | 1 + .../icons/bold/caret-double-right-bold.svg | 1 + .../icons/bold/caret-double-up-bold.svg | 1 + backend/static/icons/bold/caret-down-bold.svg | 1 + backend/static/icons/bold/caret-left-bold.svg | 1 + .../icons/bold/caret-line-down-bold.svg | 1 + .../icons/bold/caret-line-left-bold.svg | 1 + .../icons/bold/caret-line-right-bold.svg | 1 + .../static/icons/bold/caret-line-up-bold.svg | 1 + .../static/icons/bold/caret-right-bold.svg | 1 + backend/static/icons/bold/caret-up-bold.svg | 1 + .../static/icons/bold/caret-up-down-bold.svg | 1 + backend/static/icons/bold/carrot-bold.svg | 1 + .../static/icons/bold/cash-register-bold.svg | 1 + .../static/icons/bold/cassette-tape-bold.svg | 1 + .../static/icons/bold/castle-turret-bold.svg | 1 + backend/static/icons/bold/cat-bold.svg | 1 + .../icons/bold/cell-signal-full-bold.svg | 1 + .../icons/bold/cell-signal-high-bold.svg | 1 + .../icons/bold/cell-signal-low-bold.svg | 1 + .../icons/bold/cell-signal-medium-bold.svg | 1 + .../icons/bold/cell-signal-none-bold.svg | 1 + .../icons/bold/cell-signal-slash-bold.svg | 1 + .../static/icons/bold/cell-signal-x-bold.svg | 1 + backend/static/icons/bold/cell-tower-bold.svg | 1 + .../static/icons/bold/certificate-bold.svg | 1 + backend/static/icons/bold/chair-bold.svg | 1 + backend/static/icons/bold/chalkboard-bold.svg | 1 + .../icons/bold/chalkboard-simple-bold.svg | 1 + .../icons/bold/chalkboard-teacher-bold.svg | 1 + backend/static/icons/bold/champagne-bold.svg | 1 + .../icons/bold/charging-station-bold.svg | 1 + backend/static/icons/bold/chart-bar-bold.svg | 1 + .../icons/bold/chart-bar-horizontal-bold.svg | 1 + .../static/icons/bold/chart-donut-bold.svg | 1 + backend/static/icons/bold/chart-line-bold.svg | 1 + .../icons/bold/chart-line-down-bold.svg | 1 + .../static/icons/bold/chart-line-up-bold.svg | 1 + backend/static/icons/bold/chart-pie-bold.svg | 1 + .../icons/bold/chart-pie-slice-bold.svg | 1 + .../static/icons/bold/chart-polar-bold.svg | 1 + .../static/icons/bold/chart-scatter-bold.svg | 1 + backend/static/icons/bold/chat-bold.svg | 1 + .../static/icons/bold/chat-centered-bold.svg | 1 + .../icons/bold/chat-centered-dots-bold.svg | 1 + .../icons/bold/chat-centered-slash-bold.svg | 1 + .../icons/bold/chat-centered-text-bold.svg | 1 + .../static/icons/bold/chat-circle-bold.svg | 1 + .../icons/bold/chat-circle-dots-bold.svg | 1 + .../icons/bold/chat-circle-slash-bold.svg | 1 + .../icons/bold/chat-circle-text-bold.svg | 1 + backend/static/icons/bold/chat-dots-bold.svg | 1 + backend/static/icons/bold/chat-slash-bold.svg | 1 + .../static/icons/bold/chat-teardrop-bold.svg | 1 + .../icons/bold/chat-teardrop-dots-bold.svg | 1 + .../icons/bold/chat-teardrop-slash-bold.svg | 1 + .../icons/bold/chat-teardrop-text-bold.svg | 1 + backend/static/icons/bold/chat-text-bold.svg | 1 + backend/static/icons/bold/chats-bold.svg | 1 + .../static/icons/bold/chats-circle-bold.svg | 1 + .../static/icons/bold/chats-teardrop-bold.svg | 1 + backend/static/icons/bold/check-bold.svg | 1 + .../static/icons/bold/check-circle-bold.svg | 1 + backend/static/icons/bold/check-fat-bold.svg | 1 + .../static/icons/bold/check-square-bold.svg | 1 + .../icons/bold/check-square-offset-bold.svg | 1 + .../static/icons/bold/checkerboard-bold.svg | 1 + backend/static/icons/bold/checks-bold.svg | 1 + backend/static/icons/bold/cheers-bold.svg | 1 + backend/static/icons/bold/cheese-bold.svg | 1 + backend/static/icons/bold/chef-hat-bold.svg | 1 + backend/static/icons/bold/cherries-bold.svg | 1 + backend/static/icons/bold/church-bold.svg | 1 + backend/static/icons/bold/cigarette-bold.svg | 1 + .../icons/bold/cigarette-slash-bold.svg | 1 + backend/static/icons/bold/circle-bold.svg | 1 + .../static/icons/bold/circle-dashed-bold.svg | 1 + .../static/icons/bold/circle-half-bold.svg | 1 + .../icons/bold/circle-half-tilt-bold.svg | 1 + .../static/icons/bold/circle-notch-bold.svg | 1 + .../static/icons/bold/circles-four-bold.svg | 1 + .../static/icons/bold/circles-three-bold.svg | 1 + .../icons/bold/circles-three-plus-bold.svg | 1 + backend/static/icons/bold/circuitry-bold.svg | 1 + backend/static/icons/bold/city-bold.svg | 1 + backend/static/icons/bold/clipboard-bold.svg | 1 + .../static/icons/bold/clipboard-text-bold.svg | 1 + .../icons/bold/clock-afternoon-bold.svg | 1 + backend/static/icons/bold/clock-bold.svg | 1 + .../icons/bold/clock-clockwise-bold.svg | 1 + .../icons/bold/clock-countdown-bold.svg | 1 + .../bold/clock-counter-clockwise-bold.svg | 1 + backend/static/icons/bold/clock-user-bold.svg | 1 + .../icons/bold/closed-captioning-bold.svg | 1 + .../icons/bold/cloud-arrow-down-bold.svg | 1 + .../static/icons/bold/cloud-arrow-up-bold.svg | 1 + backend/static/icons/bold/cloud-bold.svg | 1 + .../static/icons/bold/cloud-check-bold.svg | 1 + backend/static/icons/bold/cloud-fog-bold.svg | 1 + .../icons/bold/cloud-lightning-bold.svg | 1 + backend/static/icons/bold/cloud-moon-bold.svg | 1 + backend/static/icons/bold/cloud-rain-bold.svg | 1 + .../static/icons/bold/cloud-slash-bold.svg | 1 + backend/static/icons/bold/cloud-snow-bold.svg | 1 + backend/static/icons/bold/cloud-sun-bold.svg | 1 + .../static/icons/bold/cloud-warning-bold.svg | 1 + backend/static/icons/bold/cloud-x-bold.svg | 1 + backend/static/icons/bold/clover-bold.svg | 1 + backend/static/icons/bold/club-bold.svg | 1 + .../static/icons/bold/coat-hanger-bold.svg | 1 + backend/static/icons/bold/coda-logo-bold.svg | 1 + backend/static/icons/bold/code-block-bold.svg | 1 + backend/static/icons/bold/code-bold.svg | 1 + .../static/icons/bold/code-simple-bold.svg | 1 + .../static/icons/bold/codepen-logo-bold.svg | 1 + .../icons/bold/codesandbox-logo-bold.svg | 1 + .../static/icons/bold/coffee-bean-bold.svg | 1 + backend/static/icons/bold/coffee-bold.svg | 1 + backend/static/icons/bold/coin-bold.svg | 1 + .../static/icons/bold/coin-vertical-bold.svg | 1 + backend/static/icons/bold/coins-bold.svg | 1 + backend/static/icons/bold/columns-bold.svg | 1 + .../icons/bold/columns-plus-left-bold.svg | 1 + .../icons/bold/columns-plus-right-bold.svg | 1 + backend/static/icons/bold/command-bold.svg | 1 + backend/static/icons/bold/compass-bold.svg | 1 + .../static/icons/bold/compass-rose-bold.svg | 1 + .../static/icons/bold/compass-tool-bold.svg | 1 + .../static/icons/bold/computer-tower-bold.svg | 1 + backend/static/icons/bold/confetti-bold.svg | 1 + .../icons/bold/contactless-payment-bold.svg | 1 + backend/static/icons/bold/control-bold.svg | 1 + backend/static/icons/bold/cookie-bold.svg | 1 + .../static/icons/bold/cooking-pot-bold.svg | 1 + backend/static/icons/bold/copy-bold.svg | 1 + .../static/icons/bold/copy-simple-bold.svg | 1 + backend/static/icons/bold/copyleft-bold.svg | 1 + backend/static/icons/bold/copyright-bold.svg | 1 + backend/static/icons/bold/corners-in-bold.svg | 1 + .../static/icons/bold/corners-out-bold.svg | 1 + backend/static/icons/bold/couch-bold.svg | 1 + .../icons/bold/court-basketball-bold.svg | 1 + backend/static/icons/bold/cow-bold.svg | 1 + backend/static/icons/bold/cowboy-hat-bold.svg | 1 + backend/static/icons/bold/cpu-bold.svg | 1 + backend/static/icons/bold/crane-bold.svg | 1 + .../static/icons/bold/crane-tower-bold.svg | 1 + .../static/icons/bold/credit-card-bold.svg | 1 + backend/static/icons/bold/cricket-bold.svg | 1 + backend/static/icons/bold/crop-bold.svg | 1 + backend/static/icons/bold/cross-bold.svg | 1 + backend/static/icons/bold/crosshair-bold.svg | 1 + .../icons/bold/crosshair-simple-bold.svg | 1 + backend/static/icons/bold/crown-bold.svg | 1 + .../static/icons/bold/crown-cross-bold.svg | 1 + .../static/icons/bold/crown-simple-bold.svg | 1 + backend/static/icons/bold/cube-bold.svg | 1 + backend/static/icons/bold/cube-focus-bold.svg | 1 + .../icons/bold/cube-transparent-bold.svg | 1 + .../static/icons/bold/currency-btc-bold.svg | 1 + .../bold/currency-circle-dollar-bold.svg | 1 + .../static/icons/bold/currency-cny-bold.svg | 1 + .../icons/bold/currency-dollar-bold.svg | 1 + .../bold/currency-dollar-simple-bold.svg | 1 + .../static/icons/bold/currency-eth-bold.svg | 1 + .../static/icons/bold/currency-eur-bold.svg | 1 + .../static/icons/bold/currency-gbp-bold.svg | 1 + .../static/icons/bold/currency-inr-bold.svg | 1 + .../static/icons/bold/currency-jpy-bold.svg | 1 + .../static/icons/bold/currency-krw-bold.svg | 1 + .../static/icons/bold/currency-kzt-bold.svg | 1 + .../static/icons/bold/currency-ngn-bold.svg | 1 + .../static/icons/bold/currency-rub-bold.svg | 1 + backend/static/icons/bold/cursor-bold.svg | 1 + .../static/icons/bold/cursor-click-bold.svg | 1 + .../static/icons/bold/cursor-text-bold.svg | 1 + backend/static/icons/bold/cylinder-bold.svg | 1 + backend/static/icons/bold/database-bold.svg | 1 + backend/static/icons/bold/desk-bold.svg | 1 + backend/static/icons/bold/desktop-bold.svg | 1 + .../static/icons/bold/desktop-tower-bold.svg | 1 + backend/static/icons/bold/detective-bold.svg | 1 + .../static/icons/bold/dev-to-logo-bold.svg | 1 + .../static/icons/bold/device-mobile-bold.svg | 1 + .../icons/bold/device-mobile-camera-bold.svg | 1 + .../icons/bold/device-mobile-slash-bold.svg | 1 + .../icons/bold/device-mobile-speaker-bold.svg | 1 + .../static/icons/bold/device-rotate-bold.svg | 1 + .../static/icons/bold/device-tablet-bold.svg | 1 + .../icons/bold/device-tablet-camera-bold.svg | 1 + .../icons/bold/device-tablet-speaker-bold.svg | 1 + backend/static/icons/bold/devices-bold.svg | 1 + backend/static/icons/bold/diamond-bold.svg | 1 + .../static/icons/bold/diamonds-four-bold.svg | 1 + backend/static/icons/bold/dice-five-bold.svg | 1 + backend/static/icons/bold/dice-four-bold.svg | 1 + backend/static/icons/bold/dice-one-bold.svg | 1 + backend/static/icons/bold/dice-six-bold.svg | 1 + backend/static/icons/bold/dice-three-bold.svg | 1 + backend/static/icons/bold/dice-two-bold.svg | 1 + backend/static/icons/bold/disc-bold.svg | 1 + backend/static/icons/bold/disco-ball-bold.svg | 1 + .../static/icons/bold/discord-logo-bold.svg | 1 + backend/static/icons/bold/divide-bold.svg | 1 + backend/static/icons/bold/dna-bold.svg | 1 + backend/static/icons/bold/dog-bold.svg | 1 + backend/static/icons/bold/door-bold.svg | 1 + backend/static/icons/bold/door-open-bold.svg | 1 + backend/static/icons/bold/dot-bold.svg | 1 + .../static/icons/bold/dot-outline-bold.svg | 1 + backend/static/icons/bold/dots-nine-bold.svg | 1 + backend/static/icons/bold/dots-six-bold.svg | 1 + .../icons/bold/dots-six-vertical-bold.svg | 1 + backend/static/icons/bold/dots-three-bold.svg | 1 + .../icons/bold/dots-three-circle-bold.svg | 1 + .../bold/dots-three-circle-vertical-bold.svg | 1 + .../icons/bold/dots-three-outline-bold.svg | 1 + .../bold/dots-three-outline-vertical-bold.svg | 1 + .../icons/bold/dots-three-vertical-bold.svg | 1 + backend/static/icons/bold/download-bold.svg | 1 + .../icons/bold/download-simple-bold.svg | 1 + backend/static/icons/bold/dress-bold.svg | 1 + backend/static/icons/bold/dresser-bold.svg | 1 + .../static/icons/bold/dribbble-logo-bold.svg | 1 + backend/static/icons/bold/drone-bold.svg | 1 + backend/static/icons/bold/drop-bold.svg | 1 + backend/static/icons/bold/drop-half-bold.svg | 1 + .../icons/bold/drop-half-bottom-bold.svg | 1 + .../static/icons/bold/drop-simple-bold.svg | 1 + backend/static/icons/bold/drop-slash-bold.svg | 1 + .../static/icons/bold/dropbox-logo-bold.svg | 1 + backend/static/icons/bold/ear-bold.svg | 1 + backend/static/icons/bold/ear-slash-bold.svg | 1 + backend/static/icons/bold/egg-bold.svg | 1 + backend/static/icons/bold/egg-crack-bold.svg | 1 + backend/static/icons/bold/eject-bold.svg | 1 + .../static/icons/bold/eject-simple-bold.svg | 1 + backend/static/icons/bold/elevator-bold.svg | 1 + backend/static/icons/bold/empty-bold.svg | 1 + backend/static/icons/bold/engine-bold.svg | 1 + backend/static/icons/bold/envelope-bold.svg | 1 + .../static/icons/bold/envelope-open-bold.svg | 1 + .../icons/bold/envelope-simple-bold.svg | 1 + .../icons/bold/envelope-simple-open-bold.svg | 1 + backend/static/icons/bold/equalizer-bold.svg | 1 + backend/static/icons/bold/equals-bold.svg | 1 + backend/static/icons/bold/eraser-bold.svg | 1 + .../static/icons/bold/escalator-down-bold.svg | 1 + .../static/icons/bold/escalator-up-bold.svg | 1 + backend/static/icons/bold/exam-bold.svg | 1 + .../icons/bold/exclamation-mark-bold.svg | 1 + backend/static/icons/bold/exclude-bold.svg | 1 + .../static/icons/bold/exclude-square-bold.svg | 1 + backend/static/icons/bold/export-bold.svg | 1 + backend/static/icons/bold/eye-bold.svg | 1 + backend/static/icons/bold/eye-closed-bold.svg | 1 + backend/static/icons/bold/eye-slash-bold.svg | 1 + backend/static/icons/bold/eyedropper-bold.svg | 1 + .../icons/bold/eyedropper-sample-bold.svg | 1 + backend/static/icons/bold/eyeglasses-bold.svg | 1 + backend/static/icons/bold/eyes-bold.svg | 1 + backend/static/icons/bold/face-mask-bold.svg | 1 + .../static/icons/bold/facebook-logo-bold.svg | 1 + backend/static/icons/bold/factory-bold.svg | 1 + backend/static/icons/bold/faders-bold.svg | 1 + .../icons/bold/faders-horizontal-bold.svg | 1 + .../icons/bold/fallout-shelter-bold.svg | 1 + backend/static/icons/bold/fan-bold.svg | 1 + backend/static/icons/bold/farm-bold.svg | 1 + .../static/icons/bold/fast-forward-bold.svg | 1 + .../icons/bold/fast-forward-circle-bold.svg | 1 + backend/static/icons/bold/feather-bold.svg | 1 + .../static/icons/bold/fediverse-logo-bold.svg | 1 + backend/static/icons/bold/figma-logo-bold.svg | 1 + .../static/icons/bold/file-archive-bold.svg | 1 + .../icons/bold/file-arrow-down-bold.svg | 1 + .../static/icons/bold/file-arrow-up-bold.svg | 1 + backend/static/icons/bold/file-audio-bold.svg | 1 + backend/static/icons/bold/file-bold.svg | 1 + backend/static/icons/bold/file-c-bold.svg | 1 + .../static/icons/bold/file-c-sharp-bold.svg | 1 + backend/static/icons/bold/file-cloud-bold.svg | 1 + backend/static/icons/bold/file-code-bold.svg | 1 + backend/static/icons/bold/file-cpp-bold.svg | 1 + backend/static/icons/bold/file-css-bold.svg | 1 + backend/static/icons/bold/file-csv-bold.svg | 1 + .../static/icons/bold/file-dashed-bold.svg | 1 + backend/static/icons/bold/file-doc-bold.svg | 1 + backend/static/icons/bold/file-html-bold.svg | 1 + backend/static/icons/bold/file-image-bold.svg | 1 + backend/static/icons/bold/file-ini-bold.svg | 1 + backend/static/icons/bold/file-jpg-bold.svg | 1 + backend/static/icons/bold/file-js-bold.svg | 1 + backend/static/icons/bold/file-jsx-bold.svg | 1 + backend/static/icons/bold/file-lock-bold.svg | 1 + .../icons/bold/file-magnifying-glass-bold.svg | 1 + backend/static/icons/bold/file-md-bold.svg | 1 + backend/static/icons/bold/file-minus-bold.svg | 1 + backend/static/icons/bold/file-pdf-bold.svg | 1 + backend/static/icons/bold/file-plus-bold.svg | 1 + backend/static/icons/bold/file-png-bold.svg | 1 + backend/static/icons/bold/file-ppt-bold.svg | 1 + backend/static/icons/bold/file-py-bold.svg | 1 + backend/static/icons/bold/file-rs-bold.svg | 1 + backend/static/icons/bold/file-sql-bold.svg | 1 + backend/static/icons/bold/file-svg-bold.svg | 1 + backend/static/icons/bold/file-text-bold.svg | 1 + backend/static/icons/bold/file-ts-bold.svg | 1 + backend/static/icons/bold/file-tsx-bold.svg | 1 + backend/static/icons/bold/file-txt-bold.svg | 1 + backend/static/icons/bold/file-video-bold.svg | 1 + backend/static/icons/bold/file-vue-bold.svg | 1 + backend/static/icons/bold/file-x-bold.svg | 1 + backend/static/icons/bold/file-xls-bold.svg | 1 + backend/static/icons/bold/file-zip-bold.svg | 1 + backend/static/icons/bold/files-bold.svg | 1 + backend/static/icons/bold/film-reel-bold.svg | 1 + .../static/icons/bold/film-script-bold.svg | 1 + backend/static/icons/bold/film-slate-bold.svg | 1 + backend/static/icons/bold/film-strip-bold.svg | 1 + .../static/icons/bold/fingerprint-bold.svg | 1 + .../icons/bold/fingerprint-simple-bold.svg | 1 + .../static/icons/bold/finn-the-human-bold.svg | 1 + backend/static/icons/bold/fire-bold.svg | 1 + .../icons/bold/fire-extinguisher-bold.svg | 1 + .../static/icons/bold/fire-simple-bold.svg | 1 + backend/static/icons/bold/fire-truck-bold.svg | 1 + backend/static/icons/bold/first-aid-bold.svg | 1 + .../static/icons/bold/first-aid-kit-bold.svg | 1 + backend/static/icons/bold/fish-bold.svg | 1 + .../static/icons/bold/fish-simple-bold.svg | 1 + .../static/icons/bold/flag-banner-bold.svg | 1 + .../icons/bold/flag-banner-fold-bold.svg | 1 + backend/static/icons/bold/flag-bold.svg | 1 + .../static/icons/bold/flag-checkered-bold.svg | 1 + .../static/icons/bold/flag-pennant-bold.svg | 1 + backend/static/icons/bold/flame-bold.svg | 1 + backend/static/icons/bold/flashlight-bold.svg | 1 + backend/static/icons/bold/flask-bold.svg | 1 + .../icons/bold/flip-horizontal-bold.svg | 1 + .../static/icons/bold/flip-vertical-bold.svg | 1 + .../icons/bold/floppy-disk-back-bold.svg | 1 + .../static/icons/bold/floppy-disk-bold.svg | 1 + backend/static/icons/bold/flow-arrow-bold.svg | 1 + backend/static/icons/bold/flower-bold.svg | 1 + .../static/icons/bold/flower-lotus-bold.svg | 1 + .../static/icons/bold/flower-tulip-bold.svg | 1 + .../static/icons/bold/flying-saucer-bold.svg | 1 + backend/static/icons/bold/folder-bold.svg | 1 + .../static/icons/bold/folder-dashed-bold.svg | 1 + .../static/icons/bold/folder-lock-bold.svg | 1 + .../static/icons/bold/folder-minus-bold.svg | 1 + .../static/icons/bold/folder-open-bold.svg | 1 + .../static/icons/bold/folder-plus-bold.svg | 1 + .../static/icons/bold/folder-simple-bold.svg | 1 + .../icons/bold/folder-simple-dashed-bold.svg | 1 + .../icons/bold/folder-simple-lock-bold.svg | 1 + .../icons/bold/folder-simple-minus-bold.svg | 1 + .../icons/bold/folder-simple-plus-bold.svg | 1 + .../icons/bold/folder-simple-star-bold.svg | 1 + .../icons/bold/folder-simple-user-bold.svg | 1 + .../static/icons/bold/folder-star-bold.svg | 1 + .../static/icons/bold/folder-user-bold.svg | 1 + backend/static/icons/bold/folders-bold.svg | 1 + backend/static/icons/bold/football-bold.svg | 1 + .../icons/bold/football-helmet-bold.svg | 1 + backend/static/icons/bold/footprints-bold.svg | 1 + backend/static/icons/bold/fork-knife-bold.svg | 1 + backend/static/icons/bold/four-k-bold.svg | 1 + .../static/icons/bold/frame-corners-bold.svg | 1 + .../static/icons/bold/framer-logo-bold.svg | 1 + backend/static/icons/bold/function-bold.svg | 1 + backend/static/icons/bold/funnel-bold.svg | 1 + .../static/icons/bold/funnel-simple-bold.svg | 1 + .../icons/bold/funnel-simple-x-bold.svg | 1 + backend/static/icons/bold/funnel-x-bold.svg | 1 + .../icons/bold/game-controller-bold.svg | 1 + backend/static/icons/bold/garage-bold.svg | 1 + backend/static/icons/bold/gas-can-bold.svg | 1 + backend/static/icons/bold/gas-pump-bold.svg | 1 + backend/static/icons/bold/gauge-bold.svg | 1 + backend/static/icons/bold/gavel-bold.svg | 1 + backend/static/icons/bold/gear-bold.svg | 1 + backend/static/icons/bold/gear-fine-bold.svg | 1 + backend/static/icons/bold/gear-six-bold.svg | 1 + .../static/icons/bold/gender-female-bold.svg | 1 + .../icons/bold/gender-intersex-bold.svg | 1 + .../static/icons/bold/gender-male-bold.svg | 1 + .../static/icons/bold/gender-neuter-bold.svg | 1 + .../icons/bold/gender-nonbinary-bold.svg | 1 + .../icons/bold/gender-transgender-bold.svg | 1 + backend/static/icons/bold/ghost-bold.svg | 1 + backend/static/icons/bold/gif-bold.svg | 1 + backend/static/icons/bold/gift-bold.svg | 1 + backend/static/icons/bold/git-branch-bold.svg | 1 + backend/static/icons/bold/git-commit-bold.svg | 1 + backend/static/icons/bold/git-diff-bold.svg | 1 + backend/static/icons/bold/git-fork-bold.svg | 1 + backend/static/icons/bold/git-merge-bold.svg | 1 + .../icons/bold/git-pull-request-bold.svg | 1 + .../static/icons/bold/github-logo-bold.svg | 1 + .../static/icons/bold/gitlab-logo-bold.svg | 1 + .../icons/bold/gitlab-logo-simple-bold.svg | 1 + backend/static/icons/bold/globe-bold.svg | 1 + .../icons/bold/globe-hemisphere-east-bold.svg | 1 + .../icons/bold/globe-hemisphere-west-bold.svg | 1 + .../static/icons/bold/globe-simple-bold.svg | 1 + .../static/icons/bold/globe-simple-x-bold.svg | 1 + .../static/icons/bold/globe-stand-bold.svg | 1 + backend/static/icons/bold/globe-x-bold.svg | 1 + backend/static/icons/bold/goggles-bold.svg | 1 + backend/static/icons/bold/golf-bold.svg | 1 + .../static/icons/bold/goodreads-logo-bold.svg | 1 + .../icons/bold/google-cardboard-logo-bold.svg | 1 + .../icons/bold/google-chrome-logo-bold.svg | 1 + .../icons/bold/google-drive-logo-bold.svg | 1 + .../static/icons/bold/google-logo-bold.svg | 1 + .../icons/bold/google-photos-logo-bold.svg | 1 + .../icons/bold/google-play-logo-bold.svg | 1 + .../icons/bold/google-podcasts-logo-bold.svg | 1 + backend/static/icons/bold/gps-bold.svg | 1 + backend/static/icons/bold/gps-fix-bold.svg | 1 + backend/static/icons/bold/gps-slash-bold.svg | 1 + backend/static/icons/bold/gradient-bold.svg | 1 + .../static/icons/bold/graduation-cap-bold.svg | 1 + backend/static/icons/bold/grains-bold.svg | 1 + .../static/icons/bold/grains-slash-bold.svg | 1 + backend/static/icons/bold/graph-bold.svg | 1 + .../static/icons/bold/graphics-card-bold.svg | 1 + .../static/icons/bold/greater-than-bold.svg | 1 + .../icons/bold/greater-than-or-equal-bold.svg | 1 + backend/static/icons/bold/grid-four-bold.svg | 1 + backend/static/icons/bold/grid-nine-bold.svg | 1 + backend/static/icons/bold/guitar-bold.svg | 1 + backend/static/icons/bold/hair-dryer-bold.svg | 1 + backend/static/icons/bold/hamburger-bold.svg | 1 + backend/static/icons/bold/hammer-bold.svg | 1 + .../icons/bold/hand-arrow-down-bold.svg | 1 + .../static/icons/bold/hand-arrow-up-bold.svg | 1 + backend/static/icons/bold/hand-bold.svg | 1 + backend/static/icons/bold/hand-coins-bold.svg | 1 + .../static/icons/bold/hand-deposit-bold.svg | 1 + backend/static/icons/bold/hand-eye-bold.svg | 1 + backend/static/icons/bold/hand-fist-bold.svg | 1 + .../static/icons/bold/hand-grabbing-bold.svg | 1 + backend/static/icons/bold/hand-heart-bold.svg | 1 + backend/static/icons/bold/hand-palm-bold.svg | 1 + backend/static/icons/bold/hand-peace-bold.svg | 1 + .../static/icons/bold/hand-pointing-bold.svg | 1 + backend/static/icons/bold/hand-soap-bold.svg | 1 + .../icons/bold/hand-swipe-left-bold.svg | 1 + .../icons/bold/hand-swipe-right-bold.svg | 1 + backend/static/icons/bold/hand-tap-bold.svg | 1 + .../static/icons/bold/hand-waving-bold.svg | 1 + .../static/icons/bold/hand-withdraw-bold.svg | 1 + backend/static/icons/bold/handbag-bold.svg | 1 + .../static/icons/bold/handbag-simple-bold.svg | 1 + .../static/icons/bold/hands-clapping-bold.svg | 1 + .../static/icons/bold/hands-praying-bold.svg | 1 + backend/static/icons/bold/handshake-bold.svg | 1 + backend/static/icons/bold/hard-drive-bold.svg | 1 + .../static/icons/bold/hard-drives-bold.svg | 1 + backend/static/icons/bold/hard-hat-bold.svg | 1 + backend/static/icons/bold/hash-bold.svg | 1 + .../static/icons/bold/hash-straight-bold.svg | 1 + .../static/icons/bold/head-circuit-bold.svg | 1 + backend/static/icons/bold/headlights-bold.svg | 1 + backend/static/icons/bold/headphones-bold.svg | 1 + backend/static/icons/bold/headset-bold.svg | 1 + backend/static/icons/bold/heart-bold.svg | 1 + .../static/icons/bold/heart-break-bold.svg | 1 + backend/static/icons/bold/heart-half-bold.svg | 1 + .../static/icons/bold/heart-straight-bold.svg | 1 + .../icons/bold/heart-straight-break-bold.svg | 1 + backend/static/icons/bold/heartbeat-bold.svg | 1 + backend/static/icons/bold/hexagon-bold.svg | 1 + .../icons/bold/high-definition-bold.svg | 1 + backend/static/icons/bold/high-heel-bold.svg | 1 + .../static/icons/bold/highlighter-bold.svg | 1 + .../icons/bold/highlighter-circle-bold.svg | 1 + backend/static/icons/bold/hockey-bold.svg | 1 + backend/static/icons/bold/hoodie-bold.svg | 1 + backend/static/icons/bold/horse-bold.svg | 1 + backend/static/icons/bold/hospital-bold.svg | 1 + backend/static/icons/bold/hourglass-bold.svg | 1 + .../static/icons/bold/hourglass-high-bold.svg | 1 + .../static/icons/bold/hourglass-low-bold.svg | 1 + .../icons/bold/hourglass-medium-bold.svg | 1 + .../icons/bold/hourglass-simple-bold.svg | 1 + .../icons/bold/hourglass-simple-high-bold.svg | 1 + .../icons/bold/hourglass-simple-low-bold.svg | 1 + .../bold/hourglass-simple-medium-bold.svg | 1 + backend/static/icons/bold/house-bold.svg | 1 + backend/static/icons/bold/house-line-bold.svg | 1 + .../static/icons/bold/house-simple-bold.svg | 1 + backend/static/icons/bold/hurricane-bold.svg | 1 + backend/static/icons/bold/ice-cream-bold.svg | 1 + .../icons/bold/identification-badge-bold.svg | 1 + .../icons/bold/identification-card-bold.svg | 1 + backend/static/icons/bold/image-bold.svg | 1 + .../static/icons/bold/image-broken-bold.svg | 1 + .../static/icons/bold/image-square-bold.svg | 1 + backend/static/icons/bold/images-bold.svg | 1 + .../static/icons/bold/images-square-bold.svg | 1 + backend/static/icons/bold/infinity-bold.svg | 1 + backend/static/icons/bold/info-bold.svg | 1 + .../static/icons/bold/instagram-logo-bold.svg | 1 + backend/static/icons/bold/intersect-bold.svg | 1 + .../icons/bold/intersect-square-bold.svg | 1 + .../icons/bold/intersect-three-bold.svg | 1 + .../static/icons/bold/intersection-bold.svg | 1 + backend/static/icons/bold/invoice-bold.svg | 1 + backend/static/icons/bold/island-bold.svg | 1 + backend/static/icons/bold/jar-bold.svg | 1 + backend/static/icons/bold/jar-label-bold.svg | 1 + backend/static/icons/bold/jeep-bold.svg | 1 + backend/static/icons/bold/joystick-bold.svg | 1 + backend/static/icons/bold/kanban-bold.svg | 1 + backend/static/icons/bold/key-bold.svg | 1 + backend/static/icons/bold/key-return-bold.svg | 1 + backend/static/icons/bold/keyboard-bold.svg | 1 + backend/static/icons/bold/keyhole-bold.svg | 1 + backend/static/icons/bold/knife-bold.svg | 1 + backend/static/icons/bold/ladder-bold.svg | 1 + .../static/icons/bold/ladder-simple-bold.svg | 1 + backend/static/icons/bold/lamp-bold.svg | 1 + .../static/icons/bold/lamp-pendant-bold.svg | 1 + backend/static/icons/bold/laptop-bold.svg | 1 + backend/static/icons/bold/lasso-bold.svg | 1 + .../static/icons/bold/lastfm-logo-bold.svg | 1 + backend/static/icons/bold/layout-bold.svg | 1 + backend/static/icons/bold/leaf-bold.svg | 1 + backend/static/icons/bold/lectern-bold.svg | 1 + backend/static/icons/bold/lego-bold.svg | 1 + .../static/icons/bold/lego-smiley-bold.svg | 1 + backend/static/icons/bold/less-than-bold.svg | 1 + .../icons/bold/less-than-or-equal-bold.svg | 1 + .../icons/bold/letter-circle-h-bold.svg | 1 + .../icons/bold/letter-circle-p-bold.svg | 1 + .../icons/bold/letter-circle-v-bold.svg | 1 + backend/static/icons/bold/lifebuoy-bold.svg | 1 + backend/static/icons/bold/lightbulb-bold.svg | 1 + .../icons/bold/lightbulb-filament-bold.svg | 1 + backend/static/icons/bold/lighthouse-bold.svg | 1 + .../static/icons/bold/lightning-a-bold.svg | 1 + backend/static/icons/bold/lightning-bold.svg | 1 + .../icons/bold/lightning-slash-bold.svg | 1 + .../static/icons/bold/line-segment-bold.svg | 1 + .../static/icons/bold/line-segments-bold.svg | 1 + .../static/icons/bold/line-vertical-bold.svg | 1 + backend/static/icons/bold/link-bold.svg | 1 + backend/static/icons/bold/link-break-bold.svg | 1 + .../static/icons/bold/link-simple-bold.svg | 1 + .../icons/bold/link-simple-break-bold.svg | 1 + .../bold/link-simple-horizontal-bold.svg | 1 + .../link-simple-horizontal-break-bold.svg | 1 + .../static/icons/bold/linkedin-logo-bold.svg | 1 + .../static/icons/bold/linktree-logo-bold.svg | 1 + backend/static/icons/bold/linux-logo-bold.svg | 1 + backend/static/icons/bold/list-bold.svg | 1 + .../static/icons/bold/list-bullets-bold.svg | 1 + .../static/icons/bold/list-checks-bold.svg | 1 + .../static/icons/bold/list-dashes-bold.svg | 1 + backend/static/icons/bold/list-heart-bold.svg | 1 + .../icons/bold/list-magnifying-glass-bold.svg | 1 + .../static/icons/bold/list-numbers-bold.svg | 1 + backend/static/icons/bold/list-plus-bold.svg | 1 + backend/static/icons/bold/list-star-bold.svg | 1 + backend/static/icons/bold/lock-bold.svg | 1 + backend/static/icons/bold/lock-key-bold.svg | 1 + .../static/icons/bold/lock-key-open-bold.svg | 1 + .../static/icons/bold/lock-laminated-bold.svg | 1 + .../icons/bold/lock-laminated-open-bold.svg | 1 + backend/static/icons/bold/lock-open-bold.svg | 1 + .../static/icons/bold/lock-simple-bold.svg | 1 + .../icons/bold/lock-simple-open-bold.svg | 1 + backend/static/icons/bold/lockers-bold.svg | 1 + backend/static/icons/bold/log-bold.svg | 1 + backend/static/icons/bold/magic-wand-bold.svg | 1 + backend/static/icons/bold/magnet-bold.svg | 1 + .../icons/bold/magnet-straight-bold.svg | 1 + .../icons/bold/magnifying-glass-bold.svg | 1 + .../bold/magnifying-glass-minus-bold.svg | 1 + .../icons/bold/magnifying-glass-plus-bold.svg | 1 + backend/static/icons/bold/mailbox-bold.svg | 1 + .../static/icons/bold/map-pin-area-bold.svg | 1 + backend/static/icons/bold/map-pin-bold.svg | 1 + .../static/icons/bold/map-pin-line-bold.svg | 1 + .../static/icons/bold/map-pin-plus-bold.svg | 1 + .../icons/bold/map-pin-simple-area-bold.svg | 1 + .../static/icons/bold/map-pin-simple-bold.svg | 1 + .../icons/bold/map-pin-simple-line-bold.svg | 1 + .../static/icons/bold/map-trifold-bold.svg | 1 + .../static/icons/bold/markdown-logo-bold.svg | 1 + .../static/icons/bold/marker-circle-bold.svg | 1 + backend/static/icons/bold/martini-bold.svg | 1 + backend/static/icons/bold/mask-happy-bold.svg | 1 + backend/static/icons/bold/mask-sad-bold.svg | 1 + .../static/icons/bold/mastodon-logo-bold.svg | 1 + .../icons/bold/math-operations-bold.svg | 1 + .../static/icons/bold/matrix-logo-bold.svg | 1 + backend/static/icons/bold/medal-bold.svg | 1 + .../static/icons/bold/medal-military-bold.svg | 1 + .../static/icons/bold/medium-logo-bold.svg | 1 + backend/static/icons/bold/megaphone-bold.svg | 1 + .../icons/bold/megaphone-simple-bold.svg | 1 + backend/static/icons/bold/member-of-bold.svg | 1 + backend/static/icons/bold/memory-bold.svg | 1 + .../static/icons/bold/messenger-logo-bold.svg | 1 + backend/static/icons/bold/meta-logo-bold.svg | 1 + backend/static/icons/bold/meteor-bold.svg | 1 + backend/static/icons/bold/metronome-bold.svg | 1 + backend/static/icons/bold/microphone-bold.svg | 1 + .../icons/bold/microphone-slash-bold.svg | 1 + .../icons/bold/microphone-stage-bold.svg | 1 + backend/static/icons/bold/microscope-bold.svg | 1 + .../icons/bold/microsoft-excel-logo-bold.svg | 1 + .../bold/microsoft-outlook-logo-bold.svg | 1 + .../bold/microsoft-powerpoint-logo-bold.svg | 1 + .../icons/bold/microsoft-teams-logo-bold.svg | 1 + .../icons/bold/microsoft-word-logo-bold.svg | 1 + backend/static/icons/bold/minus-bold.svg | 1 + .../static/icons/bold/minus-circle-bold.svg | 1 + .../static/icons/bold/minus-square-bold.svg | 1 + backend/static/icons/bold/money-bold.svg | 1 + backend/static/icons/bold/money-wavy-bold.svg | 1 + .../icons/bold/monitor-arrow-up-bold.svg | 1 + backend/static/icons/bold/monitor-bold.svg | 1 + .../static/icons/bold/monitor-play-bold.svg | 1 + backend/static/icons/bold/moon-bold.svg | 1 + backend/static/icons/bold/moon-stars-bold.svg | 1 + backend/static/icons/bold/moped-bold.svg | 1 + .../static/icons/bold/moped-front-bold.svg | 1 + backend/static/icons/bold/mosque-bold.svg | 1 + backend/static/icons/bold/motorcycle-bold.svg | 1 + backend/static/icons/bold/mountains-bold.svg | 1 + backend/static/icons/bold/mouse-bold.svg | 1 + .../icons/bold/mouse-left-click-bold.svg | 1 + .../icons/bold/mouse-middle-click-bold.svg | 1 + .../icons/bold/mouse-right-click-bold.svg | 1 + .../static/icons/bold/mouse-scroll-bold.svg | 1 + .../static/icons/bold/mouse-simple-bold.svg | 1 + backend/static/icons/bold/music-note-bold.svg | 1 + .../icons/bold/music-note-simple-bold.svg | 1 + .../static/icons/bold/music-notes-bold.svg | 1 + .../icons/bold/music-notes-minus-bold.svg | 1 + .../icons/bold/music-notes-plus-bold.svg | 1 + .../icons/bold/music-notes-simple-bold.svg | 1 + .../icons/bold/navigation-arrow-bold.svg | 1 + backend/static/icons/bold/needle-bold.svg | 1 + backend/static/icons/bold/network-bold.svg | 1 + .../static/icons/bold/network-slash-bold.svg | 1 + backend/static/icons/bold/network-x-bold.svg | 1 + backend/static/icons/bold/newspaper-bold.svg | 1 + .../icons/bold/newspaper-clipping-bold.svg | 1 + backend/static/icons/bold/not-equals-bold.svg | 1 + .../static/icons/bold/not-member-of-bold.svg | 1 + .../static/icons/bold/not-subset-of-bold.svg | 1 + .../icons/bold/not-superset-of-bold.svg | 1 + backend/static/icons/bold/notches-bold.svg | 1 + backend/static/icons/bold/note-blank-bold.svg | 1 + backend/static/icons/bold/note-bold.svg | 1 + .../static/icons/bold/note-pencil-bold.svg | 1 + backend/static/icons/bold/notebook-bold.svg | 1 + backend/static/icons/bold/notepad-bold.svg | 1 + .../static/icons/bold/notification-bold.svg | 1 + .../static/icons/bold/notion-logo-bold.svg | 1 + .../static/icons/bold/nuclear-plant-bold.svg | 1 + .../icons/bold/number-circle-eight-bold.svg | 1 + .../icons/bold/number-circle-five-bold.svg | 1 + .../icons/bold/number-circle-four-bold.svg | 1 + .../icons/bold/number-circle-nine-bold.svg | 1 + .../icons/bold/number-circle-one-bold.svg | 1 + .../icons/bold/number-circle-seven-bold.svg | 1 + .../icons/bold/number-circle-six-bold.svg | 1 + .../icons/bold/number-circle-three-bold.svg | 1 + .../icons/bold/number-circle-two-bold.svg | 1 + .../icons/bold/number-circle-zero-bold.svg | 1 + .../static/icons/bold/number-eight-bold.svg | 1 + .../static/icons/bold/number-five-bold.svg | 1 + .../static/icons/bold/number-four-bold.svg | 1 + .../static/icons/bold/number-nine-bold.svg | 1 + backend/static/icons/bold/number-one-bold.svg | 1 + .../static/icons/bold/number-seven-bold.svg | 1 + backend/static/icons/bold/number-six-bold.svg | 1 + .../icons/bold/number-square-eight-bold.svg | 1 + .../icons/bold/number-square-five-bold.svg | 1 + .../icons/bold/number-square-four-bold.svg | 1 + .../icons/bold/number-square-nine-bold.svg | 1 + .../icons/bold/number-square-one-bold.svg | 1 + .../icons/bold/number-square-seven-bold.svg | 1 + .../icons/bold/number-square-six-bold.svg | 1 + .../icons/bold/number-square-three-bold.svg | 1 + .../icons/bold/number-square-two-bold.svg | 1 + .../icons/bold/number-square-zero-bold.svg | 1 + .../static/icons/bold/number-three-bold.svg | 1 + backend/static/icons/bold/number-two-bold.svg | 1 + .../static/icons/bold/number-zero-bold.svg | 1 + backend/static/icons/bold/numpad-bold.svg | 1 + backend/static/icons/bold/nut-bold.svg | 1 + .../static/icons/bold/ny-times-logo-bold.svg | 1 + backend/static/icons/bold/octagon-bold.svg | 1 + .../static/icons/bold/office-chair-bold.svg | 1 + backend/static/icons/bold/onigiri-bold.svg | 1 + .../static/icons/bold/open-ai-logo-bold.svg | 1 + backend/static/icons/bold/option-bold.svg | 1 + backend/static/icons/bold/orange-bold.svg | 1 + .../static/icons/bold/orange-slice-bold.svg | 1 + backend/static/icons/bold/oven-bold.svg | 1 + backend/static/icons/bold/package-bold.svg | 1 + .../static/icons/bold/paint-brush-bold.svg | 1 + .../icons/bold/paint-brush-broad-bold.svg | 1 + .../icons/bold/paint-brush-household-bold.svg | 1 + .../static/icons/bold/paint-bucket-bold.svg | 1 + .../static/icons/bold/paint-roller-bold.svg | 1 + backend/static/icons/bold/palette-bold.svg | 1 + backend/static/icons/bold/panorama-bold.svg | 1 + backend/static/icons/bold/pants-bold.svg | 1 + .../static/icons/bold/paper-plane-bold.svg | 1 + .../icons/bold/paper-plane-right-bold.svg | 1 + .../icons/bold/paper-plane-tilt-bold.svg | 1 + backend/static/icons/bold/paperclip-bold.svg | 1 + .../icons/bold/paperclip-horizontal-bold.svg | 1 + backend/static/icons/bold/parachute-bold.svg | 1 + backend/static/icons/bold/paragraph-bold.svg | 1 + .../static/icons/bold/parallelogram-bold.svg | 1 + backend/static/icons/bold/park-bold.svg | 1 + backend/static/icons/bold/password-bold.svg | 1 + backend/static/icons/bold/path-bold.svg | 1 + .../static/icons/bold/patreon-logo-bold.svg | 1 + backend/static/icons/bold/pause-bold.svg | 1 + .../static/icons/bold/pause-circle-bold.svg | 1 + backend/static/icons/bold/paw-print-bold.svg | 1 + .../static/icons/bold/paypal-logo-bold.svg | 1 + backend/static/icons/bold/peace-bold.svg | 1 + backend/static/icons/bold/pen-bold.svg | 1 + backend/static/icons/bold/pen-nib-bold.svg | 1 + .../icons/bold/pen-nib-straight-bold.svg | 1 + backend/static/icons/bold/pencil-bold.svg | 1 + .../static/icons/bold/pencil-circle-bold.svg | 1 + .../static/icons/bold/pencil-line-bold.svg | 1 + .../static/icons/bold/pencil-ruler-bold.svg | 1 + .../static/icons/bold/pencil-simple-bold.svg | 1 + .../icons/bold/pencil-simple-line-bold.svg | 1 + .../icons/bold/pencil-simple-slash-bold.svg | 1 + .../static/icons/bold/pencil-slash-bold.svg | 1 + backend/static/icons/bold/pentagon-bold.svg | 1 + backend/static/icons/bold/pentagram-bold.svg | 1 + backend/static/icons/bold/pepper-bold.svg | 1 + backend/static/icons/bold/percent-bold.svg | 1 + .../icons/bold/person-arms-spread-bold.svg | 1 + backend/static/icons/bold/person-bold.svg | 1 + .../icons/bold/person-simple-bike-bold.svg | 1 + .../static/icons/bold/person-simple-bold.svg | 1 + .../icons/bold/person-simple-circle-bold.svg | 1 + .../icons/bold/person-simple-hike-bold.svg | 1 + .../icons/bold/person-simple-run-bold.svg | 1 + .../icons/bold/person-simple-ski-bold.svg | 1 + .../bold/person-simple-snowboard-bold.svg | 1 + .../icons/bold/person-simple-swim-bold.svg | 1 + .../icons/bold/person-simple-tai-chi-bold.svg | 1 + .../icons/bold/person-simple-throw-bold.svg | 1 + .../icons/bold/person-simple-walk-bold.svg | 1 + .../static/icons/bold/perspective-bold.svg | 1 + backend/static/icons/bold/phone-bold.svg | 1 + backend/static/icons/bold/phone-call-bold.svg | 1 + .../icons/bold/phone-disconnect-bold.svg | 1 + .../static/icons/bold/phone-incoming-bold.svg | 1 + backend/static/icons/bold/phone-list-bold.svg | 1 + .../static/icons/bold/phone-outgoing-bold.svg | 1 + .../static/icons/bold/phone-pause-bold.svg | 1 + backend/static/icons/bold/phone-plus-bold.svg | 1 + .../static/icons/bold/phone-slash-bold.svg | 1 + .../static/icons/bold/phone-transfer-bold.svg | 1 + backend/static/icons/bold/phone-x-bold.svg | 1 + .../static/icons/bold/phosphor-logo-bold.svg | 1 + backend/static/icons/bold/pi-bold.svg | 1 + backend/static/icons/bold/piano-keys-bold.svg | 1 + .../static/icons/bold/picnic-table-bold.svg | 1 + .../icons/bold/picture-in-picture-bold.svg | 1 + backend/static/icons/bold/piggy-bank-bold.svg | 1 + backend/static/icons/bold/pill-bold.svg | 1 + backend/static/icons/bold/ping-pong-bold.svg | 1 + backend/static/icons/bold/pint-glass-bold.svg | 1 + .../static/icons/bold/pinterest-logo-bold.svg | 1 + backend/static/icons/bold/pinwheel-bold.svg | 1 + backend/static/icons/bold/pipe-bold.svg | 1 + .../static/icons/bold/pipe-wrench-bold.svg | 1 + backend/static/icons/bold/pix-logo-bold.svg | 1 + backend/static/icons/bold/pizza-bold.svg | 1 + .../static/icons/bold/placeholder-bold.svg | 1 + backend/static/icons/bold/planet-bold.svg | 1 + backend/static/icons/bold/plant-bold.svg | 1 + backend/static/icons/bold/play-bold.svg | 1 + .../static/icons/bold/play-circle-bold.svg | 1 + backend/static/icons/bold/play-pause-bold.svg | 1 + backend/static/icons/bold/playlist-bold.svg | 1 + backend/static/icons/bold/plug-bold.svg | 1 + .../static/icons/bold/plug-charging-bold.svg | 1 + backend/static/icons/bold/plugs-bold.svg | 1 + .../icons/bold/plugs-connected-bold.svg | 1 + backend/static/icons/bold/plus-bold.svg | 1 + .../static/icons/bold/plus-circle-bold.svg | 1 + backend/static/icons/bold/plus-minus-bold.svg | 1 + .../static/icons/bold/plus-square-bold.svg | 1 + backend/static/icons/bold/poker-chip-bold.svg | 1 + backend/static/icons/bold/police-car-bold.svg | 1 + backend/static/icons/bold/polygon-bold.svg | 1 + backend/static/icons/bold/popcorn-bold.svg | 1 + backend/static/icons/bold/popsicle-bold.svg | 1 + .../static/icons/bold/potted-plant-bold.svg | 1 + backend/static/icons/bold/power-bold.svg | 1 + .../static/icons/bold/prescription-bold.svg | 1 + .../static/icons/bold/presentation-bold.svg | 1 + .../icons/bold/presentation-chart-bold.svg | 1 + backend/static/icons/bold/printer-bold.svg | 1 + backend/static/icons/bold/prohibit-bold.svg | 1 + .../static/icons/bold/prohibit-inset-bold.svg | 1 + .../icons/bold/projector-screen-bold.svg | 1 + .../bold/projector-screen-chart-bold.svg | 1 + backend/static/icons/bold/pulse-bold.svg | 1 + backend/static/icons/bold/push-pin-bold.svg | 1 + .../icons/bold/push-pin-simple-bold.svg | 1 + .../icons/bold/push-pin-simple-slash-bold.svg | 1 + .../static/icons/bold/push-pin-slash-bold.svg | 1 + .../static/icons/bold/puzzle-piece-bold.svg | 1 + backend/static/icons/bold/qr-code-bold.svg | 1 + backend/static/icons/bold/question-bold.svg | 1 + .../static/icons/bold/question-mark-bold.svg | 1 + backend/static/icons/bold/queue-bold.svg | 1 + backend/static/icons/bold/quotes-bold.svg | 1 + backend/static/icons/bold/rabbit-bold.svg | 1 + backend/static/icons/bold/racquet-bold.svg | 1 + backend/static/icons/bold/radical-bold.svg | 1 + backend/static/icons/bold/radio-bold.svg | 1 + .../static/icons/bold/radio-button-bold.svg | 1 + .../static/icons/bold/radioactive-bold.svg | 1 + backend/static/icons/bold/rainbow-bold.svg | 1 + .../static/icons/bold/rainbow-cloud-bold.svg | 1 + backend/static/icons/bold/ranking-bold.svg | 1 + .../static/icons/bold/read-cv-logo-bold.svg | 1 + backend/static/icons/bold/receipt-bold.svg | 1 + backend/static/icons/bold/receipt-x-bold.svg | 1 + backend/static/icons/bold/record-bold.svg | 1 + backend/static/icons/bold/rectangle-bold.svg | 1 + .../icons/bold/rectangle-dashed-bold.svg | 1 + backend/static/icons/bold/recycle-bold.svg | 1 + .../static/icons/bold/reddit-logo-bold.svg | 1 + backend/static/icons/bold/repeat-bold.svg | 1 + .../static/icons/bold/repeat-once-bold.svg | 1 + .../static/icons/bold/replit-logo-bold.svg | 1 + backend/static/icons/bold/resize-bold.svg | 1 + backend/static/icons/bold/rewind-bold.svg | 1 + .../static/icons/bold/rewind-circle-bold.svg | 1 + .../static/icons/bold/road-horizon-bold.svg | 1 + backend/static/icons/bold/robot-bold.svg | 1 + backend/static/icons/bold/rocket-bold.svg | 1 + .../static/icons/bold/rocket-launch-bold.svg | 1 + backend/static/icons/bold/rows-bold.svg | 1 + .../icons/bold/rows-plus-bottom-bold.svg | 1 + .../static/icons/bold/rows-plus-top-bold.svg | 1 + backend/static/icons/bold/rss-bold.svg | 1 + backend/static/icons/bold/rss-simple-bold.svg | 1 + backend/static/icons/bold/rug-bold.svg | 1 + backend/static/icons/bold/ruler-bold.svg | 1 + backend/static/icons/bold/sailboat-bold.svg | 1 + backend/static/icons/bold/scales-bold.svg | 1 + backend/static/icons/bold/scan-bold.svg | 1 + .../static/icons/bold/scan-smiley-bold.svg | 1 + backend/static/icons/bold/scissors-bold.svg | 1 + backend/static/icons/bold/scooter-bold.svg | 1 + backend/static/icons/bold/screencast-bold.svg | 1 + .../static/icons/bold/screwdriver-bold.svg | 1 + backend/static/icons/bold/scribble-bold.svg | 1 + .../static/icons/bold/scribble-loop-bold.svg | 1 + backend/static/icons/bold/scroll-bold.svg | 1 + backend/static/icons/bold/seal-bold.svg | 1 + backend/static/icons/bold/seal-check-bold.svg | 1 + .../static/icons/bold/seal-percent-bold.svg | 1 + .../static/icons/bold/seal-question-bold.svg | 1 + .../static/icons/bold/seal-warning-bold.svg | 1 + backend/static/icons/bold/seat-bold.svg | 1 + backend/static/icons/bold/seatbelt-bold.svg | 1 + .../icons/bold/security-camera-bold.svg | 1 + .../static/icons/bold/selection-all-bold.svg | 1 + .../icons/bold/selection-background-bold.svg | 1 + backend/static/icons/bold/selection-bold.svg | 1 + .../icons/bold/selection-foreground-bold.svg | 1 + .../icons/bold/selection-inverse-bold.svg | 1 + .../static/icons/bold/selection-plus-bold.svg | 1 + .../icons/bold/selection-slash-bold.svg | 1 + backend/static/icons/bold/shapes-bold.svg | 1 + backend/static/icons/bold/share-bold.svg | 1 + backend/static/icons/bold/share-fat-bold.svg | 1 + .../static/icons/bold/share-network-bold.svg | 1 + backend/static/icons/bold/shield-bold.svg | 1 + .../static/icons/bold/shield-check-bold.svg | 1 + .../icons/bold/shield-checkered-bold.svg | 1 + .../static/icons/bold/shield-chevron-bold.svg | 1 + .../static/icons/bold/shield-plus-bold.svg | 1 + .../static/icons/bold/shield-slash-bold.svg | 1 + .../static/icons/bold/shield-star-bold.svg | 1 + .../static/icons/bold/shield-warning-bold.svg | 1 + .../icons/bold/shipping-container-bold.svg | 1 + .../static/icons/bold/shirt-folded-bold.svg | 1 + .../static/icons/bold/shooting-star-bold.svg | 1 + .../static/icons/bold/shopping-bag-bold.svg | 1 + .../icons/bold/shopping-bag-open-bold.svg | 1 + .../static/icons/bold/shopping-cart-bold.svg | 1 + .../icons/bold/shopping-cart-simple-bold.svg | 1 + backend/static/icons/bold/shovel-bold.svg | 1 + backend/static/icons/bold/shower-bold.svg | 1 + backend/static/icons/bold/shrimp-bold.svg | 1 + .../icons/bold/shuffle-angular-bold.svg | 1 + backend/static/icons/bold/shuffle-bold.svg | 1 + .../static/icons/bold/shuffle-simple-bold.svg | 1 + backend/static/icons/bold/sidebar-bold.svg | 1 + .../static/icons/bold/sidebar-simple-bold.svg | 1 + backend/static/icons/bold/sigma-bold.svg | 1 + backend/static/icons/bold/sign-in-bold.svg | 1 + backend/static/icons/bold/sign-out-bold.svg | 1 + backend/static/icons/bold/signature-bold.svg | 1 + backend/static/icons/bold/signpost-bold.svg | 1 + backend/static/icons/bold/sim-card-bold.svg | 1 + backend/static/icons/bold/siren-bold.svg | 1 + .../static/icons/bold/sketch-logo-bold.svg | 1 + backend/static/icons/bold/skip-back-bold.svg | 1 + .../icons/bold/skip-back-circle-bold.svg | 1 + .../static/icons/bold/skip-forward-bold.svg | 1 + .../icons/bold/skip-forward-circle-bold.svg | 1 + backend/static/icons/bold/skull-bold.svg | 1 + backend/static/icons/bold/skype-logo-bold.svg | 1 + backend/static/icons/bold/slack-logo-bold.svg | 1 + backend/static/icons/bold/sliders-bold.svg | 1 + .../icons/bold/sliders-horizontal-bold.svg | 1 + backend/static/icons/bold/slideshow-bold.svg | 1 + .../static/icons/bold/smiley-angry-bold.svg | 1 + .../static/icons/bold/smiley-blank-bold.svg | 1 + backend/static/icons/bold/smiley-bold.svg | 1 + backend/static/icons/bold/smiley-meh-bold.svg | 1 + .../static/icons/bold/smiley-melting-bold.svg | 1 + .../static/icons/bold/smiley-nervous-bold.svg | 1 + backend/static/icons/bold/smiley-sad-bold.svg | 1 + .../static/icons/bold/smiley-sticker-bold.svg | 1 + .../static/icons/bold/smiley-wink-bold.svg | 1 + .../static/icons/bold/smiley-x-eyes-bold.svg | 1 + .../static/icons/bold/snapchat-logo-bold.svg | 1 + backend/static/icons/bold/sneaker-bold.svg | 1 + .../static/icons/bold/sneaker-move-bold.svg | 1 + backend/static/icons/bold/snowflake-bold.svg | 1 + .../static/icons/bold/soccer-ball-bold.svg | 1 + backend/static/icons/bold/sock-bold.svg | 1 + .../static/icons/bold/solar-panel-bold.svg | 1 + backend/static/icons/bold/solar-roof-bold.svg | 1 + .../static/icons/bold/sort-ascending-bold.svg | 1 + .../icons/bold/sort-descending-bold.svg | 1 + .../icons/bold/soundcloud-logo-bold.svg | 1 + backend/static/icons/bold/spade-bold.svg | 1 + backend/static/icons/bold/sparkle-bold.svg | 1 + .../static/icons/bold/speaker-hifi-bold.svg | 1 + .../static/icons/bold/speaker-high-bold.svg | 1 + .../static/icons/bold/speaker-low-bold.svg | 1 + .../static/icons/bold/speaker-none-bold.svg | 1 + .../icons/bold/speaker-simple-high-bold.svg | 1 + .../icons/bold/speaker-simple-low-bold.svg | 1 + .../icons/bold/speaker-simple-none-bold.svg | 1 + .../icons/bold/speaker-simple-slash-bold.svg | 1 + .../icons/bold/speaker-simple-x-bold.svg | 1 + .../static/icons/bold/speaker-slash-bold.svg | 1 + backend/static/icons/bold/speaker-x-bold.svg | 1 + .../static/icons/bold/speedometer-bold.svg | 1 + backend/static/icons/bold/sphere-bold.svg | 1 + .../static/icons/bold/spinner-ball-bold.svg | 1 + backend/static/icons/bold/spinner-bold.svg | 1 + .../static/icons/bold/spinner-gap-bold.svg | 1 + backend/static/icons/bold/spiral-bold.svg | 1 + .../icons/bold/split-horizontal-bold.svg | 1 + .../static/icons/bold/split-vertical-bold.svg | 1 + .../static/icons/bold/spotify-logo-bold.svg | 1 + .../static/icons/bold/spray-bottle-bold.svg | 1 + backend/static/icons/bold/square-bold.svg | 1 + .../static/icons/bold/square-half-bold.svg | 1 + .../icons/bold/square-half-bottom-bold.svg | 1 + .../static/icons/bold/square-logo-bold.svg | 1 + .../bold/square-split-horizontal-bold.svg | 1 + .../icons/bold/square-split-vertical-bold.svg | 1 + .../static/icons/bold/squares-four-bold.svg | 1 + backend/static/icons/bold/stack-bold.svg | 1 + .../static/icons/bold/stack-minus-bold.svg | 1 + .../icons/bold/stack-overflow-logo-bold.svg | 1 + backend/static/icons/bold/stack-plus-bold.svg | 1 + .../static/icons/bold/stack-simple-bold.svg | 1 + backend/static/icons/bold/stairs-bold.svg | 1 + backend/static/icons/bold/stamp-bold.svg | 1 + .../icons/bold/standard-definition-bold.svg | 1 + .../icons/bold/star-and-crescent-bold.svg | 1 + backend/static/icons/bold/star-bold.svg | 1 + backend/static/icons/bold/star-four-bold.svg | 1 + backend/static/icons/bold/star-half-bold.svg | 1 + .../static/icons/bold/star-of-david-bold.svg | 1 + backend/static/icons/bold/steam-logo-bold.svg | 1 + .../static/icons/bold/steering-wheel-bold.svg | 1 + backend/static/icons/bold/steps-bold.svg | 1 + .../static/icons/bold/stethoscope-bold.svg | 1 + backend/static/icons/bold/sticker-bold.svg | 1 + backend/static/icons/bold/stool-bold.svg | 1 + backend/static/icons/bold/stop-bold.svg | 1 + .../static/icons/bold/stop-circle-bold.svg | 1 + backend/static/icons/bold/storefront-bold.svg | 1 + backend/static/icons/bold/strategy-bold.svg | 1 + .../static/icons/bold/stripe-logo-bold.svg | 1 + backend/static/icons/bold/student-bold.svg | 1 + backend/static/icons/bold/subset-of-bold.svg | 1 + .../icons/bold/subset-proper-of-bold.svg | 1 + backend/static/icons/bold/subtitles-bold.svg | 1 + .../icons/bold/subtitles-slash-bold.svg | 1 + backend/static/icons/bold/subtract-bold.svg | 1 + .../icons/bold/subtract-square-bold.svg | 1 + backend/static/icons/bold/subway-bold.svg | 1 + backend/static/icons/bold/suitcase-bold.svg | 1 + .../icons/bold/suitcase-rolling-bold.svg | 1 + .../icons/bold/suitcase-simple-bold.svg | 1 + backend/static/icons/bold/sun-bold.svg | 1 + backend/static/icons/bold/sun-dim-bold.svg | 1 + .../static/icons/bold/sun-horizon-bold.svg | 1 + backend/static/icons/bold/sunglasses-bold.svg | 1 + .../static/icons/bold/superset-of-bold.svg | 1 + .../icons/bold/superset-proper-of-bold.svg | 1 + backend/static/icons/bold/swap-bold.svg | 1 + backend/static/icons/bold/swatches-bold.svg | 1 + .../static/icons/bold/swimming-pool-bold.svg | 1 + backend/static/icons/bold/sword-bold.svg | 1 + backend/static/icons/bold/synagogue-bold.svg | 1 + backend/static/icons/bold/syringe-bold.svg | 1 + backend/static/icons/bold/t-shirt-bold.svg | 1 + backend/static/icons/bold/table-bold.svg | 1 + backend/static/icons/bold/tabs-bold.svg | 1 + backend/static/icons/bold/tag-bold.svg | 1 + .../static/icons/bold/tag-chevron-bold.svg | 1 + backend/static/icons/bold/tag-simple-bold.svg | 1 + backend/static/icons/bold/target-bold.svg | 1 + backend/static/icons/bold/taxi-bold.svg | 1 + backend/static/icons/bold/tea-bag-bold.svg | 1 + .../static/icons/bold/telegram-logo-bold.svg | 1 + backend/static/icons/bold/television-bold.svg | 1 + .../icons/bold/television-simple-bold.svg | 1 + .../static/icons/bold/tennis-ball-bold.svg | 1 + backend/static/icons/bold/tent-bold.svg | 1 + backend/static/icons/bold/terminal-bold.svg | 1 + .../icons/bold/terminal-window-bold.svg | 1 + backend/static/icons/bold/test-tube-bold.svg | 1 + .../icons/bold/text-a-underline-bold.svg | 1 + backend/static/icons/bold/text-aa-bold.svg | 1 + .../icons/bold/text-align-center-bold.svg | 1 + .../icons/bold/text-align-justify-bold.svg | 1 + .../icons/bold/text-align-left-bold.svg | 1 + .../icons/bold/text-align-right-bold.svg | 1 + backend/static/icons/bold/text-b-bold.svg | 1 + .../static/icons/bold/text-columns-bold.svg | 1 + backend/static/icons/bold/text-h-bold.svg | 1 + .../static/icons/bold/text-h-five-bold.svg | 1 + .../static/icons/bold/text-h-four-bold.svg | 1 + backend/static/icons/bold/text-h-one-bold.svg | 1 + backend/static/icons/bold/text-h-six-bold.svg | 1 + .../static/icons/bold/text-h-three-bold.svg | 1 + backend/static/icons/bold/text-h-two-bold.svg | 1 + .../static/icons/bold/text-indent-bold.svg | 1 + .../static/icons/bold/text-italic-bold.svg | 1 + .../static/icons/bold/text-outdent-bold.svg | 1 + .../icons/bold/text-strikethrough-bold.svg | 1 + .../static/icons/bold/text-subscript-bold.svg | 1 + .../icons/bold/text-superscript-bold.svg | 1 + backend/static/icons/bold/text-t-bold.svg | 1 + .../static/icons/bold/text-t-slash-bold.svg | 1 + .../static/icons/bold/text-underline-bold.svg | 1 + backend/static/icons/bold/textbox-bold.svg | 1 + .../static/icons/bold/thermometer-bold.svg | 1 + .../icons/bold/thermometer-cold-bold.svg | 1 + .../icons/bold/thermometer-hot-bold.svg | 1 + .../icons/bold/thermometer-simple-bold.svg | 1 + .../static/icons/bold/threads-logo-bold.svg | 1 + backend/static/icons/bold/three-d-bold.svg | 1 + .../static/icons/bold/thumbs-down-bold.svg | 1 + backend/static/icons/bold/thumbs-up-bold.svg | 1 + backend/static/icons/bold/ticket-bold.svg | 1 + backend/static/icons/bold/tidal-logo-bold.svg | 1 + .../static/icons/bold/tiktok-logo-bold.svg | 1 + backend/static/icons/bold/tilde-bold.svg | 1 + backend/static/icons/bold/timer-bold.svg | 1 + backend/static/icons/bold/tip-jar-bold.svg | 1 + backend/static/icons/bold/tipi-bold.svg | 1 + backend/static/icons/bold/tire-bold.svg | 1 + .../static/icons/bold/toggle-left-bold.svg | 1 + .../static/icons/bold/toggle-right-bold.svg | 1 + backend/static/icons/bold/toilet-bold.svg | 1 + .../static/icons/bold/toilet-paper-bold.svg | 1 + backend/static/icons/bold/toolbox-bold.svg | 1 + backend/static/icons/bold/tooth-bold.svg | 1 + backend/static/icons/bold/tornado-bold.svg | 1 + backend/static/icons/bold/tote-bold.svg | 1 + .../static/icons/bold/tote-simple-bold.svg | 1 + backend/static/icons/bold/towel-bold.svg | 1 + backend/static/icons/bold/tractor-bold.svg | 1 + backend/static/icons/bold/trademark-bold.svg | 1 + .../icons/bold/trademark-registered-bold.svg | 1 + .../static/icons/bold/traffic-cone-bold.svg | 1 + .../static/icons/bold/traffic-sign-bold.svg | 1 + .../static/icons/bold/traffic-signal-bold.svg | 1 + backend/static/icons/bold/train-bold.svg | 1 + .../static/icons/bold/train-regional-bold.svg | 1 + .../static/icons/bold/train-simple-bold.svg | 1 + backend/static/icons/bold/tram-bold.svg | 1 + backend/static/icons/bold/translate-bold.svg | 1 + backend/static/icons/bold/trash-bold.svg | 1 + .../static/icons/bold/trash-simple-bold.svg | 1 + .../icons/bold/tray-arrow-down-bold.svg | 1 + .../static/icons/bold/tray-arrow-up-bold.svg | 1 + backend/static/icons/bold/tray-bold.svg | 1 + .../static/icons/bold/treasure-chest-bold.svg | 1 + backend/static/icons/bold/tree-bold.svg | 1 + .../static/icons/bold/tree-evergreen-bold.svg | 1 + backend/static/icons/bold/tree-palm-bold.svg | 1 + .../static/icons/bold/tree-structure-bold.svg | 1 + backend/static/icons/bold/tree-view-bold.svg | 1 + backend/static/icons/bold/trend-down-bold.svg | 1 + backend/static/icons/bold/trend-up-bold.svg | 1 + backend/static/icons/bold/triangle-bold.svg | 1 + .../icons/bold/triangle-dashed-bold.svg | 1 + backend/static/icons/bold/trolley-bold.svg | 1 + .../icons/bold/trolley-suitcase-bold.svg | 1 + backend/static/icons/bold/trophy-bold.svg | 1 + backend/static/icons/bold/truck-bold.svg | 1 + .../static/icons/bold/truck-trailer-bold.svg | 1 + .../static/icons/bold/tumblr-logo-bold.svg | 1 + .../static/icons/bold/twitch-logo-bold.svg | 1 + .../static/icons/bold/twitter-logo-bold.svg | 1 + backend/static/icons/bold/umbrella-bold.svg | 1 + .../icons/bold/umbrella-simple-bold.svg | 1 + backend/static/icons/bold/union-bold.svg | 1 + backend/static/icons/bold/unite-bold.svg | 1 + .../static/icons/bold/unite-square-bold.svg | 1 + backend/static/icons/bold/upload-bold.svg | 1 + .../static/icons/bold/upload-simple-bold.svg | 1 + backend/static/icons/bold/usb-bold.svg | 1 + backend/static/icons/bold/user-bold.svg | 1 + backend/static/icons/bold/user-check-bold.svg | 1 + .../static/icons/bold/user-circle-bold.svg | 1 + .../icons/bold/user-circle-check-bold.svg | 1 + .../icons/bold/user-circle-dashed-bold.svg | 1 + .../icons/bold/user-circle-gear-bold.svg | 1 + .../icons/bold/user-circle-minus-bold.svg | 1 + .../icons/bold/user-circle-plus-bold.svg | 1 + backend/static/icons/bold/user-focus-bold.svg | 1 + backend/static/icons/bold/user-gear-bold.svg | 1 + backend/static/icons/bold/user-list-bold.svg | 1 + backend/static/icons/bold/user-minus-bold.svg | 1 + backend/static/icons/bold/user-plus-bold.svg | 1 + .../static/icons/bold/user-rectangle-bold.svg | 1 + backend/static/icons/bold/user-sound-bold.svg | 1 + .../static/icons/bold/user-square-bold.svg | 1 + .../static/icons/bold/user-switch-bold.svg | 1 + backend/static/icons/bold/users-bold.svg | 1 + backend/static/icons/bold/users-four-bold.svg | 1 + .../static/icons/bold/users-three-bold.svg | 1 + backend/static/icons/bold/van-bold.svg | 1 + backend/static/icons/bold/vault-bold.svg | 1 + .../static/icons/bold/vector-three-bold.svg | 1 + backend/static/icons/bold/vector-two-bold.svg | 1 + backend/static/icons/bold/vibrate-bold.svg | 1 + backend/static/icons/bold/video-bold.svg | 1 + .../static/icons/bold/video-camera-bold.svg | 1 + .../icons/bold/video-camera-slash-bold.svg | 1 + .../icons/bold/video-conference-bold.svg | 1 + backend/static/icons/bold/vignette-bold.svg | 1 + .../static/icons/bold/vinyl-record-bold.svg | 1 + .../icons/bold/virtual-reality-bold.svg | 1 + backend/static/icons/bold/virus-bold.svg | 1 + backend/static/icons/bold/visor-bold.svg | 1 + backend/static/icons/bold/voicemail-bold.svg | 1 + backend/static/icons/bold/volleyball-bold.svg | 1 + backend/static/icons/bold/wall-bold.svg | 1 + backend/static/icons/bold/wallet-bold.svg | 1 + backend/static/icons/bold/warehouse-bold.svg | 1 + backend/static/icons/bold/warning-bold.svg | 1 + .../static/icons/bold/warning-circle-bold.svg | 1 + .../icons/bold/warning-diamond-bold.svg | 1 + .../icons/bold/warning-octagon-bold.svg | 1 + .../icons/bold/washing-machine-bold.svg | 1 + backend/static/icons/bold/watch-bold.svg | 1 + .../static/icons/bold/wave-sawtooth-bold.svg | 1 + backend/static/icons/bold/wave-sine-bold.svg | 1 + .../static/icons/bold/wave-square-bold.svg | 1 + .../static/icons/bold/wave-triangle-bold.svg | 1 + backend/static/icons/bold/waveform-bold.svg | 1 + .../static/icons/bold/waveform-slash-bold.svg | 1 + backend/static/icons/bold/waves-bold.svg | 1 + backend/static/icons/bold/webcam-bold.svg | 1 + .../static/icons/bold/webcam-slash-bold.svg | 1 + .../static/icons/bold/webhooks-logo-bold.svg | 1 + .../static/icons/bold/wechat-logo-bold.svg | 1 + .../static/icons/bold/whatsapp-logo-bold.svg | 1 + backend/static/icons/bold/wheelchair-bold.svg | 1 + .../icons/bold/wheelchair-motion-bold.svg | 1 + backend/static/icons/bold/wifi-high-bold.svg | 1 + backend/static/icons/bold/wifi-low-bold.svg | 1 + .../static/icons/bold/wifi-medium-bold.svg | 1 + backend/static/icons/bold/wifi-none-bold.svg | 1 + backend/static/icons/bold/wifi-slash-bold.svg | 1 + backend/static/icons/bold/wifi-x-bold.svg | 1 + backend/static/icons/bold/wind-bold.svg | 1 + backend/static/icons/bold/windmill-bold.svg | 1 + .../static/icons/bold/windows-logo-bold.svg | 1 + backend/static/icons/bold/wine-bold.svg | 1 + backend/static/icons/bold/wrench-bold.svg | 1 + backend/static/icons/bold/x-bold.svg | 1 + backend/static/icons/bold/x-circle-bold.svg | 1 + backend/static/icons/bold/x-logo-bold.svg | 1 + backend/static/icons/bold/x-square-bold.svg | 1 + backend/static/icons/bold/yarn-bold.svg | 1 + backend/static/icons/bold/yin-yang-bold.svg | 1 + .../static/icons/bold/youtube-logo-bold.svg | 1 + backend/static/icons/placeholder.svg | 7 + backend/static/images/placeholder.jpg | Bin 0 -> 80776 bytes backend/tests/__init__.py | 0 backend/tests/test_gemini_schema_support.py | 70 + backend/tests/test_image_generation.py | 400 + backend/tests/test_mcp_server.py | 393 + backend/tests/test_openai_schema_support.py | 66 + backend/tests/test_pptx_creator.py | 40 + backend/tests/test_pptx_slides_processing.py | 140 + .../tests/test_presentation_generation_api.py | 189 + backend/tests/test_slide_to_html.py | 115 + backend/utils/__init__.py | 0 backend/utils/asset_directory_utils.py | 19 + backend/utils/async_iterator.py | 16 + backend/utils/auth_dependencies.py | 36 + backend/utils/available_models.py | 21 + backend/utils/datetime_utils.py | 5 + backend/utils/db_utils.py | 48 + backend/utils/dict_utils.py | 89 + backend/utils/download_helpers.py | 80 + backend/utils/dummy_functions.py | 2 + backend/utils/error_handling.py | 1 + backend/utils/export_utils.py | 67 + backend/utils/file_utils.py | 44 + backend/utils/get_dynamic_models.py | 36 + backend/utils/get_env.py | 119 + backend/utils/get_layout_by_name.py | 18 + backend/utils/image_provider.py | 50 + backend/utils/image_utils.py | 258 + backend/utils/llm_calls/edit_slide.py | 119 + backend/utils/llm_calls/edit_slide_html.py | 74 + .../generate_presentation_outlines.py | 124 + .../generate_presentation_structure.py | 134 + .../utils/llm_calls/generate_slide_content.py | 144 + .../llm_calls/select_slide_type_on_edit.py | 66 + backend/utils/llm_client_error_handler.py | 18 + backend/utils/llm_provider.py | 65 + backend/utils/model_availability.py | 153 + backend/utils/ollama.py | 60 + backend/utils/parsers.py | 4 + backend/utils/ppt_utils.py | 82 + backend/utils/process_slides.py | 196 + backend/utils/schema_utils.py | 400 + backend/utils/set_env.py | 105 + backend/utils/user_config.py | 173 + backend/utils/validators.py | 30 + backend/uv.lock | 3187 + docker-compose.yml | 92 + frontend/Dockerfile | 19 + frontend/README.md | 36 + .../components/EditableLayoutWrapper.tsx | 471 + .../components/HeaderNab.tsx | 60 + .../components/IconsEditor.tsx | 172 + .../components/ImageEditor.tsx | 615 + .../components/MarkdownEditor.tsx | 39 + .../components/NewSlide.tsx | 136 + .../components/PresentationMode.tsx | 248 + .../components/PresentationRender.tsx | 80 + .../components/SlideErrorBoundary.tsx | 56 + .../components/TiptapText.tsx | 148 + .../components/TiptapTextReplacer.tsx | 369 + .../components/V1ContentRender.tsx | 139 + .../components/APIKeyWarning.tsx | 21 + .../components/EachSlide/EditControls.tsx | 167 + .../components/EachSlide/HtmlEditor.tsx | 97 + .../components/EachSlide/NewEachSlide.tsx | 163 + .../components/EachSlide/SlideActions.tsx | 103 + .../EachSlide/SlideContentDisplay.tsx | 127 + .../components/FileUploadSection.tsx | 117 + .../components/FontManager.tsx | 234 + .../components/LoadingSpinner.tsx | 21 + .../components/SaveLayoutButton.tsx | 39 + .../components/SaveLayoutModal.tsx | 126 + .../components/SlideContent.tsx | 21 + .../custom-template/components/Timer.tsx | 103 + .../custom-template/hooks/useAPIKeyCheck.ts | 18 + .../custom-template/hooks/useCustomLayout.ts | 32 + .../custom-template/hooks/useDrawingCanvas.ts | 167 + .../custom-template/hooks/useFileUpload.ts | 42 + .../hooks/useFontManagement.ts | 152 + .../custom-template/hooks/useHtmlEdit.ts | 49 + .../custom-template/hooks/useLayoutSaving.ts | 200 + .../custom-template/hooks/useSlideEdit.ts | 210 + .../hooks/useSlideProcessing.ts | 228 + .../custom-template/page.tsx | 179 + .../custom-template/types/index.ts | 112 + .../dashboard/components/DashboardPage.tsx | 71 + .../dashboard/components/EmptyState.tsx | 22 + .../dashboard/components/Header.tsx | 53 + .../dashboard/components/PresentationCard.tsx | 120 + .../dashboard/components/PresentationGrid.tsx | 115 + .../components/PresentationListItem.tsx | 44 + .../dashboard/loading.tsx | 29 + .../dashboard/page.tsx | 10 + .../dashboard/types.ts | 16 + .../components/DocumentPreviewPage.tsx | 304 + .../components/MarkdownRenderer.tsx | 36 + .../documents-preview/loading.tsx | 16 + .../documents-preview/page.tsx | 12 + .../hooks/use-keyboard-shortcut.ts | 33 + .../hooks/useFontLoader.tsx | 16 + .../app/(presentation-generator)/layout.tsx | 13 + .../outline/components/CustomTemplateCard.tsx | 98 + .../outline/components/EmptyStateView.tsx | 55 + .../outline/components/GenerateButton.tsx | 69 + .../outline/components/OutlineContent.tsx | 160 + .../outline/components/OutlineItem.tsx | 188 + .../outline/components/OutlinePage.tsx | 103 + .../outline/components/TemplateSelection.tsx | 136 + .../outline/hooks/useOutlineManagement.ts | 30 + .../outline/hooks/useOutlineStreaming.ts | 164 + .../hooks/usePresentationGeneration.ts | 164 + .../outline/loading.tsx | 28 + .../(presentation-generator)/outline/page.tsx | 33 + .../(presentation-generator)/outline/types.ts | 42 + .../outline/types/index.ts | 24 + .../pdf-maker/PdfMakerPage.tsx | 129 + .../pdf-maker/page.tsx | 25 + .../presentation/components/Header.tsx | 288 + .../presentation/components/Help.tsx | 312 + .../presentation/components/LoadingState.tsx | 49 + .../presentation/components/Modal.tsx | 45 + .../components/PresentationPage.tsx | 187 + .../presentation/components/SidePanel.tsx | 315 + .../presentation/components/SlideContent.tsx | 261 + .../components/SortableListItem.tsx | 63 + .../presentation/components/SortableSlide.tsx | 88 + .../hooks/PresentationUndoRedo.ts | 136 + .../presentation/hooks/index.ts | 4 + .../presentation/hooks/useAutoSave.tsx | 89 + .../presentation/hooks/usePresentationData.ts | 35 + .../hooks/usePresentationNavigation.ts | 64 + .../hooks/usePresentationStreaming.ts | 127 + .../presentation/loading.tsx | 19 + .../presentation/page.tsx | 26 + .../presentation/types/index.ts | 16 + .../services/api/api-error-handler.ts | 121 + .../services/api/dashboard.ts | 84 + .../services/api/header.ts | 17 + .../services/api/images.ts | 47 + .../services/api/params.ts | 30 + .../services/api/presentation-generation.ts | 247 + .../services/api/template.ts | 36 + .../services/api/types.ts | 31 + .../settings/SettingPage.tsx | 277 + .../settings/loading.tsx | 77 + .../settings/page.tsx | 15 + .../hooks/useTemplateLayoutsAutoSave.ts | 184 + .../template-preview/[slug]/page.tsx | 302 + .../components/LoadingStates.tsx | 173 + .../template-preview/page.tsx | 222 + .../template-preview/types/index.ts | 47 + .../(presentation-generator)/types/slide.ts | 38 + .../components/ConfigurationSelects.tsx | 364 + .../upload/components/PromptInput.tsx | 42 + .../upload/components/SupportingDoc.tsx | 230 + .../upload/components/UploadPage.cy.tsx | 297 + .../upload/components/UploadPage.tsx | 231 + .../upload/loading.tsx | 19 + .../(presentation-generator)/upload/page.tsx | 60 + .../upload/styles/main.module.css | 32 + .../(presentation-generator)/upload/type.ts | 148 + .../(presentation-generator)/utils/others.ts | 117 + frontend/app/ConfigurationInitializer.tsx | 148 + frontend/app/admin/analytics/page.tsx | 17 + frontend/app/admin/audit/page.tsx | 104 + .../app/admin/clients/[id]/brand/page.tsx | 376 + .../admin/clients/[id]/master-decks/page.tsx | 367 + frontend/app/admin/clients/[id]/page.tsx | 108 + .../app/admin/clients/[id]/teams/page.tsx | 154 + frontend/app/admin/clients/page.tsx | 87 + .../app/admin/components/AdminSidebar.tsx | 80 + .../admin/components/CreateClientDialog.tsx | 77 + .../app/admin/components/DataExportButton.tsx | 58 + frontend/app/admin/components/RoleBadge.tsx | 23 + .../app/admin/components/TeamMemberDialog.tsx | 106 + frontend/app/admin/layout.tsx | 39 + frontend/app/admin/page.tsx | 12 + frontend/app/admin/settings/page.tsx | 17 + frontend/app/admin/users/[id]/page.tsx | 88 + frontend/app/admin/users/page.tsx | 141 + frontend/app/api/can-change-keys/route.ts | 9 + frontend/app/api/export-as-pdf/route.ts | 103 + frontend/app/api/has-required-key/route.ts | 25 + .../api/presentation_to_pptx_model/route.ts | 1197 + frontend/app/api/read-file/route.ts | 40 + frontend/app/api/save-layout/route.ts | 70 + frontend/app/api/telemetry-status/route.ts | 11 + frontend/app/api/template/route.ts | 86 + frontend/app/api/templates/route.ts | 77 + frontend/app/api/upload-image/route.ts | 54 + frontend/app/api/user-config/route.ts | 97 + frontend/app/apple-icon.png | Bin 0 -> 8753 bytes frontend/app/favicon.ico | Bin 0 -> 15086 bytes frontend/app/fonts/Inter.ttf | Bin 0 -> 342732 bytes frontend/app/globals.css | 520 + frontend/app/hooks/compileLayout.ts | 132 + frontend/app/hooks/useCustomTemplates.ts | 469 + frontend/app/hooks/useRemoteSvgIcon.tsx | 203 + frontend/app/icon1.svg | 3 + frontend/app/icon2.png | Bin 0 -> 4164 bytes frontend/app/layout.tsx | 96 + frontend/app/loading.tsx | 73 + frontend/app/login/page.tsx | 143 + frontend/app/not-found.tsx | 39 + frontend/app/page.tsx | 9 + .../ExampleSlideLayout.tsx | 100 + .../ExampleSlideLayoutTemplate.tsx | 32 + .../presentation-templates/defaultSchemes.ts | 19 + .../general/BasicInfoSlideLayout.tsx | 107 + .../general/BulletIconsOnlySlideLayout.tsx | 209 + .../general/BulletWithIconsSlideLayout.tsx | 180 + .../general/ChartWithBulletsSlideLayout.tsx | 350 + .../general/IntroSlideLayout.tsx | 135 + .../general/MetricsSlideLayout.tsx | 171 + .../general/MetricsWithImageSlideLayout.tsx | 141 + .../general/NumberedBulletsSlideLayout.tsx | 161 + .../general/QuoteSlideLayout.tsx | 135 + .../general/TableInfoSlideLayout.tsx | 170 + .../general/TableOfContentsSlideLayout.tsx | 158 + .../general/TeamSlideLayout.tsx | 182 + .../general/settings.json | 5 + frontend/app/presentation-templates/index.tsx | 453 + .../modern/BulletWithIconsSlideLayout.tsx | 192 + .../BulletsWithIconsDescriptionGrid.tsx | 196 + .../modern/ChartOrTableWithDescription.tsx | 286 + .../ChartOrTableWithMetricsDescription.tsx | 327 + .../modern/ImageAndDescriptionLayout.tsx | 152 + .../ImageListWithDescriptionSlideLayout.tsx | 193 + .../modern/ImagesWithDescriptionLayout.tsx | 201 + .../modern/IntroSlideLayout.tsx | 141 + .../modern/MetricsWithDescription.tsx | 168 + .../modern/TableOfContentsLayout.tsx | 112 + .../modern/settings.json | 5 + .../BulletIconsOnlySlideLayout.tsx | 212 + .../BulletWithIconsSlideLayout.tsx | 182 + .../ChallengeAndOutcomeWithOneStat.tsx | 202 + .../ChartWithBulletsSlideLayout.tsx | 582 + .../GridBasedEightMetricsSnapshots.tsx | 176 + .../HeadlineDescriptionWithDoubleImage.tsx | 128 + .../HeadlineDescriptionWithImage.tsx | 104 + .../HeadlineTextWithBulletsAndStats.tsx | 144 + .../neo-general/IndexedThreeColumnList.tsx | 163 + .../LayoutTextBlockWithMetricCards.tsx | 324 + .../neo-general/LeftAlignQuote.tsx | 118 + .../MetricsWithImageSlideLayout.tsx | 144 + .../neo-general/MultiChartGridSlideLayout.tsx | 671 + .../NumberedBulletsSlideLayout.tsx | 163 + .../neo-general/QuoteSlideLayout.tsx | 139 + .../TableOfContentWithoutPageNumber.tsx | 163 + .../neo-general/TeamSlideLayout.tsx | 184 + .../TextSplitWithEmphasisBlock.tsx | 119 + .../ThankYouContactInfoFooterImageSlide.tsx | 120 + .../neo-general/Timeline.tsx | 179 + ...leDescriptionMultiChartGridWithBullets.tsx | 671 + ...leDescriptionMultiChartGridWithMetrics.tsx | 698 + .../neo-general/TitleDescriptionWithTable.tsx | 150 + ...itleMetricValueMetricLabelFunnelStages.tsx | 133 + .../neo-general/TitleMetricsWithChart.tsx | 599 + .../TitleThreeColumnRiskConstraints.tsx | 124 + ...TitleTopDescriptionFourTeamMembersGrid.tsx | 156 + .../neo-general/TitleWithFullWidthChart.tsx | 588 + ...itleWithGridBasedHeadingAndDescription.tsx | 129 + .../neo-general/settings.json | 5 + .../neo-modern/TitleDescriptionBulletList.tsx | 92 + .../TitleDescriptionContactList.tsx | 153 + .../TitleDescriptionDualMetricsGrid.tsx | 129 + .../TitleDescriptionIconTimeline.tsx | 134 + .../neo-modern/TitleDescriptionImageRight.tsx | 84 + .../TitleDescriptionMetricsChart.tsx | 478 + .../TitleDescriptionMetricsImage.tsx | 131 + .../TitleDescriptionMultiChartGrid.tsx | 533 + ...leDescriptionMultiChartGridWithBullets.tsx | 557 + ...leDescriptionMultiChartGridWithMetrics.tsx | 561 + .../neo-modern/TitleDescriptionTable.tsx | 127 + .../neo-modern/TitleDualComparisonCards.tsx | 109 + .../neo-modern/TitleDualComparisonCharts.tsx | 485 + .../TitleHorizontalAlternatingTimeline.tsx | 151 + .../neo-modern/TitleKpiSnapshotGrid.tsx | 109 + .../neo-modern/TitleSubtitlesChart.tsx | 510 + .../neo-modern/TitleTwoColumnNumberedList.tsx | 135 + .../neo-modern/settings.json | 5 + .../neo-standard/TitleBadgeChart.tsx | 421 + .../TitleDescriptionBulletList.tsx | 90 + .../TitleDescriptionContactCards.tsx | 111 + .../neo-standard/TitleDescriptionIconList.tsx | 137 + .../TitleDescriptionImageRight.tsx | 112 + .../TitleDescriptionMultiChartGrid.tsx | 534 + ...leDescriptionMultiChartGridWithBullets.tsx | 558 + ...leDescriptionMultiChartGridWithMetrics.tsx | 562 + .../TitleDescriptionRadialCards.tsx | 162 + .../neo-standard/TitleDescriptionTable.tsx | 139 + .../neo-standard/TitleDescriptionTimeline.tsx | 141 + .../TitleDualChartsComparison.tsx | 475 + .../neo-standard/TitleDualComparisonCards.tsx | 139 + .../neo-standard/TitleKpiGrid.tsx | 111 + .../neo-standard/TitleMetricsChart.tsx | 493 + .../neo-standard/TitleMetricsImage.tsx | 122 + .../neo-standard/TitlePointsDonutGrid.tsx | 163 + .../neo-standard/settings.json | 5 + .../neo-swift/TitleCenteredChart.tsx | 463 + .../neo-swift/TitleChartMetricsSidebar.tsx | 553 + .../neo-swift/TitleDescriptionBulletList.tsx | 106 + .../neo-swift/TitleDescriptionDataTable.tsx | 150 + .../TitleDescriptionFourChartsSixBullets.tsx | 542 + .../neo-swift/TitleDescriptionImageRight.tsx | 101 + .../neo-swift/TitleDescriptionMetricsGrid.tsx | 109 + .../TitleDescriptionMetricsGridImage.tsx | 177 + .../TitleDescriptionSixChartsFourMetrics.tsx | 538 + .../TitleDescriptionSixChartsGrid.tsx | 510 + .../neo-swift/TitleDualComparisonBlocks.tsx | 137 + .../TitleLabelDescriptionStatCards.tsx | 154 + .../TitleSubtitleTeamMemberCards.tsx | 165 + .../TitleTaglineDescriptionNumberedSteps.tsx | 144 + .../TitleThreeByThreeMetricsGrid.tsx | 162 + .../neo-swift/settings.json | 5 + .../standard/ChartLeftTextRightLayout.tsx | 188 + .../standard/ContactLayout.tsx | 209 + .../HeadingBulletImageDescriptionLayout.tsx | 139 + .../standard/IconBulletDescriptionLayout.tsx | 172 + .../standard/IconImageDescriptionLayout.tsx | 185 + .../ImageListWithDescriptionLayout.tsx | 150 + .../standard/IntroSlideLayout.tsx | 163 + .../standard/MetricsDescriptionLayout.tsx | 180 + .../NumberedBulletSingleImageLayout.tsx | 177 + .../standard/TableOfContentsLayout.tsx | 178 + .../standard/VisualMetricsSlideLayout.tsx | 191 + .../standard/settings.json | 5 + .../BulletsWithIconsTitleDescription.tsx | 245 + .../swift/IconBulletListDescription.tsx | 204 + .../swift/ImageListDescription.tsx | 170 + .../swift/IntroSlideLayout.tsx | 176 + .../swift/MetricsNumbers.tsx | 182 + .../swift/SimpleBulletPointsLayout.tsx | 133 + .../swift/TableOfContents.tsx | 148 + .../swift/TableorChart.tsx | 282 + .../presentation-templates/swift/Timeline.tsx | 176 + .../swift/settings.json | 6 + frontend/app/presentation-templates/utils.ts | 91 + frontend/app/providers.tsx | 10 + frontend/app/schema/page.tsx | 91 + frontend/components.json | 20 + frontend/components/Announcement.tsx | 11 + frontend/components/AnthropicConfig.tsx | 250 + frontend/components/AuthGuard.tsx | 63 + frontend/components/BackBtn.tsx | 15 + frontend/components/CustomConfig.tsx | 268 + frontend/components/GoogleConfig.tsx | 230 + frontend/components/Header.tsx | 32 + frontend/components/Home.tsx | 255 + frontend/components/LLMSelection.tsx | 676 + frontend/components/OllamaConfig.tsx | 216 + frontend/components/OpenAIConfig.tsx | 235 + frontend/components/ToolTip.tsx | 23 + frontend/components/Wrapper.tsx | 11 + frontend/components/ui/accordion.tsx | 57 + frontend/components/ui/button.tsx | 57 + frontend/components/ui/card.tsx | 76 + frontend/components/ui/chart.tsx | 365 + frontend/components/ui/collapsible.tsx | 11 + frontend/components/ui/command.tsx | 152 + frontend/components/ui/dialog.tsx | 121 + frontend/components/ui/input.tsx | 25 + frontend/components/ui/label.tsx | 26 + frontend/components/ui/loader.tsx | 17 + frontend/components/ui/overlay-loader.tsx | 84 + frontend/components/ui/popover.tsx | 33 + frontend/components/ui/progress-bar.tsx | 80 + frontend/components/ui/progress.tsx | 28 + frontend/components/ui/radio-group.tsx | 43 + frontend/components/ui/scroll-area.tsx | 48 + frontend/components/ui/select.tsx | 164 + frontend/components/ui/separator.tsx | 31 + frontend/components/ui/sheet.tsx | 140 + frontend/components/ui/skeleton.tsx | 15 + frontend/components/ui/slider.tsx | 28 + frontend/components/ui/sonner.tsx | 168 + frontend/components/ui/switch.tsx | 29 + frontend/components/ui/table.tsx | 120 + frontend/components/ui/tabs.tsx | 55 + frontend/components/ui/textarea.tsx | 24 + frontend/components/ui/toggle.tsx | 45 + frontend/components/ui/tooltip.tsx | 32 + frontend/cypress.config.ts | 10 + frontend/cypress/fixtures/example.json | 5 + frontend/cypress/fixtures/example.txt | 1 + frontend/cypress/fixtures/test-doc.txt | 1 + frontend/cypress/support/commands.ts | 37 + frontend/cypress/support/component-index.html | 14 + frontend/cypress/support/component.ts | 36 + frontend/i18n/I18nProvider.tsx | 8 + frontend/i18n/i18n.ts | 31 + frontend/i18n/locales/en/admin.json | 22 + frontend/i18n/locales/en/auth.json | 13 + frontend/i18n/locales/en/common.json | 27 + frontend/i18n/locales/en/editor.json | 16 + frontend/i18n/locales/en/wizard.json | 16 + frontend/lib/utils.ts | 6 + frontend/models/errors.ts | 7 + frontend/next-env.d.ts | 5 + frontend/next.config.mjs | 60 + frontend/package-lock.json | 9815 +++ frontend/package.json | 90 + frontend/postcss.config.mjs | 8 + frontend/public/404.svg | 1 + frontend/public/Logo.png | Bin 0 -> 6229 bytes frontend/public/loading.gif | Bin 0 -> 7634610 bytes frontend/public/logo-white.png | Bin 0 -> 42238 bytes frontend/public/pdf.svg | 4 + frontend/public/pptx.svg | 3 + frontend/public/report.png | Bin 0 -> 13906 bytes frontend/store/slices/adminSlice.ts | 364 + frontend/store/slices/authSlice.ts | 89 + .../store/slices/presentationGenUpload.ts | 34 + .../store/slices/presentationGeneration.ts | 406 + frontend/store/slices/undoRedoSlice.ts | 137 + frontend/store/slices/userConfig.ts | 28 + frontend/store/store.ts | 23 + frontend/tailwind.config.ts | 96 + frontend/tsconfig.json | 42 + frontend/tsconfig.tsbuildinfo | 1 + frontend/types/element_attibutes.ts | 82 + frontend/types/global.d.ts | 14 + frontend/types/llm_config.ts | 48 + frontend/types/pptx_models.ts | 364 + frontend/types/presentation.ts | 21 + frontend/utils/constant.ts | 0 frontend/utils/error_helpers.ts | 12 + frontend/utils/pptx_models_utils.ts | 255 + frontend/utils/providerConstants.ts | 119 + frontend/utils/providerUtils.ts | 156 + frontend/utils/storeHelpers.ts | 102 + implementation_plan.md | 1449 + nginx.conf | 102 + 2068 files changed, 150455 insertions(+) create mode 100644 .env.example create mode 100644 Makefile create mode 100644 backend/.python-version create mode 100644 backend/Dockerfile create mode 100644 backend/alembic.ini create mode 100644 backend/api/__init__.py create mode 100644 backend/api/lifespan.py create mode 100644 backend/api/main.py create mode 100644 backend/api/middlewares.py create mode 100644 backend/api/middlewares/__init__.py create mode 100644 backend/api/middlewares/audit_middleware.py create mode 100644 backend/api/middlewares/auth_middleware.py create mode 100644 backend/api/middlewares/rbac_middleware.py create mode 100644 backend/api/v1/admin/__init__.py create mode 100644 backend/api/v1/admin/audit_router.py create mode 100644 backend/api/v1/admin/brand_config_router.py create mode 100644 backend/api/v1/admin/clients_router.py create mode 100644 backend/api/v1/admin/master_decks_router.py create mode 100644 backend/api/v1/admin/teams_router.py create mode 100644 backend/api/v1/admin/users_router.py create mode 100644 backend/api/v1/auth/__init__.py create mode 100644 backend/api/v1/auth/router.py create mode 100644 backend/api/v1/mock/router.py create mode 100644 backend/api/v1/ppt/background_tasks.py create mode 100644 backend/api/v1/ppt/endpoints/__init__.py create mode 100644 backend/api/v1/ppt/endpoints/anthropic.py create mode 100644 backend/api/v1/ppt/endpoints/files.py create mode 100644 backend/api/v1/ppt/endpoints/fonts.py create mode 100644 backend/api/v1/ppt/endpoints/google.py create mode 100644 backend/api/v1/ppt/endpoints/icons.py create mode 100644 backend/api/v1/ppt/endpoints/images.py create mode 100644 backend/api/v1/ppt/endpoints/layouts.py create mode 100644 backend/api/v1/ppt/endpoints/ollama.py create mode 100644 backend/api/v1/ppt/endpoints/openai.py create mode 100644 backend/api/v1/ppt/endpoints/outlines.py create mode 100644 backend/api/v1/ppt/endpoints/pdf_slides.py create mode 100644 backend/api/v1/ppt/endpoints/pptx_slides.py create mode 100644 backend/api/v1/ppt/endpoints/presentation.py create mode 100644 backend/api/v1/ppt/endpoints/prompts.py create mode 100644 backend/api/v1/ppt/endpoints/slide.py create mode 100644 backend/api/v1/ppt/endpoints/slide_to_html.py create mode 100644 backend/api/v1/ppt/router.py create mode 100644 backend/api/v1/webhook/router.py create mode 100644 backend/assets/icons.json create mode 100644 backend/constants/__init__.py create mode 100644 backend/constants/documents.py create mode 100644 backend/constants/llm.py create mode 100644 backend/constants/presentation.py create mode 100644 backend/constants/supported_ollama_models.py create mode 100644 backend/enums/__init__.py create mode 100644 backend/enums/image_provider.py create mode 100644 backend/enums/llm_call_type.py create mode 100644 backend/enums/llm_provider.py create mode 100644 backend/enums/tone.py create mode 100644 backend/enums/verbosity.py create mode 100644 backend/enums/webhook_event.py create mode 100644 backend/mcp_server.py create mode 100644 backend/migrations/__init__.py create mode 100644 backend/migrations/env.py create mode 100644 backend/migrations/script.py.mako create mode 100644 backend/models/__init__.py create mode 100644 backend/models/api_error_model.py create mode 100644 backend/models/decomposed_file_info.py create mode 100644 backend/models/document_chunk.py create mode 100644 backend/models/generate_presentation_request.py create mode 100644 backend/models/image_prompt.py create mode 100644 backend/models/json_path_guide.py create mode 100644 backend/models/llm_message.py create mode 100644 backend/models/llm_tool_call.py create mode 100644 backend/models/llm_tools.py create mode 100644 backend/models/ollama_model_metadata.py create mode 100644 backend/models/ollama_model_status.py create mode 100644 backend/models/pptx_models.py create mode 100644 backend/models/presentation_and_path.py create mode 100644 backend/models/presentation_from_template.py create mode 100644 backend/models/presentation_layout.py create mode 100644 backend/models/presentation_outline_model.py create mode 100644 backend/models/presentation_structure_model.py create mode 100644 backend/models/presentation_with_slides.py create mode 100644 backend/models/slide_layout_index.py create mode 100644 backend/models/sql/async_presentation_generation_status.py create mode 100644 backend/models/sql/audit_log.py create mode 100644 backend/models/sql/brand_config.py create mode 100644 backend/models/sql/client.py create mode 100644 backend/models/sql/image_asset.py create mode 100644 backend/models/sql/job.py create mode 100644 backend/models/sql/key_value.py create mode 100644 backend/models/sql/master_deck.py create mode 100644 backend/models/sql/ollama_pull_status.py create mode 100644 backend/models/sql/presentation.py create mode 100644 backend/models/sql/presentation_layout_code.py create mode 100644 backend/models/sql/slide.py create mode 100644 backend/models/sql/team.py create mode 100644 backend/models/sql/team_membership.py create mode 100644 backend/models/sql/template.py create mode 100644 backend/models/sql/user.py create mode 100644 backend/models/sql/webhook_subscription.py create mode 100644 backend/models/sse_response.py create mode 100644 backend/models/user_config.py create mode 100644 backend/openai_spec.json create mode 100644 backend/pyproject.toml create mode 100644 backend/scripts/__init__.py create mode 100644 backend/scripts/seed.py create mode 100644 backend/server.py create mode 100644 backend/services/__init__.py create mode 100644 backend/services/access_service.py create mode 100644 backend/services/audit_service.py create mode 100644 backend/services/auth_service.py create mode 100644 backend/services/concurrent_service.py create mode 100644 backend/services/database.py create mode 100644 backend/services/docling_service.py create mode 100644 backend/services/documents_loader.py create mode 100644 backend/services/html_to_text_runs_service.py create mode 100644 backend/services/icon_finder_service.py create mode 100644 backend/services/image_generation_service.py create mode 100644 backend/services/llm_client.py create mode 100644 backend/services/llm_tool_calls_handler.py create mode 100644 backend/services/master_deck_parser_service.py create mode 100644 backend/services/pptx_presentation_creator.py create mode 100644 backend/services/score_based_chunker.py create mode 100644 backend/services/temp_file_service.py create mode 100644 backend/services/webhook_service.py create mode 100644 backend/static/icons/bold/acorn-bold.svg create mode 100644 backend/static/icons/bold/address-book-bold.svg create mode 100644 backend/static/icons/bold/address-book-tabs-bold.svg create mode 100644 backend/static/icons/bold/air-traffic-control-bold.svg create mode 100644 backend/static/icons/bold/airplane-bold.svg create mode 100644 backend/static/icons/bold/airplane-in-flight-bold.svg create mode 100644 backend/static/icons/bold/airplane-landing-bold.svg create mode 100644 backend/static/icons/bold/airplane-takeoff-bold.svg create mode 100644 backend/static/icons/bold/airplane-taxiing-bold.svg create mode 100644 backend/static/icons/bold/airplane-tilt-bold.svg create mode 100644 backend/static/icons/bold/airplay-bold.svg create mode 100644 backend/static/icons/bold/alarm-bold.svg create mode 100644 backend/static/icons/bold/alien-bold.svg create mode 100644 backend/static/icons/bold/align-bottom-bold.svg create mode 100644 backend/static/icons/bold/align-bottom-simple-bold.svg create mode 100644 backend/static/icons/bold/align-center-horizontal-bold.svg create mode 100644 backend/static/icons/bold/align-center-horizontal-simple-bold.svg create mode 100644 backend/static/icons/bold/align-center-vertical-bold.svg create mode 100644 backend/static/icons/bold/align-center-vertical-simple-bold.svg create mode 100644 backend/static/icons/bold/align-left-bold.svg create mode 100644 backend/static/icons/bold/align-left-simple-bold.svg create mode 100644 backend/static/icons/bold/align-right-bold.svg create mode 100644 backend/static/icons/bold/align-right-simple-bold.svg create mode 100644 backend/static/icons/bold/align-top-bold.svg create mode 100644 backend/static/icons/bold/align-top-simple-bold.svg create mode 100644 backend/static/icons/bold/amazon-logo-bold.svg create mode 100644 backend/static/icons/bold/ambulance-bold.svg create mode 100644 backend/static/icons/bold/anchor-bold.svg create mode 100644 backend/static/icons/bold/anchor-simple-bold.svg create mode 100644 backend/static/icons/bold/android-logo-bold.svg create mode 100644 backend/static/icons/bold/angle-bold.svg create mode 100644 backend/static/icons/bold/angular-logo-bold.svg create mode 100644 backend/static/icons/bold/aperture-bold.svg create mode 100644 backend/static/icons/bold/app-store-logo-bold.svg create mode 100644 backend/static/icons/bold/app-window-bold.svg create mode 100644 backend/static/icons/bold/apple-logo-bold.svg create mode 100644 backend/static/icons/bold/apple-podcasts-logo-bold.svg create mode 100644 backend/static/icons/bold/approximate-equals-bold.svg create mode 100644 backend/static/icons/bold/archive-bold.svg create mode 100644 backend/static/icons/bold/armchair-bold.svg create mode 100644 backend/static/icons/bold/arrow-arc-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-arc-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-double-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-double-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-left-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-left-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-right-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-right-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-bend-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-circle-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-clockwise-bold.svg create mode 100644 backend/static/icons/bold/arrow-counter-clockwise-bold.svg create mode 100644 backend/static/icons/bold/arrow-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-left-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-left-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-right-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-right-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-elbow-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-line-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-line-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-line-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-line-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-lines-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-lines-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-lines-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-lines-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-fat-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-line-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-in-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-out-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-square-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-down-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-down-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-left-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-left-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-right-down-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-right-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-u-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrow-up-bold.svg create mode 100644 backend/static/icons/bold/arrow-up-left-bold.svg create mode 100644 backend/static/icons/bold/arrow-up-right-bold.svg create mode 100644 backend/static/icons/bold/arrows-clockwise-bold.svg create mode 100644 backend/static/icons/bold/arrows-counter-clockwise-bold.svg create mode 100644 backend/static/icons/bold/arrows-down-up-bold.svg create mode 100644 backend/static/icons/bold/arrows-horizontal-bold.svg create mode 100644 backend/static/icons/bold/arrows-in-bold.svg create mode 100644 backend/static/icons/bold/arrows-in-cardinal-bold.svg create mode 100644 backend/static/icons/bold/arrows-in-line-horizontal-bold.svg create mode 100644 backend/static/icons/bold/arrows-in-line-vertical-bold.svg create mode 100644 backend/static/icons/bold/arrows-in-simple-bold.svg create mode 100644 backend/static/icons/bold/arrows-left-right-bold.svg create mode 100644 backend/static/icons/bold/arrows-merge-bold.svg create mode 100644 backend/static/icons/bold/arrows-out-bold.svg create mode 100644 backend/static/icons/bold/arrows-out-cardinal-bold.svg create mode 100644 backend/static/icons/bold/arrows-out-line-horizontal-bold.svg create mode 100644 backend/static/icons/bold/arrows-out-line-vertical-bold.svg create mode 100644 backend/static/icons/bold/arrows-out-simple-bold.svg create mode 100644 backend/static/icons/bold/arrows-split-bold.svg create mode 100644 backend/static/icons/bold/arrows-vertical-bold.svg create mode 100644 backend/static/icons/bold/article-bold.svg create mode 100644 backend/static/icons/bold/article-medium-bold.svg create mode 100644 backend/static/icons/bold/article-ny-times-bold.svg create mode 100644 backend/static/icons/bold/asclepius-bold.svg create mode 100644 backend/static/icons/bold/asterisk-bold.svg create mode 100644 backend/static/icons/bold/asterisk-simple-bold.svg create mode 100644 backend/static/icons/bold/at-bold.svg create mode 100644 backend/static/icons/bold/atom-bold.svg create mode 100644 backend/static/icons/bold/avocado-bold.svg create mode 100644 backend/static/icons/bold/axe-bold.svg create mode 100644 backend/static/icons/bold/baby-bold.svg create mode 100644 backend/static/icons/bold/baby-carriage-bold.svg create mode 100644 backend/static/icons/bold/backpack-bold.svg create mode 100644 backend/static/icons/bold/backspace-bold.svg create mode 100644 backend/static/icons/bold/bag-bold.svg create mode 100644 backend/static/icons/bold/bag-simple-bold.svg create mode 100644 backend/static/icons/bold/balloon-bold.svg create mode 100644 backend/static/icons/bold/bandaids-bold.svg create mode 100644 backend/static/icons/bold/bank-bold.svg create mode 100644 backend/static/icons/bold/barbell-bold.svg create mode 100644 backend/static/icons/bold/barcode-bold.svg create mode 100644 backend/static/icons/bold/barn-bold.svg create mode 100644 backend/static/icons/bold/barricade-bold.svg create mode 100644 backend/static/icons/bold/baseball-bold.svg create mode 100644 backend/static/icons/bold/baseball-cap-bold.svg create mode 100644 backend/static/icons/bold/baseball-helmet-bold.svg create mode 100644 backend/static/icons/bold/basket-bold.svg create mode 100644 backend/static/icons/bold/basketball-bold.svg create mode 100644 backend/static/icons/bold/bathtub-bold.svg create mode 100644 backend/static/icons/bold/battery-charging-bold.svg create mode 100644 backend/static/icons/bold/battery-charging-vertical-bold.svg create mode 100644 backend/static/icons/bold/battery-empty-bold.svg create mode 100644 backend/static/icons/bold/battery-full-bold.svg create mode 100644 backend/static/icons/bold/battery-high-bold.svg create mode 100644 backend/static/icons/bold/battery-low-bold.svg create mode 100644 backend/static/icons/bold/battery-medium-bold.svg create mode 100644 backend/static/icons/bold/battery-plus-bold.svg create mode 100644 backend/static/icons/bold/battery-plus-vertical-bold.svg create mode 100644 backend/static/icons/bold/battery-vertical-empty-bold.svg create mode 100644 backend/static/icons/bold/battery-vertical-full-bold.svg create mode 100644 backend/static/icons/bold/battery-vertical-high-bold.svg create mode 100644 backend/static/icons/bold/battery-vertical-low-bold.svg create mode 100644 backend/static/icons/bold/battery-vertical-medium-bold.svg create mode 100644 backend/static/icons/bold/battery-warning-bold.svg create mode 100644 backend/static/icons/bold/battery-warning-vertical-bold.svg create mode 100644 backend/static/icons/bold/beach-ball-bold.svg create mode 100644 backend/static/icons/bold/beanie-bold.svg create mode 100644 backend/static/icons/bold/bed-bold.svg create mode 100644 backend/static/icons/bold/beer-bottle-bold.svg create mode 100644 backend/static/icons/bold/beer-stein-bold.svg create mode 100644 backend/static/icons/bold/behance-logo-bold.svg create mode 100644 backend/static/icons/bold/bell-bold.svg create mode 100644 backend/static/icons/bold/bell-ringing-bold.svg create mode 100644 backend/static/icons/bold/bell-simple-bold.svg create mode 100644 backend/static/icons/bold/bell-simple-ringing-bold.svg create mode 100644 backend/static/icons/bold/bell-simple-slash-bold.svg create mode 100644 backend/static/icons/bold/bell-simple-z-bold.svg create mode 100644 backend/static/icons/bold/bell-slash-bold.svg create mode 100644 backend/static/icons/bold/bell-z-bold.svg create mode 100644 backend/static/icons/bold/belt-bold.svg create mode 100644 backend/static/icons/bold/bezier-curve-bold.svg create mode 100644 backend/static/icons/bold/bicycle-bold.svg create mode 100644 backend/static/icons/bold/binary-bold.svg create mode 100644 backend/static/icons/bold/binoculars-bold.svg create mode 100644 backend/static/icons/bold/biohazard-bold.svg create mode 100644 backend/static/icons/bold/bird-bold.svg create mode 100644 backend/static/icons/bold/blueprint-bold.svg create mode 100644 backend/static/icons/bold/bluetooth-bold.svg create mode 100644 backend/static/icons/bold/bluetooth-connected-bold.svg create mode 100644 backend/static/icons/bold/bluetooth-slash-bold.svg create mode 100644 backend/static/icons/bold/bluetooth-x-bold.svg create mode 100644 backend/static/icons/bold/boat-bold.svg create mode 100644 backend/static/icons/bold/bomb-bold.svg create mode 100644 backend/static/icons/bold/bone-bold.svg create mode 100644 backend/static/icons/bold/book-bold.svg create mode 100644 backend/static/icons/bold/book-bookmark-bold.svg create mode 100644 backend/static/icons/bold/book-open-bold.svg create mode 100644 backend/static/icons/bold/book-open-text-bold.svg create mode 100644 backend/static/icons/bold/book-open-user-bold.svg create mode 100644 backend/static/icons/bold/bookmark-bold.svg create mode 100644 backend/static/icons/bold/bookmark-simple-bold.svg create mode 100644 backend/static/icons/bold/bookmarks-bold.svg create mode 100644 backend/static/icons/bold/bookmarks-simple-bold.svg create mode 100644 backend/static/icons/bold/books-bold.svg create mode 100644 backend/static/icons/bold/boot-bold.svg create mode 100644 backend/static/icons/bold/boules-bold.svg create mode 100644 backend/static/icons/bold/bounding-box-bold.svg create mode 100644 backend/static/icons/bold/bowl-food-bold.svg create mode 100644 backend/static/icons/bold/bowl-steam-bold.svg create mode 100644 backend/static/icons/bold/bowling-ball-bold.svg create mode 100644 backend/static/icons/bold/box-arrow-down-bold.svg create mode 100644 backend/static/icons/bold/box-arrow-up-bold.svg create mode 100644 backend/static/icons/bold/boxing-glove-bold.svg create mode 100644 backend/static/icons/bold/brackets-angle-bold.svg create mode 100644 backend/static/icons/bold/brackets-curly-bold.svg create mode 100644 backend/static/icons/bold/brackets-round-bold.svg create mode 100644 backend/static/icons/bold/brackets-square-bold.svg create mode 100644 backend/static/icons/bold/brain-bold.svg create mode 100644 backend/static/icons/bold/brandy-bold.svg create mode 100644 backend/static/icons/bold/bread-bold.svg create mode 100644 backend/static/icons/bold/bridge-bold.svg create mode 100644 backend/static/icons/bold/briefcase-bold.svg create mode 100644 backend/static/icons/bold/briefcase-metal-bold.svg create mode 100644 backend/static/icons/bold/broadcast-bold.svg create mode 100644 backend/static/icons/bold/broom-bold.svg create mode 100644 backend/static/icons/bold/browser-bold.svg create mode 100644 backend/static/icons/bold/browsers-bold.svg create mode 100644 backend/static/icons/bold/bug-beetle-bold.svg create mode 100644 backend/static/icons/bold/bug-bold.svg create mode 100644 backend/static/icons/bold/bug-droid-bold.svg create mode 100644 backend/static/icons/bold/building-apartment-bold.svg create mode 100644 backend/static/icons/bold/building-bold.svg create mode 100644 backend/static/icons/bold/building-office-bold.svg create mode 100644 backend/static/icons/bold/buildings-bold.svg create mode 100644 backend/static/icons/bold/bulldozer-bold.svg create mode 100644 backend/static/icons/bold/bus-bold.svg create mode 100644 backend/static/icons/bold/butterfly-bold.svg create mode 100644 backend/static/icons/bold/cable-car-bold.svg create mode 100644 backend/static/icons/bold/cactus-bold.svg create mode 100644 backend/static/icons/bold/cake-bold.svg create mode 100644 backend/static/icons/bold/calculator-bold.svg create mode 100644 backend/static/icons/bold/calendar-blank-bold.svg create mode 100644 backend/static/icons/bold/calendar-bold.svg create mode 100644 backend/static/icons/bold/calendar-check-bold.svg create mode 100644 backend/static/icons/bold/calendar-dot-bold.svg create mode 100644 backend/static/icons/bold/calendar-dots-bold.svg create mode 100644 backend/static/icons/bold/calendar-heart-bold.svg create mode 100644 backend/static/icons/bold/calendar-minus-bold.svg create mode 100644 backend/static/icons/bold/calendar-plus-bold.svg create mode 100644 backend/static/icons/bold/calendar-slash-bold.svg create mode 100644 backend/static/icons/bold/calendar-star-bold.svg create mode 100644 backend/static/icons/bold/calendar-x-bold.svg create mode 100644 backend/static/icons/bold/call-bell-bold.svg create mode 100644 backend/static/icons/bold/camera-bold.svg create mode 100644 backend/static/icons/bold/camera-plus-bold.svg create mode 100644 backend/static/icons/bold/camera-rotate-bold.svg create mode 100644 backend/static/icons/bold/camera-slash-bold.svg create mode 100644 backend/static/icons/bold/campfire-bold.svg create mode 100644 backend/static/icons/bold/car-battery-bold.svg create mode 100644 backend/static/icons/bold/car-bold.svg create mode 100644 backend/static/icons/bold/car-profile-bold.svg create mode 100644 backend/static/icons/bold/car-simple-bold.svg create mode 100644 backend/static/icons/bold/cardholder-bold.svg create mode 100644 backend/static/icons/bold/cards-bold.svg create mode 100644 backend/static/icons/bold/cards-three-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-double-down-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-double-left-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-double-right-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-double-up-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-down-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-left-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-right-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-up-bold.svg create mode 100644 backend/static/icons/bold/caret-circle-up-down-bold.svg create mode 100644 backend/static/icons/bold/caret-double-down-bold.svg create mode 100644 backend/static/icons/bold/caret-double-left-bold.svg create mode 100644 backend/static/icons/bold/caret-double-right-bold.svg create mode 100644 backend/static/icons/bold/caret-double-up-bold.svg create mode 100644 backend/static/icons/bold/caret-down-bold.svg create mode 100644 backend/static/icons/bold/caret-left-bold.svg create mode 100644 backend/static/icons/bold/caret-line-down-bold.svg create mode 100644 backend/static/icons/bold/caret-line-left-bold.svg create mode 100644 backend/static/icons/bold/caret-line-right-bold.svg create mode 100644 backend/static/icons/bold/caret-line-up-bold.svg create mode 100644 backend/static/icons/bold/caret-right-bold.svg create mode 100644 backend/static/icons/bold/caret-up-bold.svg create mode 100644 backend/static/icons/bold/caret-up-down-bold.svg create mode 100644 backend/static/icons/bold/carrot-bold.svg create mode 100644 backend/static/icons/bold/cash-register-bold.svg create mode 100644 backend/static/icons/bold/cassette-tape-bold.svg create mode 100644 backend/static/icons/bold/castle-turret-bold.svg create mode 100644 backend/static/icons/bold/cat-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-full-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-high-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-low-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-medium-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-none-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-slash-bold.svg create mode 100644 backend/static/icons/bold/cell-signal-x-bold.svg create mode 100644 backend/static/icons/bold/cell-tower-bold.svg create mode 100644 backend/static/icons/bold/certificate-bold.svg create mode 100644 backend/static/icons/bold/chair-bold.svg create mode 100644 backend/static/icons/bold/chalkboard-bold.svg create mode 100644 backend/static/icons/bold/chalkboard-simple-bold.svg create mode 100644 backend/static/icons/bold/chalkboard-teacher-bold.svg create mode 100644 backend/static/icons/bold/champagne-bold.svg create mode 100644 backend/static/icons/bold/charging-station-bold.svg create mode 100644 backend/static/icons/bold/chart-bar-bold.svg create mode 100644 backend/static/icons/bold/chart-bar-horizontal-bold.svg create mode 100644 backend/static/icons/bold/chart-donut-bold.svg create mode 100644 backend/static/icons/bold/chart-line-bold.svg create mode 100644 backend/static/icons/bold/chart-line-down-bold.svg create mode 100644 backend/static/icons/bold/chart-line-up-bold.svg create mode 100644 backend/static/icons/bold/chart-pie-bold.svg create mode 100644 backend/static/icons/bold/chart-pie-slice-bold.svg create mode 100644 backend/static/icons/bold/chart-polar-bold.svg create mode 100644 backend/static/icons/bold/chart-scatter-bold.svg create mode 100644 backend/static/icons/bold/chat-bold.svg create mode 100644 backend/static/icons/bold/chat-centered-bold.svg create mode 100644 backend/static/icons/bold/chat-centered-dots-bold.svg create mode 100644 backend/static/icons/bold/chat-centered-slash-bold.svg create mode 100644 backend/static/icons/bold/chat-centered-text-bold.svg create mode 100644 backend/static/icons/bold/chat-circle-bold.svg create mode 100644 backend/static/icons/bold/chat-circle-dots-bold.svg create mode 100644 backend/static/icons/bold/chat-circle-slash-bold.svg create mode 100644 backend/static/icons/bold/chat-circle-text-bold.svg create mode 100644 backend/static/icons/bold/chat-dots-bold.svg create mode 100644 backend/static/icons/bold/chat-slash-bold.svg create mode 100644 backend/static/icons/bold/chat-teardrop-bold.svg create mode 100644 backend/static/icons/bold/chat-teardrop-dots-bold.svg create mode 100644 backend/static/icons/bold/chat-teardrop-slash-bold.svg create mode 100644 backend/static/icons/bold/chat-teardrop-text-bold.svg create mode 100644 backend/static/icons/bold/chat-text-bold.svg create mode 100644 backend/static/icons/bold/chats-bold.svg create mode 100644 backend/static/icons/bold/chats-circle-bold.svg create mode 100644 backend/static/icons/bold/chats-teardrop-bold.svg create mode 100644 backend/static/icons/bold/check-bold.svg create mode 100644 backend/static/icons/bold/check-circle-bold.svg create mode 100644 backend/static/icons/bold/check-fat-bold.svg create mode 100644 backend/static/icons/bold/check-square-bold.svg create mode 100644 backend/static/icons/bold/check-square-offset-bold.svg create mode 100644 backend/static/icons/bold/checkerboard-bold.svg create mode 100644 backend/static/icons/bold/checks-bold.svg create mode 100644 backend/static/icons/bold/cheers-bold.svg create mode 100644 backend/static/icons/bold/cheese-bold.svg create mode 100644 backend/static/icons/bold/chef-hat-bold.svg create mode 100644 backend/static/icons/bold/cherries-bold.svg create mode 100644 backend/static/icons/bold/church-bold.svg create mode 100644 backend/static/icons/bold/cigarette-bold.svg create mode 100644 backend/static/icons/bold/cigarette-slash-bold.svg create mode 100644 backend/static/icons/bold/circle-bold.svg create mode 100644 backend/static/icons/bold/circle-dashed-bold.svg create mode 100644 backend/static/icons/bold/circle-half-bold.svg create mode 100644 backend/static/icons/bold/circle-half-tilt-bold.svg create mode 100644 backend/static/icons/bold/circle-notch-bold.svg create mode 100644 backend/static/icons/bold/circles-four-bold.svg create mode 100644 backend/static/icons/bold/circles-three-bold.svg create mode 100644 backend/static/icons/bold/circles-three-plus-bold.svg create mode 100644 backend/static/icons/bold/circuitry-bold.svg create mode 100644 backend/static/icons/bold/city-bold.svg create mode 100644 backend/static/icons/bold/clipboard-bold.svg create mode 100644 backend/static/icons/bold/clipboard-text-bold.svg create mode 100644 backend/static/icons/bold/clock-afternoon-bold.svg create mode 100644 backend/static/icons/bold/clock-bold.svg create mode 100644 backend/static/icons/bold/clock-clockwise-bold.svg create mode 100644 backend/static/icons/bold/clock-countdown-bold.svg create mode 100644 backend/static/icons/bold/clock-counter-clockwise-bold.svg create mode 100644 backend/static/icons/bold/clock-user-bold.svg create mode 100644 backend/static/icons/bold/closed-captioning-bold.svg create mode 100644 backend/static/icons/bold/cloud-arrow-down-bold.svg create mode 100644 backend/static/icons/bold/cloud-arrow-up-bold.svg create mode 100644 backend/static/icons/bold/cloud-bold.svg create mode 100644 backend/static/icons/bold/cloud-check-bold.svg create mode 100644 backend/static/icons/bold/cloud-fog-bold.svg create mode 100644 backend/static/icons/bold/cloud-lightning-bold.svg create mode 100644 backend/static/icons/bold/cloud-moon-bold.svg create mode 100644 backend/static/icons/bold/cloud-rain-bold.svg create mode 100644 backend/static/icons/bold/cloud-slash-bold.svg create mode 100644 backend/static/icons/bold/cloud-snow-bold.svg create mode 100644 backend/static/icons/bold/cloud-sun-bold.svg create mode 100644 backend/static/icons/bold/cloud-warning-bold.svg create mode 100644 backend/static/icons/bold/cloud-x-bold.svg create mode 100644 backend/static/icons/bold/clover-bold.svg create mode 100644 backend/static/icons/bold/club-bold.svg create mode 100644 backend/static/icons/bold/coat-hanger-bold.svg create mode 100644 backend/static/icons/bold/coda-logo-bold.svg create mode 100644 backend/static/icons/bold/code-block-bold.svg create mode 100644 backend/static/icons/bold/code-bold.svg create mode 100644 backend/static/icons/bold/code-simple-bold.svg create mode 100644 backend/static/icons/bold/codepen-logo-bold.svg create mode 100644 backend/static/icons/bold/codesandbox-logo-bold.svg create mode 100644 backend/static/icons/bold/coffee-bean-bold.svg create mode 100644 backend/static/icons/bold/coffee-bold.svg create mode 100644 backend/static/icons/bold/coin-bold.svg create mode 100644 backend/static/icons/bold/coin-vertical-bold.svg create mode 100644 backend/static/icons/bold/coins-bold.svg create mode 100644 backend/static/icons/bold/columns-bold.svg create mode 100644 backend/static/icons/bold/columns-plus-left-bold.svg create mode 100644 backend/static/icons/bold/columns-plus-right-bold.svg create mode 100644 backend/static/icons/bold/command-bold.svg create mode 100644 backend/static/icons/bold/compass-bold.svg create mode 100644 backend/static/icons/bold/compass-rose-bold.svg create mode 100644 backend/static/icons/bold/compass-tool-bold.svg create mode 100644 backend/static/icons/bold/computer-tower-bold.svg create mode 100644 backend/static/icons/bold/confetti-bold.svg create mode 100644 backend/static/icons/bold/contactless-payment-bold.svg create mode 100644 backend/static/icons/bold/control-bold.svg create mode 100644 backend/static/icons/bold/cookie-bold.svg create mode 100644 backend/static/icons/bold/cooking-pot-bold.svg create mode 100644 backend/static/icons/bold/copy-bold.svg create mode 100644 backend/static/icons/bold/copy-simple-bold.svg create mode 100644 backend/static/icons/bold/copyleft-bold.svg create mode 100644 backend/static/icons/bold/copyright-bold.svg create mode 100644 backend/static/icons/bold/corners-in-bold.svg create mode 100644 backend/static/icons/bold/corners-out-bold.svg create mode 100644 backend/static/icons/bold/couch-bold.svg create mode 100644 backend/static/icons/bold/court-basketball-bold.svg create mode 100644 backend/static/icons/bold/cow-bold.svg create mode 100644 backend/static/icons/bold/cowboy-hat-bold.svg create mode 100644 backend/static/icons/bold/cpu-bold.svg create mode 100644 backend/static/icons/bold/crane-bold.svg create mode 100644 backend/static/icons/bold/crane-tower-bold.svg create mode 100644 backend/static/icons/bold/credit-card-bold.svg create mode 100644 backend/static/icons/bold/cricket-bold.svg create mode 100644 backend/static/icons/bold/crop-bold.svg create mode 100644 backend/static/icons/bold/cross-bold.svg create mode 100644 backend/static/icons/bold/crosshair-bold.svg create mode 100644 backend/static/icons/bold/crosshair-simple-bold.svg create mode 100644 backend/static/icons/bold/crown-bold.svg create mode 100644 backend/static/icons/bold/crown-cross-bold.svg create mode 100644 backend/static/icons/bold/crown-simple-bold.svg create mode 100644 backend/static/icons/bold/cube-bold.svg create mode 100644 backend/static/icons/bold/cube-focus-bold.svg create mode 100644 backend/static/icons/bold/cube-transparent-bold.svg create mode 100644 backend/static/icons/bold/currency-btc-bold.svg create mode 100644 backend/static/icons/bold/currency-circle-dollar-bold.svg create mode 100644 backend/static/icons/bold/currency-cny-bold.svg create mode 100644 backend/static/icons/bold/currency-dollar-bold.svg create mode 100644 backend/static/icons/bold/currency-dollar-simple-bold.svg create mode 100644 backend/static/icons/bold/currency-eth-bold.svg create mode 100644 backend/static/icons/bold/currency-eur-bold.svg create mode 100644 backend/static/icons/bold/currency-gbp-bold.svg create mode 100644 backend/static/icons/bold/currency-inr-bold.svg create mode 100644 backend/static/icons/bold/currency-jpy-bold.svg create mode 100644 backend/static/icons/bold/currency-krw-bold.svg create mode 100644 backend/static/icons/bold/currency-kzt-bold.svg create mode 100644 backend/static/icons/bold/currency-ngn-bold.svg create mode 100644 backend/static/icons/bold/currency-rub-bold.svg create mode 100644 backend/static/icons/bold/cursor-bold.svg create mode 100644 backend/static/icons/bold/cursor-click-bold.svg create mode 100644 backend/static/icons/bold/cursor-text-bold.svg create mode 100644 backend/static/icons/bold/cylinder-bold.svg create mode 100644 backend/static/icons/bold/database-bold.svg create mode 100644 backend/static/icons/bold/desk-bold.svg create mode 100644 backend/static/icons/bold/desktop-bold.svg create mode 100644 backend/static/icons/bold/desktop-tower-bold.svg create mode 100644 backend/static/icons/bold/detective-bold.svg create mode 100644 backend/static/icons/bold/dev-to-logo-bold.svg create mode 100644 backend/static/icons/bold/device-mobile-bold.svg create mode 100644 backend/static/icons/bold/device-mobile-camera-bold.svg create mode 100644 backend/static/icons/bold/device-mobile-slash-bold.svg create mode 100644 backend/static/icons/bold/device-mobile-speaker-bold.svg create mode 100644 backend/static/icons/bold/device-rotate-bold.svg create mode 100644 backend/static/icons/bold/device-tablet-bold.svg create mode 100644 backend/static/icons/bold/device-tablet-camera-bold.svg create mode 100644 backend/static/icons/bold/device-tablet-speaker-bold.svg create mode 100644 backend/static/icons/bold/devices-bold.svg create mode 100644 backend/static/icons/bold/diamond-bold.svg create mode 100644 backend/static/icons/bold/diamonds-four-bold.svg create mode 100644 backend/static/icons/bold/dice-five-bold.svg create mode 100644 backend/static/icons/bold/dice-four-bold.svg create mode 100644 backend/static/icons/bold/dice-one-bold.svg create mode 100644 backend/static/icons/bold/dice-six-bold.svg create mode 100644 backend/static/icons/bold/dice-three-bold.svg create mode 100644 backend/static/icons/bold/dice-two-bold.svg create mode 100644 backend/static/icons/bold/disc-bold.svg create mode 100644 backend/static/icons/bold/disco-ball-bold.svg create mode 100644 backend/static/icons/bold/discord-logo-bold.svg create mode 100644 backend/static/icons/bold/divide-bold.svg create mode 100644 backend/static/icons/bold/dna-bold.svg create mode 100644 backend/static/icons/bold/dog-bold.svg create mode 100644 backend/static/icons/bold/door-bold.svg create mode 100644 backend/static/icons/bold/door-open-bold.svg create mode 100644 backend/static/icons/bold/dot-bold.svg create mode 100644 backend/static/icons/bold/dot-outline-bold.svg create mode 100644 backend/static/icons/bold/dots-nine-bold.svg create mode 100644 backend/static/icons/bold/dots-six-bold.svg create mode 100644 backend/static/icons/bold/dots-six-vertical-bold.svg create mode 100644 backend/static/icons/bold/dots-three-bold.svg create mode 100644 backend/static/icons/bold/dots-three-circle-bold.svg create mode 100644 backend/static/icons/bold/dots-three-circle-vertical-bold.svg create mode 100644 backend/static/icons/bold/dots-three-outline-bold.svg create mode 100644 backend/static/icons/bold/dots-three-outline-vertical-bold.svg create mode 100644 backend/static/icons/bold/dots-three-vertical-bold.svg create mode 100644 backend/static/icons/bold/download-bold.svg create mode 100644 backend/static/icons/bold/download-simple-bold.svg create mode 100644 backend/static/icons/bold/dress-bold.svg create mode 100644 backend/static/icons/bold/dresser-bold.svg create mode 100644 backend/static/icons/bold/dribbble-logo-bold.svg create mode 100644 backend/static/icons/bold/drone-bold.svg create mode 100644 backend/static/icons/bold/drop-bold.svg create mode 100644 backend/static/icons/bold/drop-half-bold.svg create mode 100644 backend/static/icons/bold/drop-half-bottom-bold.svg create mode 100644 backend/static/icons/bold/drop-simple-bold.svg create mode 100644 backend/static/icons/bold/drop-slash-bold.svg create mode 100644 backend/static/icons/bold/dropbox-logo-bold.svg create mode 100644 backend/static/icons/bold/ear-bold.svg create mode 100644 backend/static/icons/bold/ear-slash-bold.svg create mode 100644 backend/static/icons/bold/egg-bold.svg create mode 100644 backend/static/icons/bold/egg-crack-bold.svg create mode 100644 backend/static/icons/bold/eject-bold.svg create mode 100644 backend/static/icons/bold/eject-simple-bold.svg create mode 100644 backend/static/icons/bold/elevator-bold.svg create mode 100644 backend/static/icons/bold/empty-bold.svg create mode 100644 backend/static/icons/bold/engine-bold.svg create mode 100644 backend/static/icons/bold/envelope-bold.svg create mode 100644 backend/static/icons/bold/envelope-open-bold.svg create mode 100644 backend/static/icons/bold/envelope-simple-bold.svg create mode 100644 backend/static/icons/bold/envelope-simple-open-bold.svg create mode 100644 backend/static/icons/bold/equalizer-bold.svg create mode 100644 backend/static/icons/bold/equals-bold.svg create mode 100644 backend/static/icons/bold/eraser-bold.svg create mode 100644 backend/static/icons/bold/escalator-down-bold.svg create mode 100644 backend/static/icons/bold/escalator-up-bold.svg create mode 100644 backend/static/icons/bold/exam-bold.svg create mode 100644 backend/static/icons/bold/exclamation-mark-bold.svg create mode 100644 backend/static/icons/bold/exclude-bold.svg create mode 100644 backend/static/icons/bold/exclude-square-bold.svg create mode 100644 backend/static/icons/bold/export-bold.svg create mode 100644 backend/static/icons/bold/eye-bold.svg create mode 100644 backend/static/icons/bold/eye-closed-bold.svg create mode 100644 backend/static/icons/bold/eye-slash-bold.svg create mode 100644 backend/static/icons/bold/eyedropper-bold.svg create mode 100644 backend/static/icons/bold/eyedropper-sample-bold.svg create mode 100644 backend/static/icons/bold/eyeglasses-bold.svg create mode 100644 backend/static/icons/bold/eyes-bold.svg create mode 100644 backend/static/icons/bold/face-mask-bold.svg create mode 100644 backend/static/icons/bold/facebook-logo-bold.svg create mode 100644 backend/static/icons/bold/factory-bold.svg create mode 100644 backend/static/icons/bold/faders-bold.svg create mode 100644 backend/static/icons/bold/faders-horizontal-bold.svg create mode 100644 backend/static/icons/bold/fallout-shelter-bold.svg create mode 100644 backend/static/icons/bold/fan-bold.svg create mode 100644 backend/static/icons/bold/farm-bold.svg create mode 100644 backend/static/icons/bold/fast-forward-bold.svg create mode 100644 backend/static/icons/bold/fast-forward-circle-bold.svg create mode 100644 backend/static/icons/bold/feather-bold.svg create mode 100644 backend/static/icons/bold/fediverse-logo-bold.svg create mode 100644 backend/static/icons/bold/figma-logo-bold.svg create mode 100644 backend/static/icons/bold/file-archive-bold.svg create mode 100644 backend/static/icons/bold/file-arrow-down-bold.svg create mode 100644 backend/static/icons/bold/file-arrow-up-bold.svg create mode 100644 backend/static/icons/bold/file-audio-bold.svg create mode 100644 backend/static/icons/bold/file-bold.svg create mode 100644 backend/static/icons/bold/file-c-bold.svg create mode 100644 backend/static/icons/bold/file-c-sharp-bold.svg create mode 100644 backend/static/icons/bold/file-cloud-bold.svg create mode 100644 backend/static/icons/bold/file-code-bold.svg create mode 100644 backend/static/icons/bold/file-cpp-bold.svg create mode 100644 backend/static/icons/bold/file-css-bold.svg create mode 100644 backend/static/icons/bold/file-csv-bold.svg create mode 100644 backend/static/icons/bold/file-dashed-bold.svg create mode 100644 backend/static/icons/bold/file-doc-bold.svg create mode 100644 backend/static/icons/bold/file-html-bold.svg create mode 100644 backend/static/icons/bold/file-image-bold.svg create mode 100644 backend/static/icons/bold/file-ini-bold.svg create mode 100644 backend/static/icons/bold/file-jpg-bold.svg create mode 100644 backend/static/icons/bold/file-js-bold.svg create mode 100644 backend/static/icons/bold/file-jsx-bold.svg create mode 100644 backend/static/icons/bold/file-lock-bold.svg create mode 100644 backend/static/icons/bold/file-magnifying-glass-bold.svg create mode 100644 backend/static/icons/bold/file-md-bold.svg create mode 100644 backend/static/icons/bold/file-minus-bold.svg create mode 100644 backend/static/icons/bold/file-pdf-bold.svg create mode 100644 backend/static/icons/bold/file-plus-bold.svg create mode 100644 backend/static/icons/bold/file-png-bold.svg create mode 100644 backend/static/icons/bold/file-ppt-bold.svg create mode 100644 backend/static/icons/bold/file-py-bold.svg create mode 100644 backend/static/icons/bold/file-rs-bold.svg create mode 100644 backend/static/icons/bold/file-sql-bold.svg create mode 100644 backend/static/icons/bold/file-svg-bold.svg create mode 100644 backend/static/icons/bold/file-text-bold.svg create mode 100644 backend/static/icons/bold/file-ts-bold.svg create mode 100644 backend/static/icons/bold/file-tsx-bold.svg create mode 100644 backend/static/icons/bold/file-txt-bold.svg create mode 100644 backend/static/icons/bold/file-video-bold.svg create mode 100644 backend/static/icons/bold/file-vue-bold.svg create mode 100644 backend/static/icons/bold/file-x-bold.svg create mode 100644 backend/static/icons/bold/file-xls-bold.svg create mode 100644 backend/static/icons/bold/file-zip-bold.svg create mode 100644 backend/static/icons/bold/files-bold.svg create mode 100644 backend/static/icons/bold/film-reel-bold.svg create mode 100644 backend/static/icons/bold/film-script-bold.svg create mode 100644 backend/static/icons/bold/film-slate-bold.svg create mode 100644 backend/static/icons/bold/film-strip-bold.svg create mode 100644 backend/static/icons/bold/fingerprint-bold.svg create mode 100644 backend/static/icons/bold/fingerprint-simple-bold.svg create mode 100644 backend/static/icons/bold/finn-the-human-bold.svg create mode 100644 backend/static/icons/bold/fire-bold.svg create mode 100644 backend/static/icons/bold/fire-extinguisher-bold.svg create mode 100644 backend/static/icons/bold/fire-simple-bold.svg create mode 100644 backend/static/icons/bold/fire-truck-bold.svg create mode 100644 backend/static/icons/bold/first-aid-bold.svg create mode 100644 backend/static/icons/bold/first-aid-kit-bold.svg create mode 100644 backend/static/icons/bold/fish-bold.svg create mode 100644 backend/static/icons/bold/fish-simple-bold.svg create mode 100644 backend/static/icons/bold/flag-banner-bold.svg create mode 100644 backend/static/icons/bold/flag-banner-fold-bold.svg create mode 100644 backend/static/icons/bold/flag-bold.svg create mode 100644 backend/static/icons/bold/flag-checkered-bold.svg create mode 100644 backend/static/icons/bold/flag-pennant-bold.svg create mode 100644 backend/static/icons/bold/flame-bold.svg create mode 100644 backend/static/icons/bold/flashlight-bold.svg create mode 100644 backend/static/icons/bold/flask-bold.svg create mode 100644 backend/static/icons/bold/flip-horizontal-bold.svg create mode 100644 backend/static/icons/bold/flip-vertical-bold.svg create mode 100644 backend/static/icons/bold/floppy-disk-back-bold.svg create mode 100644 backend/static/icons/bold/floppy-disk-bold.svg create mode 100644 backend/static/icons/bold/flow-arrow-bold.svg create mode 100644 backend/static/icons/bold/flower-bold.svg create mode 100644 backend/static/icons/bold/flower-lotus-bold.svg create mode 100644 backend/static/icons/bold/flower-tulip-bold.svg create mode 100644 backend/static/icons/bold/flying-saucer-bold.svg create mode 100644 backend/static/icons/bold/folder-bold.svg create mode 100644 backend/static/icons/bold/folder-dashed-bold.svg create mode 100644 backend/static/icons/bold/folder-lock-bold.svg create mode 100644 backend/static/icons/bold/folder-minus-bold.svg create mode 100644 backend/static/icons/bold/folder-open-bold.svg create mode 100644 backend/static/icons/bold/folder-plus-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-dashed-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-lock-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-minus-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-plus-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-star-bold.svg create mode 100644 backend/static/icons/bold/folder-simple-user-bold.svg create mode 100644 backend/static/icons/bold/folder-star-bold.svg create mode 100644 backend/static/icons/bold/folder-user-bold.svg create mode 100644 backend/static/icons/bold/folders-bold.svg create mode 100644 backend/static/icons/bold/football-bold.svg create mode 100644 backend/static/icons/bold/football-helmet-bold.svg create mode 100644 backend/static/icons/bold/footprints-bold.svg create mode 100644 backend/static/icons/bold/fork-knife-bold.svg create mode 100644 backend/static/icons/bold/four-k-bold.svg create mode 100644 backend/static/icons/bold/frame-corners-bold.svg create mode 100644 backend/static/icons/bold/framer-logo-bold.svg create mode 100644 backend/static/icons/bold/function-bold.svg create mode 100644 backend/static/icons/bold/funnel-bold.svg create mode 100644 backend/static/icons/bold/funnel-simple-bold.svg create mode 100644 backend/static/icons/bold/funnel-simple-x-bold.svg create mode 100644 backend/static/icons/bold/funnel-x-bold.svg create mode 100644 backend/static/icons/bold/game-controller-bold.svg create mode 100644 backend/static/icons/bold/garage-bold.svg create mode 100644 backend/static/icons/bold/gas-can-bold.svg create mode 100644 backend/static/icons/bold/gas-pump-bold.svg create mode 100644 backend/static/icons/bold/gauge-bold.svg create mode 100644 backend/static/icons/bold/gavel-bold.svg create mode 100644 backend/static/icons/bold/gear-bold.svg create mode 100644 backend/static/icons/bold/gear-fine-bold.svg create mode 100644 backend/static/icons/bold/gear-six-bold.svg create mode 100644 backend/static/icons/bold/gender-female-bold.svg create mode 100644 backend/static/icons/bold/gender-intersex-bold.svg create mode 100644 backend/static/icons/bold/gender-male-bold.svg create mode 100644 backend/static/icons/bold/gender-neuter-bold.svg create mode 100644 backend/static/icons/bold/gender-nonbinary-bold.svg create mode 100644 backend/static/icons/bold/gender-transgender-bold.svg create mode 100644 backend/static/icons/bold/ghost-bold.svg create mode 100644 backend/static/icons/bold/gif-bold.svg create mode 100644 backend/static/icons/bold/gift-bold.svg create mode 100644 backend/static/icons/bold/git-branch-bold.svg create mode 100644 backend/static/icons/bold/git-commit-bold.svg create mode 100644 backend/static/icons/bold/git-diff-bold.svg create mode 100644 backend/static/icons/bold/git-fork-bold.svg create mode 100644 backend/static/icons/bold/git-merge-bold.svg create mode 100644 backend/static/icons/bold/git-pull-request-bold.svg create mode 100644 backend/static/icons/bold/github-logo-bold.svg create mode 100644 backend/static/icons/bold/gitlab-logo-bold.svg create mode 100644 backend/static/icons/bold/gitlab-logo-simple-bold.svg create mode 100644 backend/static/icons/bold/globe-bold.svg create mode 100644 backend/static/icons/bold/globe-hemisphere-east-bold.svg create mode 100644 backend/static/icons/bold/globe-hemisphere-west-bold.svg create mode 100644 backend/static/icons/bold/globe-simple-bold.svg create mode 100644 backend/static/icons/bold/globe-simple-x-bold.svg create mode 100644 backend/static/icons/bold/globe-stand-bold.svg create mode 100644 backend/static/icons/bold/globe-x-bold.svg create mode 100644 backend/static/icons/bold/goggles-bold.svg create mode 100644 backend/static/icons/bold/golf-bold.svg create mode 100644 backend/static/icons/bold/goodreads-logo-bold.svg create mode 100644 backend/static/icons/bold/google-cardboard-logo-bold.svg create mode 100644 backend/static/icons/bold/google-chrome-logo-bold.svg create mode 100644 backend/static/icons/bold/google-drive-logo-bold.svg create mode 100644 backend/static/icons/bold/google-logo-bold.svg create mode 100644 backend/static/icons/bold/google-photos-logo-bold.svg create mode 100644 backend/static/icons/bold/google-play-logo-bold.svg create mode 100644 backend/static/icons/bold/google-podcasts-logo-bold.svg create mode 100644 backend/static/icons/bold/gps-bold.svg create mode 100644 backend/static/icons/bold/gps-fix-bold.svg create mode 100644 backend/static/icons/bold/gps-slash-bold.svg create mode 100644 backend/static/icons/bold/gradient-bold.svg create mode 100644 backend/static/icons/bold/graduation-cap-bold.svg create mode 100644 backend/static/icons/bold/grains-bold.svg create mode 100644 backend/static/icons/bold/grains-slash-bold.svg create mode 100644 backend/static/icons/bold/graph-bold.svg create mode 100644 backend/static/icons/bold/graphics-card-bold.svg create mode 100644 backend/static/icons/bold/greater-than-bold.svg create mode 100644 backend/static/icons/bold/greater-than-or-equal-bold.svg create mode 100644 backend/static/icons/bold/grid-four-bold.svg create mode 100644 backend/static/icons/bold/grid-nine-bold.svg create mode 100644 backend/static/icons/bold/guitar-bold.svg create mode 100644 backend/static/icons/bold/hair-dryer-bold.svg create mode 100644 backend/static/icons/bold/hamburger-bold.svg create mode 100644 backend/static/icons/bold/hammer-bold.svg create mode 100644 backend/static/icons/bold/hand-arrow-down-bold.svg create mode 100644 backend/static/icons/bold/hand-arrow-up-bold.svg create mode 100644 backend/static/icons/bold/hand-bold.svg create mode 100644 backend/static/icons/bold/hand-coins-bold.svg create mode 100644 backend/static/icons/bold/hand-deposit-bold.svg create mode 100644 backend/static/icons/bold/hand-eye-bold.svg create mode 100644 backend/static/icons/bold/hand-fist-bold.svg create mode 100644 backend/static/icons/bold/hand-grabbing-bold.svg create mode 100644 backend/static/icons/bold/hand-heart-bold.svg create mode 100644 backend/static/icons/bold/hand-palm-bold.svg create mode 100644 backend/static/icons/bold/hand-peace-bold.svg create mode 100644 backend/static/icons/bold/hand-pointing-bold.svg create mode 100644 backend/static/icons/bold/hand-soap-bold.svg create mode 100644 backend/static/icons/bold/hand-swipe-left-bold.svg create mode 100644 backend/static/icons/bold/hand-swipe-right-bold.svg create mode 100644 backend/static/icons/bold/hand-tap-bold.svg create mode 100644 backend/static/icons/bold/hand-waving-bold.svg create mode 100644 backend/static/icons/bold/hand-withdraw-bold.svg create mode 100644 backend/static/icons/bold/handbag-bold.svg create mode 100644 backend/static/icons/bold/handbag-simple-bold.svg create mode 100644 backend/static/icons/bold/hands-clapping-bold.svg create mode 100644 backend/static/icons/bold/hands-praying-bold.svg create mode 100644 backend/static/icons/bold/handshake-bold.svg create mode 100644 backend/static/icons/bold/hard-drive-bold.svg create mode 100644 backend/static/icons/bold/hard-drives-bold.svg create mode 100644 backend/static/icons/bold/hard-hat-bold.svg create mode 100644 backend/static/icons/bold/hash-bold.svg create mode 100644 backend/static/icons/bold/hash-straight-bold.svg create mode 100644 backend/static/icons/bold/head-circuit-bold.svg create mode 100644 backend/static/icons/bold/headlights-bold.svg create mode 100644 backend/static/icons/bold/headphones-bold.svg create mode 100644 backend/static/icons/bold/headset-bold.svg create mode 100644 backend/static/icons/bold/heart-bold.svg create mode 100644 backend/static/icons/bold/heart-break-bold.svg create mode 100644 backend/static/icons/bold/heart-half-bold.svg create mode 100644 backend/static/icons/bold/heart-straight-bold.svg create mode 100644 backend/static/icons/bold/heart-straight-break-bold.svg create mode 100644 backend/static/icons/bold/heartbeat-bold.svg create mode 100644 backend/static/icons/bold/hexagon-bold.svg create mode 100644 backend/static/icons/bold/high-definition-bold.svg create mode 100644 backend/static/icons/bold/high-heel-bold.svg create mode 100644 backend/static/icons/bold/highlighter-bold.svg create mode 100644 backend/static/icons/bold/highlighter-circle-bold.svg create mode 100644 backend/static/icons/bold/hockey-bold.svg create mode 100644 backend/static/icons/bold/hoodie-bold.svg create mode 100644 backend/static/icons/bold/horse-bold.svg create mode 100644 backend/static/icons/bold/hospital-bold.svg create mode 100644 backend/static/icons/bold/hourglass-bold.svg create mode 100644 backend/static/icons/bold/hourglass-high-bold.svg create mode 100644 backend/static/icons/bold/hourglass-low-bold.svg create mode 100644 backend/static/icons/bold/hourglass-medium-bold.svg create mode 100644 backend/static/icons/bold/hourglass-simple-bold.svg create mode 100644 backend/static/icons/bold/hourglass-simple-high-bold.svg create mode 100644 backend/static/icons/bold/hourglass-simple-low-bold.svg create mode 100644 backend/static/icons/bold/hourglass-simple-medium-bold.svg create mode 100644 backend/static/icons/bold/house-bold.svg create mode 100644 backend/static/icons/bold/house-line-bold.svg create mode 100644 backend/static/icons/bold/house-simple-bold.svg create mode 100644 backend/static/icons/bold/hurricane-bold.svg create mode 100644 backend/static/icons/bold/ice-cream-bold.svg create mode 100644 backend/static/icons/bold/identification-badge-bold.svg create mode 100644 backend/static/icons/bold/identification-card-bold.svg create mode 100644 backend/static/icons/bold/image-bold.svg create mode 100644 backend/static/icons/bold/image-broken-bold.svg create mode 100644 backend/static/icons/bold/image-square-bold.svg create mode 100644 backend/static/icons/bold/images-bold.svg create mode 100644 backend/static/icons/bold/images-square-bold.svg create mode 100644 backend/static/icons/bold/infinity-bold.svg create mode 100644 backend/static/icons/bold/info-bold.svg create mode 100644 backend/static/icons/bold/instagram-logo-bold.svg create mode 100644 backend/static/icons/bold/intersect-bold.svg create mode 100644 backend/static/icons/bold/intersect-square-bold.svg create mode 100644 backend/static/icons/bold/intersect-three-bold.svg create mode 100644 backend/static/icons/bold/intersection-bold.svg create mode 100644 backend/static/icons/bold/invoice-bold.svg create mode 100644 backend/static/icons/bold/island-bold.svg create mode 100644 backend/static/icons/bold/jar-bold.svg create mode 100644 backend/static/icons/bold/jar-label-bold.svg create mode 100644 backend/static/icons/bold/jeep-bold.svg create mode 100644 backend/static/icons/bold/joystick-bold.svg create mode 100644 backend/static/icons/bold/kanban-bold.svg create mode 100644 backend/static/icons/bold/key-bold.svg create mode 100644 backend/static/icons/bold/key-return-bold.svg create mode 100644 backend/static/icons/bold/keyboard-bold.svg create mode 100644 backend/static/icons/bold/keyhole-bold.svg create mode 100644 backend/static/icons/bold/knife-bold.svg create mode 100644 backend/static/icons/bold/ladder-bold.svg create mode 100644 backend/static/icons/bold/ladder-simple-bold.svg create mode 100644 backend/static/icons/bold/lamp-bold.svg create mode 100644 backend/static/icons/bold/lamp-pendant-bold.svg create mode 100644 backend/static/icons/bold/laptop-bold.svg create mode 100644 backend/static/icons/bold/lasso-bold.svg create mode 100644 backend/static/icons/bold/lastfm-logo-bold.svg create mode 100644 backend/static/icons/bold/layout-bold.svg create mode 100644 backend/static/icons/bold/leaf-bold.svg create mode 100644 backend/static/icons/bold/lectern-bold.svg create mode 100644 backend/static/icons/bold/lego-bold.svg create mode 100644 backend/static/icons/bold/lego-smiley-bold.svg create mode 100644 backend/static/icons/bold/less-than-bold.svg create mode 100644 backend/static/icons/bold/less-than-or-equal-bold.svg create mode 100644 backend/static/icons/bold/letter-circle-h-bold.svg create mode 100644 backend/static/icons/bold/letter-circle-p-bold.svg create mode 100644 backend/static/icons/bold/letter-circle-v-bold.svg create mode 100644 backend/static/icons/bold/lifebuoy-bold.svg create mode 100644 backend/static/icons/bold/lightbulb-bold.svg create mode 100644 backend/static/icons/bold/lightbulb-filament-bold.svg create mode 100644 backend/static/icons/bold/lighthouse-bold.svg create mode 100644 backend/static/icons/bold/lightning-a-bold.svg create mode 100644 backend/static/icons/bold/lightning-bold.svg create mode 100644 backend/static/icons/bold/lightning-slash-bold.svg create mode 100644 backend/static/icons/bold/line-segment-bold.svg create mode 100644 backend/static/icons/bold/line-segments-bold.svg create mode 100644 backend/static/icons/bold/line-vertical-bold.svg create mode 100644 backend/static/icons/bold/link-bold.svg create mode 100644 backend/static/icons/bold/link-break-bold.svg create mode 100644 backend/static/icons/bold/link-simple-bold.svg create mode 100644 backend/static/icons/bold/link-simple-break-bold.svg create mode 100644 backend/static/icons/bold/link-simple-horizontal-bold.svg create mode 100644 backend/static/icons/bold/link-simple-horizontal-break-bold.svg create mode 100644 backend/static/icons/bold/linkedin-logo-bold.svg create mode 100644 backend/static/icons/bold/linktree-logo-bold.svg create mode 100644 backend/static/icons/bold/linux-logo-bold.svg create mode 100644 backend/static/icons/bold/list-bold.svg create mode 100644 backend/static/icons/bold/list-bullets-bold.svg create mode 100644 backend/static/icons/bold/list-checks-bold.svg create mode 100644 backend/static/icons/bold/list-dashes-bold.svg create mode 100644 backend/static/icons/bold/list-heart-bold.svg create mode 100644 backend/static/icons/bold/list-magnifying-glass-bold.svg create mode 100644 backend/static/icons/bold/list-numbers-bold.svg create mode 100644 backend/static/icons/bold/list-plus-bold.svg create mode 100644 backend/static/icons/bold/list-star-bold.svg create mode 100644 backend/static/icons/bold/lock-bold.svg create mode 100644 backend/static/icons/bold/lock-key-bold.svg create mode 100644 backend/static/icons/bold/lock-key-open-bold.svg create mode 100644 backend/static/icons/bold/lock-laminated-bold.svg create mode 100644 backend/static/icons/bold/lock-laminated-open-bold.svg create mode 100644 backend/static/icons/bold/lock-open-bold.svg create mode 100644 backend/static/icons/bold/lock-simple-bold.svg create mode 100644 backend/static/icons/bold/lock-simple-open-bold.svg create mode 100644 backend/static/icons/bold/lockers-bold.svg create mode 100644 backend/static/icons/bold/log-bold.svg create mode 100644 backend/static/icons/bold/magic-wand-bold.svg create mode 100644 backend/static/icons/bold/magnet-bold.svg create mode 100644 backend/static/icons/bold/magnet-straight-bold.svg create mode 100644 backend/static/icons/bold/magnifying-glass-bold.svg create mode 100644 backend/static/icons/bold/magnifying-glass-minus-bold.svg create mode 100644 backend/static/icons/bold/magnifying-glass-plus-bold.svg create mode 100644 backend/static/icons/bold/mailbox-bold.svg create mode 100644 backend/static/icons/bold/map-pin-area-bold.svg create mode 100644 backend/static/icons/bold/map-pin-bold.svg create mode 100644 backend/static/icons/bold/map-pin-line-bold.svg create mode 100644 backend/static/icons/bold/map-pin-plus-bold.svg create mode 100644 backend/static/icons/bold/map-pin-simple-area-bold.svg create mode 100644 backend/static/icons/bold/map-pin-simple-bold.svg create mode 100644 backend/static/icons/bold/map-pin-simple-line-bold.svg create mode 100644 backend/static/icons/bold/map-trifold-bold.svg create mode 100644 backend/static/icons/bold/markdown-logo-bold.svg create mode 100644 backend/static/icons/bold/marker-circle-bold.svg create mode 100644 backend/static/icons/bold/martini-bold.svg create mode 100644 backend/static/icons/bold/mask-happy-bold.svg create mode 100644 backend/static/icons/bold/mask-sad-bold.svg create mode 100644 backend/static/icons/bold/mastodon-logo-bold.svg create mode 100644 backend/static/icons/bold/math-operations-bold.svg create mode 100644 backend/static/icons/bold/matrix-logo-bold.svg create mode 100644 backend/static/icons/bold/medal-bold.svg create mode 100644 backend/static/icons/bold/medal-military-bold.svg create mode 100644 backend/static/icons/bold/medium-logo-bold.svg create mode 100644 backend/static/icons/bold/megaphone-bold.svg create mode 100644 backend/static/icons/bold/megaphone-simple-bold.svg create mode 100644 backend/static/icons/bold/member-of-bold.svg create mode 100644 backend/static/icons/bold/memory-bold.svg create mode 100644 backend/static/icons/bold/messenger-logo-bold.svg create mode 100644 backend/static/icons/bold/meta-logo-bold.svg create mode 100644 backend/static/icons/bold/meteor-bold.svg create mode 100644 backend/static/icons/bold/metronome-bold.svg create mode 100644 backend/static/icons/bold/microphone-bold.svg create mode 100644 backend/static/icons/bold/microphone-slash-bold.svg create mode 100644 backend/static/icons/bold/microphone-stage-bold.svg create mode 100644 backend/static/icons/bold/microscope-bold.svg create mode 100644 backend/static/icons/bold/microsoft-excel-logo-bold.svg create mode 100644 backend/static/icons/bold/microsoft-outlook-logo-bold.svg create mode 100644 backend/static/icons/bold/microsoft-powerpoint-logo-bold.svg create mode 100644 backend/static/icons/bold/microsoft-teams-logo-bold.svg create mode 100644 backend/static/icons/bold/microsoft-word-logo-bold.svg create mode 100644 backend/static/icons/bold/minus-bold.svg create mode 100644 backend/static/icons/bold/minus-circle-bold.svg create mode 100644 backend/static/icons/bold/minus-square-bold.svg create mode 100644 backend/static/icons/bold/money-bold.svg create mode 100644 backend/static/icons/bold/money-wavy-bold.svg create mode 100644 backend/static/icons/bold/monitor-arrow-up-bold.svg create mode 100644 backend/static/icons/bold/monitor-bold.svg create mode 100644 backend/static/icons/bold/monitor-play-bold.svg create mode 100644 backend/static/icons/bold/moon-bold.svg create mode 100644 backend/static/icons/bold/moon-stars-bold.svg create mode 100644 backend/static/icons/bold/moped-bold.svg create mode 100644 backend/static/icons/bold/moped-front-bold.svg create mode 100644 backend/static/icons/bold/mosque-bold.svg create mode 100644 backend/static/icons/bold/motorcycle-bold.svg create mode 100644 backend/static/icons/bold/mountains-bold.svg create mode 100644 backend/static/icons/bold/mouse-bold.svg create mode 100644 backend/static/icons/bold/mouse-left-click-bold.svg create mode 100644 backend/static/icons/bold/mouse-middle-click-bold.svg create mode 100644 backend/static/icons/bold/mouse-right-click-bold.svg create mode 100644 backend/static/icons/bold/mouse-scroll-bold.svg create mode 100644 backend/static/icons/bold/mouse-simple-bold.svg create mode 100644 backend/static/icons/bold/music-note-bold.svg create mode 100644 backend/static/icons/bold/music-note-simple-bold.svg create mode 100644 backend/static/icons/bold/music-notes-bold.svg create mode 100644 backend/static/icons/bold/music-notes-minus-bold.svg create mode 100644 backend/static/icons/bold/music-notes-plus-bold.svg create mode 100644 backend/static/icons/bold/music-notes-simple-bold.svg create mode 100644 backend/static/icons/bold/navigation-arrow-bold.svg create mode 100644 backend/static/icons/bold/needle-bold.svg create mode 100644 backend/static/icons/bold/network-bold.svg create mode 100644 backend/static/icons/bold/network-slash-bold.svg create mode 100644 backend/static/icons/bold/network-x-bold.svg create mode 100644 backend/static/icons/bold/newspaper-bold.svg create mode 100644 backend/static/icons/bold/newspaper-clipping-bold.svg create mode 100644 backend/static/icons/bold/not-equals-bold.svg create mode 100644 backend/static/icons/bold/not-member-of-bold.svg create mode 100644 backend/static/icons/bold/not-subset-of-bold.svg create mode 100644 backend/static/icons/bold/not-superset-of-bold.svg create mode 100644 backend/static/icons/bold/notches-bold.svg create mode 100644 backend/static/icons/bold/note-blank-bold.svg create mode 100644 backend/static/icons/bold/note-bold.svg create mode 100644 backend/static/icons/bold/note-pencil-bold.svg create mode 100644 backend/static/icons/bold/notebook-bold.svg create mode 100644 backend/static/icons/bold/notepad-bold.svg create mode 100644 backend/static/icons/bold/notification-bold.svg create mode 100644 backend/static/icons/bold/notion-logo-bold.svg create mode 100644 backend/static/icons/bold/nuclear-plant-bold.svg create mode 100644 backend/static/icons/bold/number-circle-eight-bold.svg create mode 100644 backend/static/icons/bold/number-circle-five-bold.svg create mode 100644 backend/static/icons/bold/number-circle-four-bold.svg create mode 100644 backend/static/icons/bold/number-circle-nine-bold.svg create mode 100644 backend/static/icons/bold/number-circle-one-bold.svg create mode 100644 backend/static/icons/bold/number-circle-seven-bold.svg create mode 100644 backend/static/icons/bold/number-circle-six-bold.svg create mode 100644 backend/static/icons/bold/number-circle-three-bold.svg create mode 100644 backend/static/icons/bold/number-circle-two-bold.svg create mode 100644 backend/static/icons/bold/number-circle-zero-bold.svg create mode 100644 backend/static/icons/bold/number-eight-bold.svg create mode 100644 backend/static/icons/bold/number-five-bold.svg create mode 100644 backend/static/icons/bold/number-four-bold.svg create mode 100644 backend/static/icons/bold/number-nine-bold.svg create mode 100644 backend/static/icons/bold/number-one-bold.svg create mode 100644 backend/static/icons/bold/number-seven-bold.svg create mode 100644 backend/static/icons/bold/number-six-bold.svg create mode 100644 backend/static/icons/bold/number-square-eight-bold.svg create mode 100644 backend/static/icons/bold/number-square-five-bold.svg create mode 100644 backend/static/icons/bold/number-square-four-bold.svg create mode 100644 backend/static/icons/bold/number-square-nine-bold.svg create mode 100644 backend/static/icons/bold/number-square-one-bold.svg create mode 100644 backend/static/icons/bold/number-square-seven-bold.svg create mode 100644 backend/static/icons/bold/number-square-six-bold.svg create mode 100644 backend/static/icons/bold/number-square-three-bold.svg create mode 100644 backend/static/icons/bold/number-square-two-bold.svg create mode 100644 backend/static/icons/bold/number-square-zero-bold.svg create mode 100644 backend/static/icons/bold/number-three-bold.svg create mode 100644 backend/static/icons/bold/number-two-bold.svg create mode 100644 backend/static/icons/bold/number-zero-bold.svg create mode 100644 backend/static/icons/bold/numpad-bold.svg create mode 100644 backend/static/icons/bold/nut-bold.svg create mode 100644 backend/static/icons/bold/ny-times-logo-bold.svg create mode 100644 backend/static/icons/bold/octagon-bold.svg create mode 100644 backend/static/icons/bold/office-chair-bold.svg create mode 100644 backend/static/icons/bold/onigiri-bold.svg create mode 100644 backend/static/icons/bold/open-ai-logo-bold.svg create mode 100644 backend/static/icons/bold/option-bold.svg create mode 100644 backend/static/icons/bold/orange-bold.svg create mode 100644 backend/static/icons/bold/orange-slice-bold.svg create mode 100644 backend/static/icons/bold/oven-bold.svg create mode 100644 backend/static/icons/bold/package-bold.svg create mode 100644 backend/static/icons/bold/paint-brush-bold.svg create mode 100644 backend/static/icons/bold/paint-brush-broad-bold.svg create mode 100644 backend/static/icons/bold/paint-brush-household-bold.svg create mode 100644 backend/static/icons/bold/paint-bucket-bold.svg create mode 100644 backend/static/icons/bold/paint-roller-bold.svg create mode 100644 backend/static/icons/bold/palette-bold.svg create mode 100644 backend/static/icons/bold/panorama-bold.svg create mode 100644 backend/static/icons/bold/pants-bold.svg create mode 100644 backend/static/icons/bold/paper-plane-bold.svg create mode 100644 backend/static/icons/bold/paper-plane-right-bold.svg create mode 100644 backend/static/icons/bold/paper-plane-tilt-bold.svg create mode 100644 backend/static/icons/bold/paperclip-bold.svg create mode 100644 backend/static/icons/bold/paperclip-horizontal-bold.svg create mode 100644 backend/static/icons/bold/parachute-bold.svg create mode 100644 backend/static/icons/bold/paragraph-bold.svg create mode 100644 backend/static/icons/bold/parallelogram-bold.svg create mode 100644 backend/static/icons/bold/park-bold.svg create mode 100644 backend/static/icons/bold/password-bold.svg create mode 100644 backend/static/icons/bold/path-bold.svg create mode 100644 backend/static/icons/bold/patreon-logo-bold.svg create mode 100644 backend/static/icons/bold/pause-bold.svg create mode 100644 backend/static/icons/bold/pause-circle-bold.svg create mode 100644 backend/static/icons/bold/paw-print-bold.svg create mode 100644 backend/static/icons/bold/paypal-logo-bold.svg create mode 100644 backend/static/icons/bold/peace-bold.svg create mode 100644 backend/static/icons/bold/pen-bold.svg create mode 100644 backend/static/icons/bold/pen-nib-bold.svg create mode 100644 backend/static/icons/bold/pen-nib-straight-bold.svg create mode 100644 backend/static/icons/bold/pencil-bold.svg create mode 100644 backend/static/icons/bold/pencil-circle-bold.svg create mode 100644 backend/static/icons/bold/pencil-line-bold.svg create mode 100644 backend/static/icons/bold/pencil-ruler-bold.svg create mode 100644 backend/static/icons/bold/pencil-simple-bold.svg create mode 100644 backend/static/icons/bold/pencil-simple-line-bold.svg create mode 100644 backend/static/icons/bold/pencil-simple-slash-bold.svg create mode 100644 backend/static/icons/bold/pencil-slash-bold.svg create mode 100644 backend/static/icons/bold/pentagon-bold.svg create mode 100644 backend/static/icons/bold/pentagram-bold.svg create mode 100644 backend/static/icons/bold/pepper-bold.svg create mode 100644 backend/static/icons/bold/percent-bold.svg create mode 100644 backend/static/icons/bold/person-arms-spread-bold.svg create mode 100644 backend/static/icons/bold/person-bold.svg create mode 100644 backend/static/icons/bold/person-simple-bike-bold.svg create mode 100644 backend/static/icons/bold/person-simple-bold.svg create mode 100644 backend/static/icons/bold/person-simple-circle-bold.svg create mode 100644 backend/static/icons/bold/person-simple-hike-bold.svg create mode 100644 backend/static/icons/bold/person-simple-run-bold.svg create mode 100644 backend/static/icons/bold/person-simple-ski-bold.svg create mode 100644 backend/static/icons/bold/person-simple-snowboard-bold.svg create mode 100644 backend/static/icons/bold/person-simple-swim-bold.svg create mode 100644 backend/static/icons/bold/person-simple-tai-chi-bold.svg create mode 100644 backend/static/icons/bold/person-simple-throw-bold.svg create mode 100644 backend/static/icons/bold/person-simple-walk-bold.svg create mode 100644 backend/static/icons/bold/perspective-bold.svg create mode 100644 backend/static/icons/bold/phone-bold.svg create mode 100644 backend/static/icons/bold/phone-call-bold.svg create mode 100644 backend/static/icons/bold/phone-disconnect-bold.svg create mode 100644 backend/static/icons/bold/phone-incoming-bold.svg create mode 100644 backend/static/icons/bold/phone-list-bold.svg create mode 100644 backend/static/icons/bold/phone-outgoing-bold.svg create mode 100644 backend/static/icons/bold/phone-pause-bold.svg create mode 100644 backend/static/icons/bold/phone-plus-bold.svg create mode 100644 backend/static/icons/bold/phone-slash-bold.svg create mode 100644 backend/static/icons/bold/phone-transfer-bold.svg create mode 100644 backend/static/icons/bold/phone-x-bold.svg create mode 100644 backend/static/icons/bold/phosphor-logo-bold.svg create mode 100644 backend/static/icons/bold/pi-bold.svg create mode 100644 backend/static/icons/bold/piano-keys-bold.svg create mode 100644 backend/static/icons/bold/picnic-table-bold.svg create mode 100644 backend/static/icons/bold/picture-in-picture-bold.svg create mode 100644 backend/static/icons/bold/piggy-bank-bold.svg create mode 100644 backend/static/icons/bold/pill-bold.svg create mode 100644 backend/static/icons/bold/ping-pong-bold.svg create mode 100644 backend/static/icons/bold/pint-glass-bold.svg create mode 100644 backend/static/icons/bold/pinterest-logo-bold.svg create mode 100644 backend/static/icons/bold/pinwheel-bold.svg create mode 100644 backend/static/icons/bold/pipe-bold.svg create mode 100644 backend/static/icons/bold/pipe-wrench-bold.svg create mode 100644 backend/static/icons/bold/pix-logo-bold.svg create mode 100644 backend/static/icons/bold/pizza-bold.svg create mode 100644 backend/static/icons/bold/placeholder-bold.svg create mode 100644 backend/static/icons/bold/planet-bold.svg create mode 100644 backend/static/icons/bold/plant-bold.svg create mode 100644 backend/static/icons/bold/play-bold.svg create mode 100644 backend/static/icons/bold/play-circle-bold.svg create mode 100644 backend/static/icons/bold/play-pause-bold.svg create mode 100644 backend/static/icons/bold/playlist-bold.svg create mode 100644 backend/static/icons/bold/plug-bold.svg create mode 100644 backend/static/icons/bold/plug-charging-bold.svg create mode 100644 backend/static/icons/bold/plugs-bold.svg create mode 100644 backend/static/icons/bold/plugs-connected-bold.svg create mode 100644 backend/static/icons/bold/plus-bold.svg create mode 100644 backend/static/icons/bold/plus-circle-bold.svg create mode 100644 backend/static/icons/bold/plus-minus-bold.svg create mode 100644 backend/static/icons/bold/plus-square-bold.svg create mode 100644 backend/static/icons/bold/poker-chip-bold.svg create mode 100644 backend/static/icons/bold/police-car-bold.svg create mode 100644 backend/static/icons/bold/polygon-bold.svg create mode 100644 backend/static/icons/bold/popcorn-bold.svg create mode 100644 backend/static/icons/bold/popsicle-bold.svg create mode 100644 backend/static/icons/bold/potted-plant-bold.svg create mode 100644 backend/static/icons/bold/power-bold.svg create mode 100644 backend/static/icons/bold/prescription-bold.svg create mode 100644 backend/static/icons/bold/presentation-bold.svg create mode 100644 backend/static/icons/bold/presentation-chart-bold.svg create mode 100644 backend/static/icons/bold/printer-bold.svg create mode 100644 backend/static/icons/bold/prohibit-bold.svg create mode 100644 backend/static/icons/bold/prohibit-inset-bold.svg create mode 100644 backend/static/icons/bold/projector-screen-bold.svg create mode 100644 backend/static/icons/bold/projector-screen-chart-bold.svg create mode 100644 backend/static/icons/bold/pulse-bold.svg create mode 100644 backend/static/icons/bold/push-pin-bold.svg create mode 100644 backend/static/icons/bold/push-pin-simple-bold.svg create mode 100644 backend/static/icons/bold/push-pin-simple-slash-bold.svg create mode 100644 backend/static/icons/bold/push-pin-slash-bold.svg create mode 100644 backend/static/icons/bold/puzzle-piece-bold.svg create mode 100644 backend/static/icons/bold/qr-code-bold.svg create mode 100644 backend/static/icons/bold/question-bold.svg create mode 100644 backend/static/icons/bold/question-mark-bold.svg create mode 100644 backend/static/icons/bold/queue-bold.svg create mode 100644 backend/static/icons/bold/quotes-bold.svg create mode 100644 backend/static/icons/bold/rabbit-bold.svg create mode 100644 backend/static/icons/bold/racquet-bold.svg create mode 100644 backend/static/icons/bold/radical-bold.svg create mode 100644 backend/static/icons/bold/radio-bold.svg create mode 100644 backend/static/icons/bold/radio-button-bold.svg create mode 100644 backend/static/icons/bold/radioactive-bold.svg create mode 100644 backend/static/icons/bold/rainbow-bold.svg create mode 100644 backend/static/icons/bold/rainbow-cloud-bold.svg create mode 100644 backend/static/icons/bold/ranking-bold.svg create mode 100644 backend/static/icons/bold/read-cv-logo-bold.svg create mode 100644 backend/static/icons/bold/receipt-bold.svg create mode 100644 backend/static/icons/bold/receipt-x-bold.svg create mode 100644 backend/static/icons/bold/record-bold.svg create mode 100644 backend/static/icons/bold/rectangle-bold.svg create mode 100644 backend/static/icons/bold/rectangle-dashed-bold.svg create mode 100644 backend/static/icons/bold/recycle-bold.svg create mode 100644 backend/static/icons/bold/reddit-logo-bold.svg create mode 100644 backend/static/icons/bold/repeat-bold.svg create mode 100644 backend/static/icons/bold/repeat-once-bold.svg create mode 100644 backend/static/icons/bold/replit-logo-bold.svg create mode 100644 backend/static/icons/bold/resize-bold.svg create mode 100644 backend/static/icons/bold/rewind-bold.svg create mode 100644 backend/static/icons/bold/rewind-circle-bold.svg create mode 100644 backend/static/icons/bold/road-horizon-bold.svg create mode 100644 backend/static/icons/bold/robot-bold.svg create mode 100644 backend/static/icons/bold/rocket-bold.svg create mode 100644 backend/static/icons/bold/rocket-launch-bold.svg create mode 100644 backend/static/icons/bold/rows-bold.svg create mode 100644 backend/static/icons/bold/rows-plus-bottom-bold.svg create mode 100644 backend/static/icons/bold/rows-plus-top-bold.svg create mode 100644 backend/static/icons/bold/rss-bold.svg create mode 100644 backend/static/icons/bold/rss-simple-bold.svg create mode 100644 backend/static/icons/bold/rug-bold.svg create mode 100644 backend/static/icons/bold/ruler-bold.svg create mode 100644 backend/static/icons/bold/sailboat-bold.svg create mode 100644 backend/static/icons/bold/scales-bold.svg create mode 100644 backend/static/icons/bold/scan-bold.svg create mode 100644 backend/static/icons/bold/scan-smiley-bold.svg create mode 100644 backend/static/icons/bold/scissors-bold.svg create mode 100644 backend/static/icons/bold/scooter-bold.svg create mode 100644 backend/static/icons/bold/screencast-bold.svg create mode 100644 backend/static/icons/bold/screwdriver-bold.svg create mode 100644 backend/static/icons/bold/scribble-bold.svg create mode 100644 backend/static/icons/bold/scribble-loop-bold.svg create mode 100644 backend/static/icons/bold/scroll-bold.svg create mode 100644 backend/static/icons/bold/seal-bold.svg create mode 100644 backend/static/icons/bold/seal-check-bold.svg create mode 100644 backend/static/icons/bold/seal-percent-bold.svg create mode 100644 backend/static/icons/bold/seal-question-bold.svg create mode 100644 backend/static/icons/bold/seal-warning-bold.svg create mode 100644 backend/static/icons/bold/seat-bold.svg create mode 100644 backend/static/icons/bold/seatbelt-bold.svg create mode 100644 backend/static/icons/bold/security-camera-bold.svg create mode 100644 backend/static/icons/bold/selection-all-bold.svg create mode 100644 backend/static/icons/bold/selection-background-bold.svg create mode 100644 backend/static/icons/bold/selection-bold.svg create mode 100644 backend/static/icons/bold/selection-foreground-bold.svg create mode 100644 backend/static/icons/bold/selection-inverse-bold.svg create mode 100644 backend/static/icons/bold/selection-plus-bold.svg create mode 100644 backend/static/icons/bold/selection-slash-bold.svg create mode 100644 backend/static/icons/bold/shapes-bold.svg create mode 100644 backend/static/icons/bold/share-bold.svg create mode 100644 backend/static/icons/bold/share-fat-bold.svg create mode 100644 backend/static/icons/bold/share-network-bold.svg create mode 100644 backend/static/icons/bold/shield-bold.svg create mode 100644 backend/static/icons/bold/shield-check-bold.svg create mode 100644 backend/static/icons/bold/shield-checkered-bold.svg create mode 100644 backend/static/icons/bold/shield-chevron-bold.svg create mode 100644 backend/static/icons/bold/shield-plus-bold.svg create mode 100644 backend/static/icons/bold/shield-slash-bold.svg create mode 100644 backend/static/icons/bold/shield-star-bold.svg create mode 100644 backend/static/icons/bold/shield-warning-bold.svg create mode 100644 backend/static/icons/bold/shipping-container-bold.svg create mode 100644 backend/static/icons/bold/shirt-folded-bold.svg create mode 100644 backend/static/icons/bold/shooting-star-bold.svg create mode 100644 backend/static/icons/bold/shopping-bag-bold.svg create mode 100644 backend/static/icons/bold/shopping-bag-open-bold.svg create mode 100644 backend/static/icons/bold/shopping-cart-bold.svg create mode 100644 backend/static/icons/bold/shopping-cart-simple-bold.svg create mode 100644 backend/static/icons/bold/shovel-bold.svg create mode 100644 backend/static/icons/bold/shower-bold.svg create mode 100644 backend/static/icons/bold/shrimp-bold.svg create mode 100644 backend/static/icons/bold/shuffle-angular-bold.svg create mode 100644 backend/static/icons/bold/shuffle-bold.svg create mode 100644 backend/static/icons/bold/shuffle-simple-bold.svg create mode 100644 backend/static/icons/bold/sidebar-bold.svg create mode 100644 backend/static/icons/bold/sidebar-simple-bold.svg create mode 100644 backend/static/icons/bold/sigma-bold.svg create mode 100644 backend/static/icons/bold/sign-in-bold.svg create mode 100644 backend/static/icons/bold/sign-out-bold.svg create mode 100644 backend/static/icons/bold/signature-bold.svg create mode 100644 backend/static/icons/bold/signpost-bold.svg create mode 100644 backend/static/icons/bold/sim-card-bold.svg create mode 100644 backend/static/icons/bold/siren-bold.svg create mode 100644 backend/static/icons/bold/sketch-logo-bold.svg create mode 100644 backend/static/icons/bold/skip-back-bold.svg create mode 100644 backend/static/icons/bold/skip-back-circle-bold.svg create mode 100644 backend/static/icons/bold/skip-forward-bold.svg create mode 100644 backend/static/icons/bold/skip-forward-circle-bold.svg create mode 100644 backend/static/icons/bold/skull-bold.svg create mode 100644 backend/static/icons/bold/skype-logo-bold.svg create mode 100644 backend/static/icons/bold/slack-logo-bold.svg create mode 100644 backend/static/icons/bold/sliders-bold.svg create mode 100644 backend/static/icons/bold/sliders-horizontal-bold.svg create mode 100644 backend/static/icons/bold/slideshow-bold.svg create mode 100644 backend/static/icons/bold/smiley-angry-bold.svg create mode 100644 backend/static/icons/bold/smiley-blank-bold.svg create mode 100644 backend/static/icons/bold/smiley-bold.svg create mode 100644 backend/static/icons/bold/smiley-meh-bold.svg create mode 100644 backend/static/icons/bold/smiley-melting-bold.svg create mode 100644 backend/static/icons/bold/smiley-nervous-bold.svg create mode 100644 backend/static/icons/bold/smiley-sad-bold.svg create mode 100644 backend/static/icons/bold/smiley-sticker-bold.svg create mode 100644 backend/static/icons/bold/smiley-wink-bold.svg create mode 100644 backend/static/icons/bold/smiley-x-eyes-bold.svg create mode 100644 backend/static/icons/bold/snapchat-logo-bold.svg create mode 100644 backend/static/icons/bold/sneaker-bold.svg create mode 100644 backend/static/icons/bold/sneaker-move-bold.svg create mode 100644 backend/static/icons/bold/snowflake-bold.svg create mode 100644 backend/static/icons/bold/soccer-ball-bold.svg create mode 100644 backend/static/icons/bold/sock-bold.svg create mode 100644 backend/static/icons/bold/solar-panel-bold.svg create mode 100644 backend/static/icons/bold/solar-roof-bold.svg create mode 100644 backend/static/icons/bold/sort-ascending-bold.svg create mode 100644 backend/static/icons/bold/sort-descending-bold.svg create mode 100644 backend/static/icons/bold/soundcloud-logo-bold.svg create mode 100644 backend/static/icons/bold/spade-bold.svg create mode 100644 backend/static/icons/bold/sparkle-bold.svg create mode 100644 backend/static/icons/bold/speaker-hifi-bold.svg create mode 100644 backend/static/icons/bold/speaker-high-bold.svg create mode 100644 backend/static/icons/bold/speaker-low-bold.svg create mode 100644 backend/static/icons/bold/speaker-none-bold.svg create mode 100644 backend/static/icons/bold/speaker-simple-high-bold.svg create mode 100644 backend/static/icons/bold/speaker-simple-low-bold.svg create mode 100644 backend/static/icons/bold/speaker-simple-none-bold.svg create mode 100644 backend/static/icons/bold/speaker-simple-slash-bold.svg create mode 100644 backend/static/icons/bold/speaker-simple-x-bold.svg create mode 100644 backend/static/icons/bold/speaker-slash-bold.svg create mode 100644 backend/static/icons/bold/speaker-x-bold.svg create mode 100644 backend/static/icons/bold/speedometer-bold.svg create mode 100644 backend/static/icons/bold/sphere-bold.svg create mode 100644 backend/static/icons/bold/spinner-ball-bold.svg create mode 100644 backend/static/icons/bold/spinner-bold.svg create mode 100644 backend/static/icons/bold/spinner-gap-bold.svg create mode 100644 backend/static/icons/bold/spiral-bold.svg create mode 100644 backend/static/icons/bold/split-horizontal-bold.svg create mode 100644 backend/static/icons/bold/split-vertical-bold.svg create mode 100644 backend/static/icons/bold/spotify-logo-bold.svg create mode 100644 backend/static/icons/bold/spray-bottle-bold.svg create mode 100644 backend/static/icons/bold/square-bold.svg create mode 100644 backend/static/icons/bold/square-half-bold.svg create mode 100644 backend/static/icons/bold/square-half-bottom-bold.svg create mode 100644 backend/static/icons/bold/square-logo-bold.svg create mode 100644 backend/static/icons/bold/square-split-horizontal-bold.svg create mode 100644 backend/static/icons/bold/square-split-vertical-bold.svg create mode 100644 backend/static/icons/bold/squares-four-bold.svg create mode 100644 backend/static/icons/bold/stack-bold.svg create mode 100644 backend/static/icons/bold/stack-minus-bold.svg create mode 100644 backend/static/icons/bold/stack-overflow-logo-bold.svg create mode 100644 backend/static/icons/bold/stack-plus-bold.svg create mode 100644 backend/static/icons/bold/stack-simple-bold.svg create mode 100644 backend/static/icons/bold/stairs-bold.svg create mode 100644 backend/static/icons/bold/stamp-bold.svg create mode 100644 backend/static/icons/bold/standard-definition-bold.svg create mode 100644 backend/static/icons/bold/star-and-crescent-bold.svg create mode 100644 backend/static/icons/bold/star-bold.svg create mode 100644 backend/static/icons/bold/star-four-bold.svg create mode 100644 backend/static/icons/bold/star-half-bold.svg create mode 100644 backend/static/icons/bold/star-of-david-bold.svg create mode 100644 backend/static/icons/bold/steam-logo-bold.svg create mode 100644 backend/static/icons/bold/steering-wheel-bold.svg create mode 100644 backend/static/icons/bold/steps-bold.svg create mode 100644 backend/static/icons/bold/stethoscope-bold.svg create mode 100644 backend/static/icons/bold/sticker-bold.svg create mode 100644 backend/static/icons/bold/stool-bold.svg create mode 100644 backend/static/icons/bold/stop-bold.svg create mode 100644 backend/static/icons/bold/stop-circle-bold.svg create mode 100644 backend/static/icons/bold/storefront-bold.svg create mode 100644 backend/static/icons/bold/strategy-bold.svg create mode 100644 backend/static/icons/bold/stripe-logo-bold.svg create mode 100644 backend/static/icons/bold/student-bold.svg create mode 100644 backend/static/icons/bold/subset-of-bold.svg create mode 100644 backend/static/icons/bold/subset-proper-of-bold.svg create mode 100644 backend/static/icons/bold/subtitles-bold.svg create mode 100644 backend/static/icons/bold/subtitles-slash-bold.svg create mode 100644 backend/static/icons/bold/subtract-bold.svg create mode 100644 backend/static/icons/bold/subtract-square-bold.svg create mode 100644 backend/static/icons/bold/subway-bold.svg create mode 100644 backend/static/icons/bold/suitcase-bold.svg create mode 100644 backend/static/icons/bold/suitcase-rolling-bold.svg create mode 100644 backend/static/icons/bold/suitcase-simple-bold.svg create mode 100644 backend/static/icons/bold/sun-bold.svg create mode 100644 backend/static/icons/bold/sun-dim-bold.svg create mode 100644 backend/static/icons/bold/sun-horizon-bold.svg create mode 100644 backend/static/icons/bold/sunglasses-bold.svg create mode 100644 backend/static/icons/bold/superset-of-bold.svg create mode 100644 backend/static/icons/bold/superset-proper-of-bold.svg create mode 100644 backend/static/icons/bold/swap-bold.svg create mode 100644 backend/static/icons/bold/swatches-bold.svg create mode 100644 backend/static/icons/bold/swimming-pool-bold.svg create mode 100644 backend/static/icons/bold/sword-bold.svg create mode 100644 backend/static/icons/bold/synagogue-bold.svg create mode 100644 backend/static/icons/bold/syringe-bold.svg create mode 100644 backend/static/icons/bold/t-shirt-bold.svg create mode 100644 backend/static/icons/bold/table-bold.svg create mode 100644 backend/static/icons/bold/tabs-bold.svg create mode 100644 backend/static/icons/bold/tag-bold.svg create mode 100644 backend/static/icons/bold/tag-chevron-bold.svg create mode 100644 backend/static/icons/bold/tag-simple-bold.svg create mode 100644 backend/static/icons/bold/target-bold.svg create mode 100644 backend/static/icons/bold/taxi-bold.svg create mode 100644 backend/static/icons/bold/tea-bag-bold.svg create mode 100644 backend/static/icons/bold/telegram-logo-bold.svg create mode 100644 backend/static/icons/bold/television-bold.svg create mode 100644 backend/static/icons/bold/television-simple-bold.svg create mode 100644 backend/static/icons/bold/tennis-ball-bold.svg create mode 100644 backend/static/icons/bold/tent-bold.svg create mode 100644 backend/static/icons/bold/terminal-bold.svg create mode 100644 backend/static/icons/bold/terminal-window-bold.svg create mode 100644 backend/static/icons/bold/test-tube-bold.svg create mode 100644 backend/static/icons/bold/text-a-underline-bold.svg create mode 100644 backend/static/icons/bold/text-aa-bold.svg create mode 100644 backend/static/icons/bold/text-align-center-bold.svg create mode 100644 backend/static/icons/bold/text-align-justify-bold.svg create mode 100644 backend/static/icons/bold/text-align-left-bold.svg create mode 100644 backend/static/icons/bold/text-align-right-bold.svg create mode 100644 backend/static/icons/bold/text-b-bold.svg create mode 100644 backend/static/icons/bold/text-columns-bold.svg create mode 100644 backend/static/icons/bold/text-h-bold.svg create mode 100644 backend/static/icons/bold/text-h-five-bold.svg create mode 100644 backend/static/icons/bold/text-h-four-bold.svg create mode 100644 backend/static/icons/bold/text-h-one-bold.svg create mode 100644 backend/static/icons/bold/text-h-six-bold.svg create mode 100644 backend/static/icons/bold/text-h-three-bold.svg create mode 100644 backend/static/icons/bold/text-h-two-bold.svg create mode 100644 backend/static/icons/bold/text-indent-bold.svg create mode 100644 backend/static/icons/bold/text-italic-bold.svg create mode 100644 backend/static/icons/bold/text-outdent-bold.svg create mode 100644 backend/static/icons/bold/text-strikethrough-bold.svg create mode 100644 backend/static/icons/bold/text-subscript-bold.svg create mode 100644 backend/static/icons/bold/text-superscript-bold.svg create mode 100644 backend/static/icons/bold/text-t-bold.svg create mode 100644 backend/static/icons/bold/text-t-slash-bold.svg create mode 100644 backend/static/icons/bold/text-underline-bold.svg create mode 100644 backend/static/icons/bold/textbox-bold.svg create mode 100644 backend/static/icons/bold/thermometer-bold.svg create mode 100644 backend/static/icons/bold/thermometer-cold-bold.svg create mode 100644 backend/static/icons/bold/thermometer-hot-bold.svg create mode 100644 backend/static/icons/bold/thermometer-simple-bold.svg create mode 100644 backend/static/icons/bold/threads-logo-bold.svg create mode 100644 backend/static/icons/bold/three-d-bold.svg create mode 100644 backend/static/icons/bold/thumbs-down-bold.svg create mode 100644 backend/static/icons/bold/thumbs-up-bold.svg create mode 100644 backend/static/icons/bold/ticket-bold.svg create mode 100644 backend/static/icons/bold/tidal-logo-bold.svg create mode 100644 backend/static/icons/bold/tiktok-logo-bold.svg create mode 100644 backend/static/icons/bold/tilde-bold.svg create mode 100644 backend/static/icons/bold/timer-bold.svg create mode 100644 backend/static/icons/bold/tip-jar-bold.svg create mode 100644 backend/static/icons/bold/tipi-bold.svg create mode 100644 backend/static/icons/bold/tire-bold.svg create mode 100644 backend/static/icons/bold/toggle-left-bold.svg create mode 100644 backend/static/icons/bold/toggle-right-bold.svg create mode 100644 backend/static/icons/bold/toilet-bold.svg create mode 100644 backend/static/icons/bold/toilet-paper-bold.svg create mode 100644 backend/static/icons/bold/toolbox-bold.svg create mode 100644 backend/static/icons/bold/tooth-bold.svg create mode 100644 backend/static/icons/bold/tornado-bold.svg create mode 100644 backend/static/icons/bold/tote-bold.svg create mode 100644 backend/static/icons/bold/tote-simple-bold.svg create mode 100644 backend/static/icons/bold/towel-bold.svg create mode 100644 backend/static/icons/bold/tractor-bold.svg create mode 100644 backend/static/icons/bold/trademark-bold.svg create mode 100644 backend/static/icons/bold/trademark-registered-bold.svg create mode 100644 backend/static/icons/bold/traffic-cone-bold.svg create mode 100644 backend/static/icons/bold/traffic-sign-bold.svg create mode 100644 backend/static/icons/bold/traffic-signal-bold.svg create mode 100644 backend/static/icons/bold/train-bold.svg create mode 100644 backend/static/icons/bold/train-regional-bold.svg create mode 100644 backend/static/icons/bold/train-simple-bold.svg create mode 100644 backend/static/icons/bold/tram-bold.svg create mode 100644 backend/static/icons/bold/translate-bold.svg create mode 100644 backend/static/icons/bold/trash-bold.svg create mode 100644 backend/static/icons/bold/trash-simple-bold.svg create mode 100644 backend/static/icons/bold/tray-arrow-down-bold.svg create mode 100644 backend/static/icons/bold/tray-arrow-up-bold.svg create mode 100644 backend/static/icons/bold/tray-bold.svg create mode 100644 backend/static/icons/bold/treasure-chest-bold.svg create mode 100644 backend/static/icons/bold/tree-bold.svg create mode 100644 backend/static/icons/bold/tree-evergreen-bold.svg create mode 100644 backend/static/icons/bold/tree-palm-bold.svg create mode 100644 backend/static/icons/bold/tree-structure-bold.svg create mode 100644 backend/static/icons/bold/tree-view-bold.svg create mode 100644 backend/static/icons/bold/trend-down-bold.svg create mode 100644 backend/static/icons/bold/trend-up-bold.svg create mode 100644 backend/static/icons/bold/triangle-bold.svg create mode 100644 backend/static/icons/bold/triangle-dashed-bold.svg create mode 100644 backend/static/icons/bold/trolley-bold.svg create mode 100644 backend/static/icons/bold/trolley-suitcase-bold.svg create mode 100644 backend/static/icons/bold/trophy-bold.svg create mode 100644 backend/static/icons/bold/truck-bold.svg create mode 100644 backend/static/icons/bold/truck-trailer-bold.svg create mode 100644 backend/static/icons/bold/tumblr-logo-bold.svg create mode 100644 backend/static/icons/bold/twitch-logo-bold.svg create mode 100644 backend/static/icons/bold/twitter-logo-bold.svg create mode 100644 backend/static/icons/bold/umbrella-bold.svg create mode 100644 backend/static/icons/bold/umbrella-simple-bold.svg create mode 100644 backend/static/icons/bold/union-bold.svg create mode 100644 backend/static/icons/bold/unite-bold.svg create mode 100644 backend/static/icons/bold/unite-square-bold.svg create mode 100644 backend/static/icons/bold/upload-bold.svg create mode 100644 backend/static/icons/bold/upload-simple-bold.svg create mode 100644 backend/static/icons/bold/usb-bold.svg create mode 100644 backend/static/icons/bold/user-bold.svg create mode 100644 backend/static/icons/bold/user-check-bold.svg create mode 100644 backend/static/icons/bold/user-circle-bold.svg create mode 100644 backend/static/icons/bold/user-circle-check-bold.svg create mode 100644 backend/static/icons/bold/user-circle-dashed-bold.svg create mode 100644 backend/static/icons/bold/user-circle-gear-bold.svg create mode 100644 backend/static/icons/bold/user-circle-minus-bold.svg create mode 100644 backend/static/icons/bold/user-circle-plus-bold.svg create mode 100644 backend/static/icons/bold/user-focus-bold.svg create mode 100644 backend/static/icons/bold/user-gear-bold.svg create mode 100644 backend/static/icons/bold/user-list-bold.svg create mode 100644 backend/static/icons/bold/user-minus-bold.svg create mode 100644 backend/static/icons/bold/user-plus-bold.svg create mode 100644 backend/static/icons/bold/user-rectangle-bold.svg create mode 100644 backend/static/icons/bold/user-sound-bold.svg create mode 100644 backend/static/icons/bold/user-square-bold.svg create mode 100644 backend/static/icons/bold/user-switch-bold.svg create mode 100644 backend/static/icons/bold/users-bold.svg create mode 100644 backend/static/icons/bold/users-four-bold.svg create mode 100644 backend/static/icons/bold/users-three-bold.svg create mode 100644 backend/static/icons/bold/van-bold.svg create mode 100644 backend/static/icons/bold/vault-bold.svg create mode 100644 backend/static/icons/bold/vector-three-bold.svg create mode 100644 backend/static/icons/bold/vector-two-bold.svg create mode 100644 backend/static/icons/bold/vibrate-bold.svg create mode 100644 backend/static/icons/bold/video-bold.svg create mode 100644 backend/static/icons/bold/video-camera-bold.svg create mode 100644 backend/static/icons/bold/video-camera-slash-bold.svg create mode 100644 backend/static/icons/bold/video-conference-bold.svg create mode 100644 backend/static/icons/bold/vignette-bold.svg create mode 100644 backend/static/icons/bold/vinyl-record-bold.svg create mode 100644 backend/static/icons/bold/virtual-reality-bold.svg create mode 100644 backend/static/icons/bold/virus-bold.svg create mode 100644 backend/static/icons/bold/visor-bold.svg create mode 100644 backend/static/icons/bold/voicemail-bold.svg create mode 100644 backend/static/icons/bold/volleyball-bold.svg create mode 100644 backend/static/icons/bold/wall-bold.svg create mode 100644 backend/static/icons/bold/wallet-bold.svg create mode 100644 backend/static/icons/bold/warehouse-bold.svg create mode 100644 backend/static/icons/bold/warning-bold.svg create mode 100644 backend/static/icons/bold/warning-circle-bold.svg create mode 100644 backend/static/icons/bold/warning-diamond-bold.svg create mode 100644 backend/static/icons/bold/warning-octagon-bold.svg create mode 100644 backend/static/icons/bold/washing-machine-bold.svg create mode 100644 backend/static/icons/bold/watch-bold.svg create mode 100644 backend/static/icons/bold/wave-sawtooth-bold.svg create mode 100644 backend/static/icons/bold/wave-sine-bold.svg create mode 100644 backend/static/icons/bold/wave-square-bold.svg create mode 100644 backend/static/icons/bold/wave-triangle-bold.svg create mode 100644 backend/static/icons/bold/waveform-bold.svg create mode 100644 backend/static/icons/bold/waveform-slash-bold.svg create mode 100644 backend/static/icons/bold/waves-bold.svg create mode 100644 backend/static/icons/bold/webcam-bold.svg create mode 100644 backend/static/icons/bold/webcam-slash-bold.svg create mode 100644 backend/static/icons/bold/webhooks-logo-bold.svg create mode 100644 backend/static/icons/bold/wechat-logo-bold.svg create mode 100644 backend/static/icons/bold/whatsapp-logo-bold.svg create mode 100644 backend/static/icons/bold/wheelchair-bold.svg create mode 100644 backend/static/icons/bold/wheelchair-motion-bold.svg create mode 100644 backend/static/icons/bold/wifi-high-bold.svg create mode 100644 backend/static/icons/bold/wifi-low-bold.svg create mode 100644 backend/static/icons/bold/wifi-medium-bold.svg create mode 100644 backend/static/icons/bold/wifi-none-bold.svg create mode 100644 backend/static/icons/bold/wifi-slash-bold.svg create mode 100644 backend/static/icons/bold/wifi-x-bold.svg create mode 100644 backend/static/icons/bold/wind-bold.svg create mode 100644 backend/static/icons/bold/windmill-bold.svg create mode 100644 backend/static/icons/bold/windows-logo-bold.svg create mode 100644 backend/static/icons/bold/wine-bold.svg create mode 100644 backend/static/icons/bold/wrench-bold.svg create mode 100644 backend/static/icons/bold/x-bold.svg create mode 100644 backend/static/icons/bold/x-circle-bold.svg create mode 100644 backend/static/icons/bold/x-logo-bold.svg create mode 100644 backend/static/icons/bold/x-square-bold.svg create mode 100644 backend/static/icons/bold/yarn-bold.svg create mode 100644 backend/static/icons/bold/yin-yang-bold.svg create mode 100644 backend/static/icons/bold/youtube-logo-bold.svg create mode 100644 backend/static/icons/placeholder.svg create mode 100644 backend/static/images/placeholder.jpg create mode 100644 backend/tests/__init__.py create mode 100644 backend/tests/test_gemini_schema_support.py create mode 100644 backend/tests/test_image_generation.py create mode 100644 backend/tests/test_mcp_server.py create mode 100644 backend/tests/test_openai_schema_support.py create mode 100644 backend/tests/test_pptx_creator.py create mode 100644 backend/tests/test_pptx_slides_processing.py create mode 100644 backend/tests/test_presentation_generation_api.py create mode 100644 backend/tests/test_slide_to_html.py create mode 100644 backend/utils/__init__.py create mode 100644 backend/utils/asset_directory_utils.py create mode 100644 backend/utils/async_iterator.py create mode 100644 backend/utils/auth_dependencies.py create mode 100644 backend/utils/available_models.py create mode 100644 backend/utils/datetime_utils.py create mode 100644 backend/utils/db_utils.py create mode 100644 backend/utils/dict_utils.py create mode 100644 backend/utils/download_helpers.py create mode 100644 backend/utils/dummy_functions.py create mode 100644 backend/utils/error_handling.py create mode 100644 backend/utils/export_utils.py create mode 100644 backend/utils/file_utils.py create mode 100644 backend/utils/get_dynamic_models.py create mode 100644 backend/utils/get_env.py create mode 100644 backend/utils/get_layout_by_name.py create mode 100644 backend/utils/image_provider.py create mode 100644 backend/utils/image_utils.py create mode 100644 backend/utils/llm_calls/edit_slide.py create mode 100644 backend/utils/llm_calls/edit_slide_html.py create mode 100644 backend/utils/llm_calls/generate_presentation_outlines.py create mode 100644 backend/utils/llm_calls/generate_presentation_structure.py create mode 100644 backend/utils/llm_calls/generate_slide_content.py create mode 100644 backend/utils/llm_calls/select_slide_type_on_edit.py create mode 100644 backend/utils/llm_client_error_handler.py create mode 100644 backend/utils/llm_provider.py create mode 100644 backend/utils/model_availability.py create mode 100644 backend/utils/ollama.py create mode 100644 backend/utils/parsers.py create mode 100644 backend/utils/ppt_utils.py create mode 100644 backend/utils/process_slides.py create mode 100644 backend/utils/schema_utils.py create mode 100644 backend/utils/set_env.py create mode 100644 backend/utils/user_config.py create mode 100644 backend/utils/validators.py create mode 100644 backend/uv.lock create mode 100644 docker-compose.yml create mode 100644 frontend/Dockerfile create mode 100644 frontend/README.md create mode 100644 frontend/app/(presentation-generator)/components/EditableLayoutWrapper.tsx create mode 100644 frontend/app/(presentation-generator)/components/HeaderNab.tsx create mode 100644 frontend/app/(presentation-generator)/components/IconsEditor.tsx create mode 100644 frontend/app/(presentation-generator)/components/ImageEditor.tsx create mode 100644 frontend/app/(presentation-generator)/components/MarkdownEditor.tsx create mode 100644 frontend/app/(presentation-generator)/components/NewSlide.tsx create mode 100644 frontend/app/(presentation-generator)/components/PresentationMode.tsx create mode 100644 frontend/app/(presentation-generator)/components/PresentationRender.tsx create mode 100644 frontend/app/(presentation-generator)/components/SlideErrorBoundary.tsx create mode 100644 frontend/app/(presentation-generator)/components/TiptapText.tsx create mode 100644 frontend/app/(presentation-generator)/components/TiptapTextReplacer.tsx create mode 100644 frontend/app/(presentation-generator)/components/V1ContentRender.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/APIKeyWarning.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/EachSlide/EditControls.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/EachSlide/HtmlEditor.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/EachSlide/NewEachSlide.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/EachSlide/SlideActions.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/EachSlide/SlideContentDisplay.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/FileUploadSection.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/FontManager.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/LoadingSpinner.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/SaveLayoutButton.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/SaveLayoutModal.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/SlideContent.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/components/Timer.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useAPIKeyCheck.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useCustomLayout.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useDrawingCanvas.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useFileUpload.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useFontManagement.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useHtmlEdit.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useLayoutSaving.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useSlideEdit.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/hooks/useSlideProcessing.ts create mode 100644 frontend/app/(presentation-generator)/custom-template/page.tsx create mode 100644 frontend/app/(presentation-generator)/custom-template/types/index.ts create mode 100644 frontend/app/(presentation-generator)/dashboard/components/DashboardPage.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/components/EmptyState.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/components/Header.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/components/PresentationCard.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/components/PresentationGrid.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/components/PresentationListItem.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/loading.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/page.tsx create mode 100644 frontend/app/(presentation-generator)/dashboard/types.ts create mode 100644 frontend/app/(presentation-generator)/documents-preview/components/DocumentPreviewPage.tsx create mode 100644 frontend/app/(presentation-generator)/documents-preview/components/MarkdownRenderer.tsx create mode 100644 frontend/app/(presentation-generator)/documents-preview/loading.tsx create mode 100644 frontend/app/(presentation-generator)/documents-preview/page.tsx create mode 100644 frontend/app/(presentation-generator)/hooks/use-keyboard-shortcut.ts create mode 100644 frontend/app/(presentation-generator)/hooks/useFontLoader.tsx create mode 100644 frontend/app/(presentation-generator)/layout.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/CustomTemplateCard.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/EmptyStateView.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/GenerateButton.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/OutlineContent.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/OutlineItem.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/OutlinePage.tsx create mode 100644 frontend/app/(presentation-generator)/outline/components/TemplateSelection.tsx create mode 100644 frontend/app/(presentation-generator)/outline/hooks/useOutlineManagement.ts create mode 100644 frontend/app/(presentation-generator)/outline/hooks/useOutlineStreaming.ts create mode 100644 frontend/app/(presentation-generator)/outline/hooks/usePresentationGeneration.ts create mode 100644 frontend/app/(presentation-generator)/outline/loading.tsx create mode 100644 frontend/app/(presentation-generator)/outline/page.tsx create mode 100644 frontend/app/(presentation-generator)/outline/types.ts create mode 100644 frontend/app/(presentation-generator)/outline/types/index.ts create mode 100644 frontend/app/(presentation-generator)/pdf-maker/PdfMakerPage.tsx create mode 100644 frontend/app/(presentation-generator)/pdf-maker/page.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/Header.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/Help.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/LoadingState.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/Modal.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/PresentationPage.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/SidePanel.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/SlideContent.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/SortableListItem.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/components/SortableSlide.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/hooks/PresentationUndoRedo.ts create mode 100644 frontend/app/(presentation-generator)/presentation/hooks/index.ts create mode 100644 frontend/app/(presentation-generator)/presentation/hooks/useAutoSave.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/hooks/usePresentationData.ts create mode 100644 frontend/app/(presentation-generator)/presentation/hooks/usePresentationNavigation.ts create mode 100644 frontend/app/(presentation-generator)/presentation/hooks/usePresentationStreaming.ts create mode 100644 frontend/app/(presentation-generator)/presentation/loading.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/page.tsx create mode 100644 frontend/app/(presentation-generator)/presentation/types/index.ts create mode 100644 frontend/app/(presentation-generator)/services/api/api-error-handler.ts create mode 100644 frontend/app/(presentation-generator)/services/api/dashboard.ts create mode 100644 frontend/app/(presentation-generator)/services/api/header.ts create mode 100644 frontend/app/(presentation-generator)/services/api/images.ts create mode 100644 frontend/app/(presentation-generator)/services/api/params.ts create mode 100644 frontend/app/(presentation-generator)/services/api/presentation-generation.ts create mode 100644 frontend/app/(presentation-generator)/services/api/template.ts create mode 100644 frontend/app/(presentation-generator)/services/api/types.ts create mode 100644 frontend/app/(presentation-generator)/settings/SettingPage.tsx create mode 100644 frontend/app/(presentation-generator)/settings/loading.tsx create mode 100644 frontend/app/(presentation-generator)/settings/page.tsx create mode 100644 frontend/app/(presentation-generator)/template-preview/[slug]/hooks/useTemplateLayoutsAutoSave.ts create mode 100644 frontend/app/(presentation-generator)/template-preview/[slug]/page.tsx create mode 100644 frontend/app/(presentation-generator)/template-preview/components/LoadingStates.tsx create mode 100644 frontend/app/(presentation-generator)/template-preview/page.tsx create mode 100644 frontend/app/(presentation-generator)/template-preview/types/index.ts create mode 100644 frontend/app/(presentation-generator)/types/slide.ts create mode 100644 frontend/app/(presentation-generator)/upload/components/ConfigurationSelects.tsx create mode 100644 frontend/app/(presentation-generator)/upload/components/PromptInput.tsx create mode 100644 frontend/app/(presentation-generator)/upload/components/SupportingDoc.tsx create mode 100644 frontend/app/(presentation-generator)/upload/components/UploadPage.cy.tsx create mode 100644 frontend/app/(presentation-generator)/upload/components/UploadPage.tsx create mode 100644 frontend/app/(presentation-generator)/upload/loading.tsx create mode 100644 frontend/app/(presentation-generator)/upload/page.tsx create mode 100644 frontend/app/(presentation-generator)/upload/styles/main.module.css create mode 100644 frontend/app/(presentation-generator)/upload/type.ts create mode 100644 frontend/app/(presentation-generator)/utils/others.ts create mode 100644 frontend/app/ConfigurationInitializer.tsx create mode 100644 frontend/app/admin/analytics/page.tsx create mode 100644 frontend/app/admin/audit/page.tsx create mode 100644 frontend/app/admin/clients/[id]/brand/page.tsx create mode 100644 frontend/app/admin/clients/[id]/master-decks/page.tsx create mode 100644 frontend/app/admin/clients/[id]/page.tsx create mode 100644 frontend/app/admin/clients/[id]/teams/page.tsx create mode 100644 frontend/app/admin/clients/page.tsx create mode 100644 frontend/app/admin/components/AdminSidebar.tsx create mode 100644 frontend/app/admin/components/CreateClientDialog.tsx create mode 100644 frontend/app/admin/components/DataExportButton.tsx create mode 100644 frontend/app/admin/components/RoleBadge.tsx create mode 100644 frontend/app/admin/components/TeamMemberDialog.tsx create mode 100644 frontend/app/admin/layout.tsx create mode 100644 frontend/app/admin/page.tsx create mode 100644 frontend/app/admin/settings/page.tsx create mode 100644 frontend/app/admin/users/[id]/page.tsx create mode 100644 frontend/app/admin/users/page.tsx create mode 100644 frontend/app/api/can-change-keys/route.ts create mode 100644 frontend/app/api/export-as-pdf/route.ts create mode 100644 frontend/app/api/has-required-key/route.ts create mode 100644 frontend/app/api/presentation_to_pptx_model/route.ts create mode 100644 frontend/app/api/read-file/route.ts create mode 100644 frontend/app/api/save-layout/route.ts create mode 100644 frontend/app/api/telemetry-status/route.ts create mode 100644 frontend/app/api/template/route.ts create mode 100644 frontend/app/api/templates/route.ts create mode 100644 frontend/app/api/upload-image/route.ts create mode 100644 frontend/app/api/user-config/route.ts create mode 100644 frontend/app/apple-icon.png create mode 100644 frontend/app/favicon.ico create mode 100644 frontend/app/fonts/Inter.ttf create mode 100644 frontend/app/globals.css create mode 100644 frontend/app/hooks/compileLayout.ts create mode 100644 frontend/app/hooks/useCustomTemplates.ts create mode 100644 frontend/app/hooks/useRemoteSvgIcon.tsx create mode 100644 frontend/app/icon1.svg create mode 100644 frontend/app/icon2.png create mode 100644 frontend/app/layout.tsx create mode 100644 frontend/app/loading.tsx create mode 100644 frontend/app/login/page.tsx create mode 100644 frontend/app/not-found.tsx create mode 100644 frontend/app/page.tsx create mode 100644 frontend/app/presentation-templates/ExampleSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/ExampleSlideLayoutTemplate.tsx create mode 100644 frontend/app/presentation-templates/defaultSchemes.ts create mode 100644 frontend/app/presentation-templates/general/BasicInfoSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/BulletIconsOnlySlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/BulletWithIconsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/ChartWithBulletsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/IntroSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/MetricsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/MetricsWithImageSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/NumberedBulletsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/QuoteSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/TableInfoSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/TableOfContentsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/TeamSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/general/settings.json create mode 100644 frontend/app/presentation-templates/index.tsx create mode 100644 frontend/app/presentation-templates/modern/BulletWithIconsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/modern/BulletsWithIconsDescriptionGrid.tsx create mode 100644 frontend/app/presentation-templates/modern/ChartOrTableWithDescription.tsx create mode 100644 frontend/app/presentation-templates/modern/ChartOrTableWithMetricsDescription.tsx create mode 100644 frontend/app/presentation-templates/modern/ImageAndDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/modern/ImageListWithDescriptionSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/modern/ImagesWithDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/modern/IntroSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/modern/MetricsWithDescription.tsx create mode 100644 frontend/app/presentation-templates/modern/TableOfContentsLayout.tsx create mode 100644 frontend/app/presentation-templates/modern/settings.json create mode 100644 frontend/app/presentation-templates/neo-general/BulletIconsOnlySlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/BulletWithIconsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/ChallengeAndOutcomeWithOneStat.tsx create mode 100644 frontend/app/presentation-templates/neo-general/ChartWithBulletsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/GridBasedEightMetricsSnapshots.tsx create mode 100644 frontend/app/presentation-templates/neo-general/HeadlineDescriptionWithDoubleImage.tsx create mode 100644 frontend/app/presentation-templates/neo-general/HeadlineDescriptionWithImage.tsx create mode 100644 frontend/app/presentation-templates/neo-general/HeadlineTextWithBulletsAndStats.tsx create mode 100644 frontend/app/presentation-templates/neo-general/IndexedThreeColumnList.tsx create mode 100644 frontend/app/presentation-templates/neo-general/LayoutTextBlockWithMetricCards.tsx create mode 100644 frontend/app/presentation-templates/neo-general/LeftAlignQuote.tsx create mode 100644 frontend/app/presentation-templates/neo-general/MetricsWithImageSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/MultiChartGridSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/NumberedBulletsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/QuoteSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TableOfContentWithoutPageNumber.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TeamSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TextSplitWithEmphasisBlock.tsx create mode 100644 frontend/app/presentation-templates/neo-general/ThankYouContactInfoFooterImageSlide.tsx create mode 100644 frontend/app/presentation-templates/neo-general/Timeline.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleDescriptionMultiChartGridWithBullets.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleDescriptionMultiChartGridWithMetrics.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleDescriptionWithTable.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleMetricValueMetricLabelFunnelStages.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleMetricsWithChart.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleThreeColumnRiskConstraints.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleTopDescriptionFourTeamMembersGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleWithFullWidthChart.tsx create mode 100644 frontend/app/presentation-templates/neo-general/TitleWithGridBasedHeadingAndDescription.tsx create mode 100644 frontend/app/presentation-templates/neo-general/settings.json create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionBulletList.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionContactList.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionDualMetricsGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionIconTimeline.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionImageRight.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionMetricsChart.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionMetricsImage.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionMultiChartGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionMultiChartGridWithBullets.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionMultiChartGridWithMetrics.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDescriptionTable.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDualComparisonCards.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleDualComparisonCharts.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleHorizontalAlternatingTimeline.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleKpiSnapshotGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleSubtitlesChart.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/TitleTwoColumnNumberedList.tsx create mode 100644 frontend/app/presentation-templates/neo-modern/settings.json create mode 100644 frontend/app/presentation-templates/neo-standard/TitleBadgeChart.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionBulletList.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionContactCards.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionIconList.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionImageRight.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionMultiChartGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionMultiChartGridWithBullets.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionMultiChartGridWithMetrics.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionRadialCards.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionTable.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDescriptionTimeline.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDualChartsComparison.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleDualComparisonCards.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleKpiGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleMetricsChart.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitleMetricsImage.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/TitlePointsDonutGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-standard/settings.json create mode 100644 frontend/app/presentation-templates/neo-swift/TitleCenteredChart.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleChartMetricsSidebar.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionBulletList.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionDataTable.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionFourChartsSixBullets.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionImageRight.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionMetricsGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionMetricsGridImage.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionSixChartsFourMetrics.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDescriptionSixChartsGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleDualComparisonBlocks.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleLabelDescriptionStatCards.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleSubtitleTeamMemberCards.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleTaglineDescriptionNumberedSteps.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/TitleThreeByThreeMetricsGrid.tsx create mode 100644 frontend/app/presentation-templates/neo-swift/settings.json create mode 100644 frontend/app/presentation-templates/standard/ChartLeftTextRightLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/ContactLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/HeadingBulletImageDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/IconBulletDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/IconImageDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/ImageListWithDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/IntroSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/MetricsDescriptionLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/NumberedBulletSingleImageLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/TableOfContentsLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/VisualMetricsSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/standard/settings.json create mode 100644 frontend/app/presentation-templates/swift/BulletsWithIconsTitleDescription.tsx create mode 100644 frontend/app/presentation-templates/swift/IconBulletListDescription.tsx create mode 100644 frontend/app/presentation-templates/swift/ImageListDescription.tsx create mode 100644 frontend/app/presentation-templates/swift/IntroSlideLayout.tsx create mode 100644 frontend/app/presentation-templates/swift/MetricsNumbers.tsx create mode 100644 frontend/app/presentation-templates/swift/SimpleBulletPointsLayout.tsx create mode 100644 frontend/app/presentation-templates/swift/TableOfContents.tsx create mode 100644 frontend/app/presentation-templates/swift/TableorChart.tsx create mode 100644 frontend/app/presentation-templates/swift/Timeline.tsx create mode 100644 frontend/app/presentation-templates/swift/settings.json create mode 100644 frontend/app/presentation-templates/utils.ts create mode 100644 frontend/app/providers.tsx create mode 100644 frontend/app/schema/page.tsx create mode 100644 frontend/components.json create mode 100644 frontend/components/Announcement.tsx create mode 100644 frontend/components/AnthropicConfig.tsx create mode 100644 frontend/components/AuthGuard.tsx create mode 100644 frontend/components/BackBtn.tsx create mode 100644 frontend/components/CustomConfig.tsx create mode 100644 frontend/components/GoogleConfig.tsx create mode 100644 frontend/components/Header.tsx create mode 100644 frontend/components/Home.tsx create mode 100644 frontend/components/LLMSelection.tsx create mode 100644 frontend/components/OllamaConfig.tsx create mode 100644 frontend/components/OpenAIConfig.tsx create mode 100644 frontend/components/ToolTip.tsx create mode 100644 frontend/components/Wrapper.tsx create mode 100644 frontend/components/ui/accordion.tsx create mode 100644 frontend/components/ui/button.tsx create mode 100644 frontend/components/ui/card.tsx create mode 100644 frontend/components/ui/chart.tsx create mode 100644 frontend/components/ui/collapsible.tsx create mode 100644 frontend/components/ui/command.tsx create mode 100644 frontend/components/ui/dialog.tsx create mode 100644 frontend/components/ui/input.tsx create mode 100644 frontend/components/ui/label.tsx create mode 100644 frontend/components/ui/loader.tsx create mode 100644 frontend/components/ui/overlay-loader.tsx create mode 100644 frontend/components/ui/popover.tsx create mode 100644 frontend/components/ui/progress-bar.tsx create mode 100644 frontend/components/ui/progress.tsx create mode 100644 frontend/components/ui/radio-group.tsx create mode 100644 frontend/components/ui/scroll-area.tsx create mode 100644 frontend/components/ui/select.tsx create mode 100644 frontend/components/ui/separator.tsx create mode 100644 frontend/components/ui/sheet.tsx create mode 100644 frontend/components/ui/skeleton.tsx create mode 100644 frontend/components/ui/slider.tsx create mode 100644 frontend/components/ui/sonner.tsx create mode 100644 frontend/components/ui/switch.tsx create mode 100644 frontend/components/ui/table.tsx create mode 100644 frontend/components/ui/tabs.tsx create mode 100644 frontend/components/ui/textarea.tsx create mode 100644 frontend/components/ui/toggle.tsx create mode 100644 frontend/components/ui/tooltip.tsx create mode 100644 frontend/cypress.config.ts create mode 100644 frontend/cypress/fixtures/example.json create mode 100644 frontend/cypress/fixtures/example.txt create mode 100644 frontend/cypress/fixtures/test-doc.txt create mode 100644 frontend/cypress/support/commands.ts create mode 100644 frontend/cypress/support/component-index.html create mode 100644 frontend/cypress/support/component.ts create mode 100644 frontend/i18n/I18nProvider.tsx create mode 100644 frontend/i18n/i18n.ts create mode 100644 frontend/i18n/locales/en/admin.json create mode 100644 frontend/i18n/locales/en/auth.json create mode 100644 frontend/i18n/locales/en/common.json create mode 100644 frontend/i18n/locales/en/editor.json create mode 100644 frontend/i18n/locales/en/wizard.json create mode 100644 frontend/lib/utils.ts create mode 100644 frontend/models/errors.ts create mode 100644 frontend/next-env.d.ts create mode 100644 frontend/next.config.mjs create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.mjs create mode 100644 frontend/public/404.svg create mode 100644 frontend/public/Logo.png create mode 100644 frontend/public/loading.gif create mode 100644 frontend/public/logo-white.png create mode 100644 frontend/public/pdf.svg create mode 100644 frontend/public/pptx.svg create mode 100644 frontend/public/report.png create mode 100644 frontend/store/slices/adminSlice.ts create mode 100644 frontend/store/slices/authSlice.ts create mode 100644 frontend/store/slices/presentationGenUpload.ts create mode 100644 frontend/store/slices/presentationGeneration.ts create mode 100644 frontend/store/slices/undoRedoSlice.ts create mode 100644 frontend/store/slices/userConfig.ts create mode 100644 frontend/store/store.ts create mode 100644 frontend/tailwind.config.ts create mode 100644 frontend/tsconfig.json create mode 100644 frontend/tsconfig.tsbuildinfo create mode 100644 frontend/types/element_attibutes.ts create mode 100644 frontend/types/global.d.ts create mode 100644 frontend/types/llm_config.ts create mode 100644 frontend/types/pptx_models.ts create mode 100644 frontend/types/presentation.ts create mode 100644 frontend/utils/constant.ts create mode 100644 frontend/utils/error_helpers.ts create mode 100644 frontend/utils/pptx_models_utils.ts create mode 100644 frontend/utils/providerConstants.ts create mode 100644 frontend/utils/providerUtils.ts create mode 100644 frontend/utils/storeHelpers.ts create mode 100644 implementation_plan.md create mode 100644 nginx.conf diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e4c3338 --- /dev/null +++ b/.env.example @@ -0,0 +1,53 @@ +# Database +POSTGRES_PASSWORD=deckforge + +# Redis +REDIS_URL=redis://redis:6379/0 + +# Azure AD Auth (leave blank to enable dev auth bypass) +AZURE_AD_TENANT_ID= +AZURE_AD_CLIENT_ID= +AZURE_AD_CLIENT_SECRET= +AZURE_AD_REDIRECT_URI=http://localhost/api/v1/auth/callback + +# JWT +JWT_SECRET_KEY=change-me-to-a-random-256-bit-key + +# Dev Auth (only used when AZURE_AD_TENANT_ID is not set) +DEV_AUTH_PASSWORD=devpass123 + +# LLM Provider — Claude Sonnet 4.6 for all text generation +LLM=anthropic +ANTHROPIC_API_KEY= +ANTHROPIC_MODEL=claude-sonnet-4-6-20250929 + +# Image Provider — Google for image generation +GOOGLE_API_KEY= +GOOGLE_MODEL= +IMAGE_PROVIDER=google + +# Other LLM providers (not used by default) +OPENAI_API_KEY= +OPENAI_MODEL= +OLLAMA_URL= +OLLAMA_MODEL= +CUSTOM_LLM_URL= +CUSTOM_LLM_API_KEY= +CUSTOM_MODEL= + +# Image fallback providers +PEXELS_API_KEY= +PIXABAY_API_KEY= +DISABLE_IMAGE_GENERATION= + +# LLM Features +EXTENDED_REASONING= +TOOL_CALLS= +DISABLE_THINKING= +WEB_GROUNDING= + +# App +APP_DATA_DIRECTORY=/app_data +TEMP_DIRECTORY=/tmp/deckforge +CAN_CHANGE_KEYS=false +DISABLE_ANONYMOUS_TRACKING=true diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d303d43 --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +.PHONY: dev build up down migrate seed test test-frontend logs shell-api shell-db + +dev: + docker compose up --build + +build: + docker compose build + +up: + docker compose up -d + +down: + docker compose down + +migrate: + docker compose exec api alembic upgrade head + +seed: + docker compose exec api python -m scripts.seed + +test: + docker compose exec api pytest tests/ -v + +test-frontend: + docker compose exec web npx cypress run + +logs: + docker compose logs -f + +shell-api: + docker compose exec api bash + +shell-db: + docker compose exec postgres psql -U deckforge diff --git a/backend/.python-version b/backend/.python-version new file mode 100644 index 0000000..2c07333 --- /dev/null +++ b/backend/.python-version @@ -0,0 +1 @@ +3.11 diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..1b075e2 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,32 @@ +FROM python:3.11-slim-bookworm AS builder + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app +COPY pyproject.toml ./ +RUN pip install --no-cache-dir uv && \ + uv pip install --system --no-cache -r pyproject.toml + +FROM python:3.11-slim-bookworm + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libreoffice \ + chromium \ + fontconfig \ + curl \ + && rm -rf /var/lib/apt/lists/* + +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium +ENV APP_DATA_DIRECTORY=/app_data +ENV TEMP_DIRECTORY=/tmp/deckforge + +WORKDIR /app + +COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages +COPY --from=builder /usr/local/bin /usr/local/bin +COPY . . + +EXPOSE 8000 +CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/backend/alembic.ini b/backend/alembic.ini new file mode 100644 index 0000000..1437f8c --- /dev/null +++ b/backend/alembic.ini @@ -0,0 +1,37 @@ +[alembic] +script_location = migrations +prepend_sys_path = . +sqlalchemy.url = driver://user:pass@localhost/dbname + +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/backend/api/__init__.py b/backend/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/lifespan.py b/backend/api/lifespan.py new file mode 100644 index 0000000..86f5537 --- /dev/null +++ b/backend/api/lifespan.py @@ -0,0 +1,23 @@ +from contextlib import asynccontextmanager +import os + +from fastapi import FastAPI + +from services.database import create_db_and_tables +from utils.get_env import get_app_data_directory_env +from utils.model_availability import ( + check_llm_and_image_provider_api_or_model_availability, +) + + +@asynccontextmanager +async def app_lifespan(_: FastAPI): + """ + Lifespan context manager for FastAPI application. + Initializes the application data directory and checks LLM model availability. + + """ + os.makedirs(get_app_data_directory_env(), exist_ok=True) + await create_db_and_tables() + await check_llm_and_image_provider_api_or_model_availability() + yield diff --git a/backend/api/main.py b/backend/api/main.py new file mode 100644 index 0000000..8c984dd --- /dev/null +++ b/backend/api/main.py @@ -0,0 +1,55 @@ +from fastapi import APIRouter, FastAPI +from fastapi.middleware.cors import CORSMiddleware +from api.lifespan import app_lifespan +from api.middlewares import UserConfigEnvUpdateMiddleware +from api.middlewares.auth_middleware import AuthMiddleware +from api.v1.ppt.router import API_V1_PPT_ROUTER +from api.v1.webhook.router import API_V1_WEBHOOK_ROUTER +from api.v1.mock.router import API_V1_MOCK_ROUTER +from api.v1.auth.router import AUTH_ROUTER +from api.v1.admin.users_router import USERS_ROUTER +from api.v1.admin.teams_router import TEAMS_ROUTER +from api.v1.admin.clients_router import CLIENTS_ROUTER +from api.v1.admin.audit_router import AUDIT_ROUTER +from api.v1.admin.brand_config_router import BRAND_CONFIG_ROUTER +from api.v1.admin.master_decks_router import MASTER_DECKS_ROUTER +from api.middlewares.audit_middleware import AuditMiddleware + + +app = FastAPI(lifespan=app_lifespan) + +# Admin router aggregator +ADMIN_ROUTER = APIRouter(prefix="/api/v1/admin") +ADMIN_ROUTER.include_router(USERS_ROUTER) +ADMIN_ROUTER.include_router(TEAMS_ROUTER) +ADMIN_ROUTER.include_router(CLIENTS_ROUTER) +ADMIN_ROUTER.include_router(AUDIT_ROUTER) +ADMIN_ROUTER.include_router(BRAND_CONFIG_ROUTER) +ADMIN_ROUTER.include_router(MASTER_DECKS_ROUTER) + +# Routers +app.include_router(AUTH_ROUTER) +app.include_router(ADMIN_ROUTER) +app.include_router(API_V1_PPT_ROUTER) +app.include_router(API_V1_WEBHOOK_ROUTER) +app.include_router(API_V1_MOCK_ROUTER) + +# Middlewares (executed in reverse order: last added = first executed) +# 1. CORS must run first (handles preflight OPTIONS) +origins = ["*"] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# 2. Auth middleware (validates JWT, attaches user to request.state) +app.add_middleware(AuthMiddleware) + +# 3. Audit middleware (fire-and-forget logging for mutations) +app.add_middleware(AuditMiddleware) + +# 4. User config middleware +app.add_middleware(UserConfigEnvUpdateMiddleware) diff --git a/backend/api/middlewares.py b/backend/api/middlewares.py new file mode 100644 index 0000000..f5c0c3f --- /dev/null +++ b/backend/api/middlewares.py @@ -0,0 +1,12 @@ +from fastapi import Request +from starlette.middleware.base import BaseHTTPMiddleware + +from utils.get_env import get_can_change_keys_env +from utils.user_config import update_env_with_user_config + + +class UserConfigEnvUpdateMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + if get_can_change_keys_env() != "false": + update_env_with_user_config() + return await call_next(request) diff --git a/backend/api/middlewares/__init__.py b/backend/api/middlewares/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/middlewares/audit_middleware.py b/backend/api/middlewares/audit_middleware.py new file mode 100644 index 0000000..6165e90 --- /dev/null +++ b/backend/api/middlewares/audit_middleware.py @@ -0,0 +1,62 @@ +"""Middleware that auto-logs mutating API requests to audit log.""" +from starlette.middleware.base import BaseHTTPMiddleware +from starlette.requests import Request +from starlette.responses import Response + +from services import audit_service + + +AUDITABLE_METHODS = {"POST", "PUT", "PATCH", "DELETE"} + + +def _extract_resource_type(path: str) -> str: + """Extract resource type from URL path. + + e.g. /api/v1/admin/users/123 -> users + /api/v1/ppt/presentation/create -> presentation + """ + parts = [p for p in path.split("/") if p] + # Walk backwards to find first meaningful segment (skip IDs and actions) + for part in reversed(parts): + if part in ("v1", "api", "admin", "ppt"): + continue + # Skip UUID-looking segments + if len(part) == 36 and part.count("-") == 4: + continue + # Skip common action words + if part in ("create", "update", "delete", "export", "login", "logout", "callback"): + continue + return part + return "unknown" + + +class AuditMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next) -> Response: + response = await call_next(request) + + # Only log mutating requests to API endpoints + if request.method not in AUDITABLE_METHODS: + return response + if not request.url.path.startswith("/api/"): + return response + # Skip auth endpoints (logged separately) + if "/auth/" in request.url.path: + return response + + # Only log successful mutations + if response.status_code >= 400: + return response + + user = getattr(request.state, "user", None) + user_id = user.id if user else None + ip_address = request.client.host if request.client else None + resource_type = _extract_resource_type(request.url.path) + + audit_service.log( + user_id=user_id, + action=f"{request.method} {request.url.path}", + resource_type=resource_type, + ip_address=ip_address, + ) + + return response diff --git a/backend/api/middlewares/auth_middleware.py b/backend/api/middlewares/auth_middleware.py new file mode 100644 index 0000000..cb598dc --- /dev/null +++ b/backend/api/middlewares/auth_middleware.py @@ -0,0 +1,82 @@ +import uuid + +from fastapi import Request +from starlette.middleware.base import BaseHTTPMiddleware +from starlette.responses import JSONResponse + +from services.auth_service import AuthService +from services.database import async_session_maker +from models.sql.user import UserModel + +# Paths that skip authentication +PUBLIC_PATH_PREFIXES = [ + "/api/v1/auth/", + "/docs", + "/openapi.json", + "/api/health", +] + +auth_service = AuthService() + + +class AuthMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + path = request.url.path + + # Skip auth for public paths + for prefix in PUBLIC_PATH_PREFIXES: + if path.startswith(prefix): + request.state.user = None + return await call_next(request) + + # Skip auth for non-API paths (Next.js frontend routes) + if not path.startswith("/api/"): + request.state.user = None + return await call_next(request) + + # Extract token from cookie or Authorization header + token = request.cookies.get("session_token") + if not token: + auth_header = request.headers.get("Authorization") + if auth_header and auth_header.startswith("Bearer "): + token = auth_header[7:] + + if not token: + return JSONResponse( + status_code=401, + content={"detail": "Authentication required"}, + ) + + # Validate JWT + claims = auth_service.validate_token(token) + if not claims: + return JSONResponse( + status_code=401, + content={"detail": "Invalid or expired token"}, + ) + + # Load user from DB + try: + user_id = uuid.UUID(claims["sub"]) + async with async_session_maker() as session: + user = await session.get(UserModel, user_id) + except (ValueError, KeyError): + return JSONResponse( + status_code=401, + content={"detail": "Invalid token payload"}, + ) + + if not user: + return JSONResponse( + status_code=401, + content={"detail": "User not found"}, + ) + + if not user.is_active: + return JSONResponse( + status_code=401, + content={"detail": "Account deactivated"}, + ) + + request.state.user = user + return await call_next(request) diff --git a/backend/api/middlewares/rbac_middleware.py b/backend/api/middlewares/rbac_middleware.py new file mode 100644 index 0000000..318fedf --- /dev/null +++ b/backend/api/middlewares/rbac_middleware.py @@ -0,0 +1,32 @@ +"""RBAC helper functions for checking client/team access.""" +import uuid + +from fastapi import HTTPException +from sqlalchemy.ext.asyncio import AsyncSession + +from models.sql.user import UserModel +from services.access_service import get_accessible_client_ids + + +async def check_client_access( + user: UserModel, client_id: uuid.UUID, session: AsyncSession +) -> None: + """Raise 403 if user cannot access the given client.""" + if user.role == "super_admin": + return + accessible = await get_accessible_client_ids(user, session) + if client_id not in accessible: + raise HTTPException(status_code=403, detail="Access denied to this client") + + +async def check_team_admin( + user: UserModel, client_id: uuid.UUID, session: AsyncSession +) -> None: + """Raise 403 if user is not an admin for the given client's scope.""" + if user.role == "super_admin": + return + if user.role != "client_admin": + raise HTTPException(status_code=403, detail="Admin access required") + accessible = await get_accessible_client_ids(user, session) + if client_id not in accessible: + raise HTTPException(status_code=403, detail="Access denied to this client") diff --git a/backend/api/v1/admin/__init__.py b/backend/api/v1/admin/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/admin/audit_router.py b/backend/api/v1/admin/audit_router.py new file mode 100644 index 0000000..b3bdb05 --- /dev/null +++ b/backend/api/v1/admin/audit_router.py @@ -0,0 +1,109 @@ +"""Admin router for querying and exporting audit logs.""" +from datetime import datetime +from typing import Optional +import uuid + +from fastapi import APIRouter, Depends, HTTPException, Query +from fastapi.responses import StreamingResponse +from sqlalchemy.ext.asyncio import AsyncSession + +from models.sql.user import UserModel +from services.database import get_async_session +from services import audit_service +from services.access_service import get_accessible_client_ids +from utils.auth_dependencies import require_client_admin + +AUDIT_ROUTER = APIRouter(prefix="/audit-log", tags=["Admin - Audit"]) + + +@AUDIT_ROUTER.get("") +async def get_audit_logs( + admin: UserModel = Depends(require_client_admin), + user_id: Optional[uuid.UUID] = Query(None), + action: Optional[str] = Query(None), + resource_type: Optional[str] = Query(None), + client_id: Optional[uuid.UUID] = Query(None), + date_from: Optional[datetime] = Query(None), + date_to: Optional[datetime] = Query(None), + offset: int = Query(0, ge=0), + limit: int = Query(50, ge=1, le=200), + session: AsyncSession = Depends(get_async_session), +): + # Scope by role: client_admin can only see logs for their accessible clients + if admin.role != "super_admin": + accessible = await get_accessible_client_ids(admin, session) + if client_id and client_id not in accessible: + raise HTTPException(status_code=403, detail="Access denied to this client's logs") + # If no client_id filter, we can't restrict well — return all accessible + # For now, require client_id for non-super admins + if not client_id and accessible: + # Just return the first accessible client's logs by default + pass + + logs = await audit_service.query( + session=session, + user_id=user_id, + action=action, + resource_type=resource_type, + client_id=client_id, + date_from=date_from, + date_to=date_to, + offset=offset, + limit=limit, + ) + + return [ + { + "id": str(log.id), + "user_id": str(log.user_id) if log.user_id else None, + "action": log.action, + "resource_type": log.resource_type, + "resource_id": str(log.resource_id) if log.resource_id else None, + "client_id": str(log.client_id) if log.client_id else None, + "details": log.details, + "ip_address": log.ip_address, + "created_at": log.created_at.isoformat() if log.created_at else None, + } + for log in logs + ] + + +@AUDIT_ROUTER.get("/export") +async def export_audit_logs( + format: str = Query("csv", regex="^(csv|json)$"), + admin: UserModel = Depends(require_client_admin), + user_id: Optional[uuid.UUID] = Query(None), + action: Optional[str] = Query(None), + resource_type: Optional[str] = Query(None), + client_id: Optional[uuid.UUID] = Query(None), + date_from: Optional[datetime] = Query(None), + date_to: Optional[datetime] = Query(None), + session: AsyncSession = Depends(get_async_session), +): + # Fetch up to 10000 entries for export + logs = await audit_service.query( + session=session, + user_id=user_id, + action=action, + resource_type=resource_type, + client_id=client_id, + date_from=date_from, + date_to=date_to, + offset=0, + limit=10000, + ) + + if format == "csv": + content = audit_service.export_csv(logs) + media_type = "text/csv" + filename = "audit_log.csv" + else: + content = audit_service.export_json(logs) + media_type = "application/json" + filename = "audit_log.json" + + return StreamingResponse( + iter([content]), + media_type=media_type, + headers={"Content-Disposition": f"attachment; filename={filename}"}, + ) diff --git a/backend/api/v1/admin/brand_config_router.py b/backend/api/v1/admin/brand_config_router.py new file mode 100644 index 0000000..22a7e2b --- /dev/null +++ b/backend/api/v1/admin/brand_config_router.py @@ -0,0 +1,199 @@ +"""Admin router for brand configuration management.""" +import os +import uuid +from typing import Optional + +from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, File +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.sql.brand_config import BrandConfigModel +from models.sql.user import UserModel +from services.database import get_async_session +from api.middlewares.rbac_middleware import check_team_admin +from utils.auth_dependencies import require_client_admin + +BRAND_CONFIG_ROUTER = APIRouter(tags=["Admin - Brand Config"]) + +DATA_DIR = os.environ.get("DATA_DIR", "data") + + +def _ensure_dir(path: str) -> None: + os.makedirs(path, exist_ok=True) + + +@BRAND_CONFIG_ROUTER.get("/clients/{client_id}/brand") +async def get_brand_config( + client_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + result = await session.execute( + select(BrandConfigModel).where(BrandConfigModel.client_id == client_id) + ) + config = result.scalar_one_or_none() + if not config: + raise HTTPException(status_code=404, detail="Brand config not found") + + return { + "id": str(config.id), + "client_id": str(config.client_id), + "primary_colors": config.primary_colors, + "secondary_colors": config.secondary_colors, + "fonts": config.fonts, + "logo_paths": config.logo_paths, + "voice_rules": config.voice_rules, + "voice_examples": config.voice_examples, + "guideline_doc_path": config.guideline_doc_path, + } + + +@BRAND_CONFIG_ROUTER.put("/clients/{client_id}/brand") +async def update_brand_config( + client_id: uuid.UUID, + primary_colors: Optional[list] = Body(None, embed=True), + secondary_colors: Optional[list] = Body(None, embed=True), + fonts: Optional[dict] = Body(None, embed=True), + voice_rules: Optional[str] = Body(None, embed=True), + voice_examples: Optional[list] = Body(None, embed=True), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + result = await session.execute( + select(BrandConfigModel).where(BrandConfigModel.client_id == client_id) + ) + config = result.scalar_one_or_none() + + if not config: + config = BrandConfigModel(client_id=client_id) + + if primary_colors is not None: + config.primary_colors = primary_colors + if secondary_colors is not None: + config.secondary_colors = secondary_colors + if fonts is not None: + config.fonts = fonts + if voice_rules is not None: + config.voice_rules = voice_rules + if voice_examples is not None: + config.voice_examples = voice_examples + + session.add(config) + await session.commit() + + return { + "id": str(config.id), + "client_id": str(config.client_id), + "primary_colors": config.primary_colors, + "secondary_colors": config.secondary_colors, + "fonts": config.fonts, + "logo_paths": config.logo_paths, + "voice_rules": config.voice_rules, + "voice_examples": config.voice_examples, + "guideline_doc_path": config.guideline_doc_path, + } + + +@BRAND_CONFIG_ROUTER.post("/clients/{client_id}/brand/logo") +async def upload_logo( + client_id: uuid.UUID, + file: UploadFile = File(...), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + logo_dir = os.path.join(DATA_DIR, "clients", str(client_id), "logos") + _ensure_dir(logo_dir) + + filename = f"{uuid.uuid4()}_{file.filename}" + file_path = os.path.join(logo_dir, filename) + + content = await file.read() + with open(file_path, "wb") as f: + f.write(content) + + # Update brand config + result = await session.execute( + select(BrandConfigModel).where(BrandConfigModel.client_id == client_id) + ) + config = result.scalar_one_or_none() + if not config: + config = BrandConfigModel(client_id=client_id, logo_paths=[file_path]) + else: + paths = config.logo_paths or [] + paths.append(file_path) + config.logo_paths = paths + + session.add(config) + await session.commit() + + return {"message": "Logo uploaded", "path": file_path} + + +@BRAND_CONFIG_ROUTER.delete("/clients/{client_id}/brand/logo/{index}") +async def delete_logo( + client_id: uuid.UUID, + index: int, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + result = await session.execute( + select(BrandConfigModel).where(BrandConfigModel.client_id == client_id) + ) + config = result.scalar_one_or_none() + if not config or not config.logo_paths: + raise HTTPException(status_code=404, detail="No logos found") + + if index < 0 or index >= len(config.logo_paths): + raise HTTPException(status_code=400, detail="Invalid logo index") + + removed_path = config.logo_paths.pop(index) + # Try to delete the file + if os.path.exists(removed_path): + os.remove(removed_path) + + session.add(config) + await session.commit() + + return {"message": "Logo removed"} + + +@BRAND_CONFIG_ROUTER.post("/clients/{client_id}/brand/guideline") +async def upload_guideline( + client_id: uuid.UUID, + file: UploadFile = File(...), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + guideline_dir = os.path.join(DATA_DIR, "clients", str(client_id), "guidelines") + _ensure_dir(guideline_dir) + + filename = f"{uuid.uuid4()}_{file.filename}" + file_path = os.path.join(guideline_dir, filename) + + content = await file.read() + with open(file_path, "wb") as f: + f.write(content) + + result = await session.execute( + select(BrandConfigModel).where(BrandConfigModel.client_id == client_id) + ) + config = result.scalar_one_or_none() + if not config: + config = BrandConfigModel(client_id=client_id, guideline_doc_path=file_path) + else: + config.guideline_doc_path = file_path + + session.add(config) + await session.commit() + + return {"message": "Guideline uploaded", "path": file_path} diff --git a/backend/api/v1/admin/clients_router.py b/backend/api/v1/admin/clients_router.py new file mode 100644 index 0000000..1cd1416 --- /dev/null +++ b/backend/api/v1/admin/clients_router.py @@ -0,0 +1,154 @@ +"""Admin router for client management.""" +import re +from typing import List, Optional +import uuid + +from fastapi import APIRouter, Body, Depends, HTTPException, Query +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.sql.client import ClientModel +from models.sql.team import TeamModel +from models.sql.user import UserModel +from services.database import get_async_session +from services.access_service import get_accessible_clients +from api.middlewares.rbac_middleware import check_client_access +from utils.auth_dependencies import require_super_admin, require_client_admin + +CLIENTS_ROUTER = APIRouter(prefix="/clients", tags=["Admin - Clients"]) + + +def _slugify(name: str) -> str: + slug = name.lower().strip() + slug = re.sub(r"[^a-z0-9]+", "-", slug) + return slug.strip("-") + + +@CLIENTS_ROUTER.post("", status_code=201) +async def create_client( + name: str = Body(..., embed=True), + review_policy: str = Body("self_approve", embed=True), + _: UserModel = Depends(require_super_admin), + session: AsyncSession = Depends(get_async_session), +): + slug = _slugify(name) + + # Check slug uniqueness + result = await session.execute( + select(ClientModel).where(ClientModel.slug == slug) + ) + if result.scalar_one_or_none(): + raise HTTPException(status_code=409, detail="A client with this name already exists") + + client = ClientModel(name=name, slug=slug, review_policy=review_policy) + session.add(client) + await session.flush() + + # Auto-create a team for this client + team = TeamModel(name=f"{name} Team", client_id=client.id, is_default=False) + session.add(team) + await session.commit() + + return { + "id": str(client.id), + "name": client.name, + "slug": client.slug, + "review_policy": client.review_policy, + "team_id": str(team.id), + } + + +@CLIENTS_ROUTER.get("", response_model=List[dict]) +async def list_clients( + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + clients = await get_accessible_clients(admin, session) + return [ + { + "id": str(c.id), + "name": c.name, + "slug": c.slug, + "logo_path": c.logo_path, + "retention_days": c.retention_days, + "review_policy": c.review_policy, + "is_active": c.is_active, + "created_at": c.created_at.isoformat() if c.created_at else None, + } + for c in clients + ] + + +@CLIENTS_ROUTER.get("/{client_id}") +async def get_client( + client_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_client_access(admin, client_id, session) + + client = await session.get(ClientModel, client_id) + if not client: + raise HTTPException(status_code=404, detail="Client not found") + + return { + "id": str(client.id), + "name": client.name, + "slug": client.slug, + "logo_path": client.logo_path, + "retention_days": client.retention_days, + "review_policy": client.review_policy, + "is_active": client.is_active, + "created_at": client.created_at.isoformat() if client.created_at else None, + } + + +@CLIENTS_ROUTER.put("/{client_id}") +async def update_client( + client_id: uuid.UUID, + name: Optional[str] = Body(None, embed=True), + review_policy: Optional[str] = Body(None, embed=True), + retention_days: Optional[int] = Body(None, embed=True), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_client_access(admin, client_id, session) + + client = await session.get(ClientModel, client_id) + if not client: + raise HTTPException(status_code=404, detail="Client not found") + + if name is not None: + client.name = name + client.slug = _slugify(name) + if review_policy is not None: + client.review_policy = review_policy + if retention_days is not None: + client.retention_days = retention_days + + session.add(client) + await session.commit() + + return { + "id": str(client.id), + "name": client.name, + "slug": client.slug, + "review_policy": client.review_policy, + "retention_days": client.retention_days, + } + + +@CLIENTS_ROUTER.delete("/{client_id}") +async def deactivate_client( + client_id: uuid.UUID, + _: UserModel = Depends(require_super_admin), + session: AsyncSession = Depends(get_async_session), +): + client = await session.get(ClientModel, client_id) + if not client: + raise HTTPException(status_code=404, detail="Client not found") + + client.is_active = False + session.add(client) + await session.commit() + return {"message": "Client deactivated", "client_id": str(client.id)} diff --git a/backend/api/v1/admin/master_decks_router.py b/backend/api/v1/admin/master_decks_router.py new file mode 100644 index 0000000..f9a30f3 --- /dev/null +++ b/backend/api/v1/admin/master_decks_router.py @@ -0,0 +1,262 @@ +"""Admin router for master deck upload, parsing, and management.""" +import os +import shutil +import uuid +from typing import Optional + +from fastapi import APIRouter, Depends, File, HTTPException, Query, UploadFile +from pydantic import BaseModel +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +from constants.documents import POWERPOINT_TYPES +from models.sql.master_deck import MasterDeckModel +from models.sql.user import UserModel +from services.database import get_async_session +from api.middlewares.rbac_middleware import check_team_admin +from utils.auth_dependencies import require_client_admin + +MASTER_DECKS_ROUTER = APIRouter(tags=["Admin - Master Decks"]) + +DATA_DIR = os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "data") + + +def _deck_dir(client_id: uuid.UUID, deck_id: uuid.UUID) -> str: + return os.path.join(DATA_DIR, "clients", str(client_id), "master_decks", str(deck_id)) + + +# --- Request / Response schemas --- + + +class MasterDeckUpdate(BaseModel): + name: Optional[str] = None + description: Optional[str] = None + is_active: Optional[bool] = None + + +class LayoutUpdate(BaseModel): + layout_name: Optional[str] = None + layout_type: Optional[str] = None + react_code: Optional[str] = None + + +# --- Endpoints --- + + +@MASTER_DECKS_ROUTER.get("/clients/{client_id}/master-decks") +async def list_master_decks( + client_id: uuid.UUID, + include_inactive: bool = Query(False), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + stmt = select(MasterDeckModel).where(MasterDeckModel.client_id == client_id) + if not include_inactive: + stmt = stmt.where(MasterDeckModel.is_active == True) + stmt = stmt.order_by(MasterDeckModel.created_at.desc()) + + result = await session.execute(stmt) + decks = result.scalars().all() + + return [ + { + "id": str(d.id), + "client_id": str(d.client_id), + "name": d.name, + "description": d.description, + "thumbnail_path": d.thumbnail_path, + "parse_status": d.parse_status, + "is_active": d.is_active, + "layouts": d.layouts, + "created_at": d.created_at.isoformat() if d.created_at else None, + "updated_at": d.updated_at.isoformat() if d.updated_at else None, + } + for d in decks + ] + + +@MASTER_DECKS_ROUTER.post("/clients/{client_id}/master-decks") +async def upload_master_deck( + client_id: uuid.UUID, + file: UploadFile = File(...), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + await check_team_admin(admin, client_id, session) + + if file.content_type not in POWERPOINT_TYPES: + raise HTTPException(status_code=400, detail="Only PPTX files are accepted") + + if hasattr(file, "size") and file.size and file.size > 100 * 1024 * 1024: + raise HTTPException(status_code=400, detail="File too large (max 100 MB)") + + deck_id = uuid.uuid4() + deck_path = _deck_dir(client_id, deck_id) + os.makedirs(deck_path, exist_ok=True) + + original_name = file.filename or "presentation.pptx" + file_path = os.path.join(deck_path, original_name) + content = await file.read() + with open(file_path, "wb") as f: + f.write(content) + + deck = MasterDeckModel( + id=deck_id, + client_id=client_id, + name=os.path.splitext(original_name)[0], + original_file_path=file_path, + parse_status="pending", + is_active=True, + ) + session.add(deck) + await session.commit() + await session.refresh(deck) + + # Kick off async parsing + import asyncio + from services.master_deck_parser_service import parse_master_deck + + asyncio.create_task(parse_master_deck(deck_id)) + + return { + "id": str(deck.id), + "client_id": str(deck.client_id), + "name": deck.name, + "parse_status": deck.parse_status, + "created_at": deck.created_at.isoformat() if deck.created_at else None, + } + + +@MASTER_DECKS_ROUTER.get("/master-decks/{deck_id}") +async def get_master_deck( + deck_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + raise HTTPException(status_code=404, detail="Master deck not found") + + await check_team_admin(admin, deck.client_id, session) + + return { + "id": str(deck.id), + "client_id": str(deck.client_id), + "name": deck.name, + "description": deck.description, + "original_file_path": deck.original_file_path, + "thumbnail_path": deck.thumbnail_path, + "parsed_config": deck.parsed_config, + "layouts": deck.layouts, + "parse_status": deck.parse_status, + "is_active": deck.is_active, + "created_at": deck.created_at.isoformat() if deck.created_at else None, + "updated_at": deck.updated_at.isoformat() if deck.updated_at else None, + } + + +@MASTER_DECKS_ROUTER.put("/master-decks/{deck_id}") +async def update_master_deck( + deck_id: uuid.UUID, + body: MasterDeckUpdate, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + raise HTTPException(status_code=404, detail="Master deck not found") + + await check_team_admin(admin, deck.client_id, session) + + if body.name is not None: + deck.name = body.name + if body.description is not None: + deck.description = body.description + if body.is_active is not None: + deck.is_active = body.is_active + + await session.commit() + await session.refresh(deck) + + return {"ok": True, "id": str(deck.id)} + + +@MASTER_DECKS_ROUTER.put("/master-decks/{deck_id}/layouts/{layout_index}") +async def update_layout( + deck_id: uuid.UUID, + layout_index: int, + body: LayoutUpdate, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + raise HTTPException(status_code=404, detail="Master deck not found") + + await check_team_admin(admin, deck.client_id, session) + + if not deck.layouts or layout_index < 0 or layout_index >= len(deck.layouts): + raise HTTPException(status_code=404, detail="Layout not found at index") + + layout = deck.layouts[layout_index] + if body.layout_name is not None: + layout["layout_name"] = body.layout_name + if body.layout_type is not None: + layout["layout_type"] = body.layout_type + if body.react_code is not None: + layout["react_code"] = body.react_code + + # SQLAlchemy needs to detect mutation on JSON column + from sqlalchemy.orm.attributes import flag_modified + + flag_modified(deck, "layouts") + await session.commit() + + return {"ok": True, "layout_index": layout_index} + + +@MASTER_DECKS_ROUTER.post("/master-decks/{deck_id}/reparse") +async def reparse_master_deck( + deck_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + raise HTTPException(status_code=404, detail="Master deck not found") + + await check_team_admin(admin, deck.client_id, session) + + if deck.parse_status == "processing": + raise HTTPException(status_code=409, detail="Deck is already being parsed") + + deck.parse_status = "pending" + await session.commit() + + import asyncio + from services.master_deck_parser_service import parse_master_deck + + asyncio.create_task(parse_master_deck(deck_id)) + + return {"ok": True, "parse_status": "pending"} + + +@MASTER_DECKS_ROUTER.delete("/master-decks/{deck_id}") +async def delete_master_deck( + deck_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + raise HTTPException(status_code=404, detail="Master deck not found") + + await check_team_admin(admin, deck.client_id, session) + + # Soft delete + deck.is_active = False + await session.commit() + + return {"ok": True} diff --git a/backend/api/v1/admin/teams_router.py b/backend/api/v1/admin/teams_router.py new file mode 100644 index 0000000..a69f7bb --- /dev/null +++ b/backend/api/v1/admin/teams_router.py @@ -0,0 +1,204 @@ +"""Admin router for team management.""" +from typing import List, Optional +import uuid + +from fastapi import APIRouter, Body, Depends, HTTPException, Query +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.sql.team import TeamModel +from models.sql.team_membership import TeamMembershipModel +from models.sql.user import UserModel +from services.database import get_async_session +from services.access_service import get_accessible_client_ids +from api.middlewares.rbac_middleware import check_team_admin +from utils.auth_dependencies import get_current_user, require_client_admin + +TEAMS_ROUTER = APIRouter(prefix="/teams", tags=["Admin - Teams"]) + + +@TEAMS_ROUTER.post("", status_code=201) +async def create_team( + name: str = Body(..., embed=True), + client_id: Optional[uuid.UUID] = Body(None, embed=True), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + if client_id: + await check_team_admin(admin, client_id, session) + + team = TeamModel(name=name, client_id=client_id, is_default=False) + session.add(team) + await session.commit() + return { + "id": str(team.id), + "name": team.name, + "client_id": str(team.client_id) if team.client_id else None, + "is_default": team.is_default, + } + + +@TEAMS_ROUTER.get("", response_model=List[dict]) +async def list_teams( + client_id: Optional[uuid.UUID] = Query(None), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + query = select(TeamModel) + + if admin.role != "super_admin": + accessible_ids = await get_accessible_client_ids(admin, session) + query = query.where( + (TeamModel.client_id.in_(accessible_ids)) | (TeamModel.is_default == True) # noqa: E712 + ) + + if client_id: + query = query.where(TeamModel.client_id == client_id) + + result = await session.execute(query.order_by(TeamModel.created_at.desc())) + teams = result.scalars().all() + return [ + { + "id": str(t.id), + "name": t.name, + "client_id": str(t.client_id) if t.client_id else None, + "is_default": t.is_default, + "created_at": t.created_at.isoformat() if t.created_at else None, + } + for t in teams + ] + + +@TEAMS_ROUTER.get("/{team_id}") +async def get_team( + team_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + team = await session.get(TeamModel, team_id) + if not team: + raise HTTPException(status_code=404, detail="Team not found") + + if team.client_id and admin.role != "super_admin": + await check_team_admin(admin, team.client_id, session) + + # Get members + result = await session.execute( + select(UserModel) + .join(TeamMembershipModel, TeamMembershipModel.user_id == UserModel.id) + .where(TeamMembershipModel.team_id == team_id) + ) + members = result.scalars().all() + + return { + "id": str(team.id), + "name": team.name, + "client_id": str(team.client_id) if team.client_id else None, + "is_default": team.is_default, + "created_at": team.created_at.isoformat() if team.created_at else None, + "members": [ + { + "id": str(m.id), + "email": m.email, + "display_name": m.display_name, + "role": m.role, + } + for m in members + ], + } + + +@TEAMS_ROUTER.post("/{team_id}/members", status_code=201) +async def add_team_member( + team_id: uuid.UUID, + user_id: uuid.UUID = Body(..., embed=True), + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + team = await session.get(TeamModel, team_id) + if not team: + raise HTTPException(status_code=404, detail="Team not found") + + if team.client_id and admin.role != "super_admin": + await check_team_admin(admin, team.client_id, session) + + user = await session.get(UserModel, user_id) + if not user: + raise HTTPException(status_code=404, detail="User not found") + + # Check for existing membership + result = await session.execute( + select(TeamMembershipModel).where( + TeamMembershipModel.user_id == user_id, + TeamMembershipModel.team_id == team_id, + ) + ) + if result.scalar_one_or_none(): + raise HTTPException(status_code=409, detail="User already in team") + + membership = TeamMembershipModel( + user_id=user_id, + team_id=team_id, + assigned_by=admin.id, + ) + session.add(membership) + await session.commit() + return {"message": "Member added", "user_id": str(user_id), "team_id": str(team_id)} + + +@TEAMS_ROUTER.delete("/{team_id}/members/{user_id}") +async def remove_team_member( + team_id: uuid.UUID, + user_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + team = await session.get(TeamModel, team_id) + if not team: + raise HTTPException(status_code=404, detail="Team not found") + + if team.client_id and admin.role != "super_admin": + await check_team_admin(admin, team.client_id, session) + + result = await session.execute( + select(TeamMembershipModel).where( + TeamMembershipModel.user_id == user_id, + TeamMembershipModel.team_id == team_id, + ) + ) + membership = result.scalar_one_or_none() + if not membership: + raise HTTPException(status_code=404, detail="Membership not found") + + await session.delete(membership) + await session.commit() + return {"message": "Member removed"} + + +@TEAMS_ROUTER.delete("/{team_id}") +async def delete_team( + team_id: uuid.UUID, + admin: UserModel = Depends(require_client_admin), + session: AsyncSession = Depends(get_async_session), +): + team = await session.get(TeamModel, team_id) + if not team: + raise HTTPException(status_code=404, detail="Team not found") + + if team.is_default: + raise HTTPException(status_code=400, detail="Cannot delete the default team") + + if team.client_id and admin.role != "super_admin": + await check_team_admin(admin, team.client_id, session) + + # Remove all memberships first + result = await session.execute( + select(TeamMembershipModel).where(TeamMembershipModel.team_id == team_id) + ) + memberships = result.scalars().all() + for m in memberships: + await session.delete(m) + + await session.delete(team) + await session.commit() + return {"message": "Team deleted"} diff --git a/backend/api/v1/admin/users_router.py b/backend/api/v1/admin/users_router.py new file mode 100644 index 0000000..dc6a52a --- /dev/null +++ b/backend/api/v1/admin/users_router.py @@ -0,0 +1,112 @@ +"""Admin router for user management. Super Admin only.""" +from typing import List, Optional +import uuid + +from fastapi import APIRouter, Depends, HTTPException, Query +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.sql.user import UserModel +from services.database import get_async_session +from utils.auth_dependencies import require_super_admin + +USERS_ROUTER = APIRouter(prefix="/users", tags=["Admin - Users"]) + +VALID_ROLES = {"super_admin", "client_admin", "user"} + + +@USERS_ROUTER.get("", response_model=List[dict]) +async def list_users( + _: UserModel = Depends(require_super_admin), + is_active: Optional[bool] = Query(None), + role: Optional[str] = Query(None), + offset: int = Query(0, ge=0), + limit: int = Query(50, ge=1, le=200), + session: AsyncSession = Depends(get_async_session), +): + query = select(UserModel) + if is_active is not None: + query = query.where(UserModel.is_active == is_active) + if role: + query = query.where(UserModel.role == role) + query = query.order_by(UserModel.created_at.desc()).offset(offset).limit(limit) + + result = await session.execute(query) + users = result.scalars().all() + return [ + { + "id": str(u.id), + "email": u.email, + "display_name": u.display_name, + "role": u.role, + "is_active": u.is_active, + "last_login_at": u.last_login_at.isoformat() if u.last_login_at else None, + "created_at": u.created_at.isoformat() if u.created_at else None, + } + for u in users + ] + + +@USERS_ROUTER.get("/{user_id}", response_model=dict) +async def get_user( + user_id: uuid.UUID, + _: UserModel = Depends(require_super_admin), + session: AsyncSession = Depends(get_async_session), +): + user = await session.get(UserModel, user_id) + if not user: + raise HTTPException(status_code=404, detail="User not found") + return { + "id": str(user.id), + "email": user.email, + "display_name": user.display_name, + "role": user.role, + "is_active": user.is_active, + "last_login_at": user.last_login_at.isoformat() if user.last_login_at else None, + "created_at": user.created_at.isoformat() if user.created_at else None, + } + + +@USERS_ROUTER.put("/{user_id}/role") +async def update_user_role( + user_id: uuid.UUID, + role: str = Query(...), + admin: UserModel = Depends(require_super_admin), + session: AsyncSession = Depends(get_async_session), +): + if role not in VALID_ROLES: + raise HTTPException( + status_code=400, + detail=f"Invalid role. Must be one of: {', '.join(VALID_ROLES)}", + ) + + user = await session.get(UserModel, user_id) + if not user: + raise HTTPException(status_code=404, detail="User not found") + + if user.id == admin.id: + raise HTTPException(status_code=400, detail="Cannot change your own role") + + user.role = role + session.add(user) + await session.commit() + return {"message": "Role updated", "user_id": str(user.id), "role": role} + + +@USERS_ROUTER.delete("/{user_id}") +async def deactivate_user( + user_id: uuid.UUID, + admin: UserModel = Depends(require_super_admin), + session: AsyncSession = Depends(get_async_session), +): + user = await session.get(UserModel, user_id) + if not user: + raise HTTPException(status_code=404, detail="User not found") + + if user.id == admin.id: + raise HTTPException(status_code=400, detail="Cannot deactivate yourself") + + user.is_active = False + session.add(user) + await session.commit() + return {"message": "User deactivated", "user_id": str(user.id)} diff --git a/backend/api/v1/auth/__init__.py b/backend/api/v1/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/auth/router.py b/backend/api/v1/auth/router.py new file mode 100644 index 0000000..ed7acc4 --- /dev/null +++ b/backend/api/v1/auth/router.py @@ -0,0 +1,134 @@ +import uuid +from fastapi import APIRouter, Depends, HTTPException, Response, Request +from fastapi.responses import RedirectResponse, JSONResponse +from pydantic import BaseModel +from sqlalchemy.ext.asyncio import AsyncSession + +from services.database import get_async_session +from services.auth_service import AuthService + +AUTH_ROUTER = APIRouter(prefix="/api/v1/auth", tags=["Auth"]) + +auth_service = AuthService() + + +class DevLoginRequest(BaseModel): + email: str + password: str + + +@AUTH_ROUTER.get("/dev-status") +async def dev_status(): + """Check if dev auth mode is enabled.""" + return {"dev_mode": auth_service.is_dev_mode} + + +@AUTH_ROUTER.get("/login") +async def login(): + """Redirect to Azure AD login, or return dev mode info.""" + if auth_service.is_dev_mode: + return JSONResponse( + status_code=200, + content={ + "dev_mode": True, + "message": "Use POST /api/v1/auth/dev-login with email and password", + }, + ) + try: + url = auth_service.get_authorization_url() + return RedirectResponse(url=url) + except Exception as e: + raise HTTPException(status_code=500, detail=f"Failed to generate login URL: {e}") + + +@AUTH_ROUTER.get("/callback") +async def callback( + code: str = "", + error: str = "", + error_description: str = "", + session: AsyncSession = Depends(get_async_session), +): + """Azure AD OAuth callback.""" + if error: + raise HTTPException(status_code=401, detail=error_description or error) + + if not code: + raise HTTPException(status_code=400, detail="Missing authorization code") + + try: + result = await auth_service.exchange_code_for_token(code) + claims = result.get("id_token_claims", {}) + user = await auth_service.get_or_create_user(claims, session) + token = auth_service.create_session_jwt(user) + + response = RedirectResponse(url="/upload", status_code=302) + response.set_cookie( + key="session_token", + value=token, + httponly=True, + secure=False, # Set True in production with HTTPS + samesite="lax", + max_age=86400, # 24 hours + ) + return response + except ValueError as e: + raise HTTPException(status_code=401, detail=str(e)) + except Exception as e: + raise HTTPException(status_code=500, detail=f"Authentication failed: {e}") + + +@AUTH_ROUTER.post("/dev-login") +async def dev_login( + body: DevLoginRequest, + session: AsyncSession = Depends(get_async_session), +): + """Dev-mode login with email and password. Only available when Azure AD is not configured.""" + if not auth_service.is_dev_mode: + raise HTTPException(status_code=404, detail="Dev login not available") + + user = await auth_service.dev_login(body.email, body.password, session) + if not user: + raise HTTPException(status_code=401, detail="Invalid credentials") + + token = auth_service.create_session_jwt(user) + + response = JSONResponse( + content={ + "id": str(user.id), + "email": user.email, + "display_name": user.display_name, + "role": user.role, + } + ) + response.set_cookie( + key="session_token", + value=token, + httponly=True, + secure=False, + samesite="lax", + max_age=86400, + ) + return response + + +@AUTH_ROUTER.get("/me") +async def get_current_user_info(request: Request): + """Return current authenticated user info.""" + user = getattr(request.state, "user", None) + if not user: + raise HTTPException(status_code=401, detail="Not authenticated") + + return { + "id": str(user.id), + "email": user.email, + "displayName": user.display_name, + "role": user.role, + } + + +@AUTH_ROUTER.post("/logout") +async def logout(): + """Clear session cookie.""" + response = JSONResponse(content={"message": "Logged out"}) + response.delete_cookie("session_token") + return response diff --git a/backend/api/v1/mock/router.py b/backend/api/v1/mock/router.py new file mode 100644 index 0000000..b37b6e0 --- /dev/null +++ b/backend/api/v1/mock/router.py @@ -0,0 +1,34 @@ +import uuid +from fastapi import APIRouter +from models.api_error_model import APIErrorModel +from models.presentation_and_path import PresentationPathAndEditPath +from typing import List + +API_V1_MOCK_ROUTER = APIRouter(prefix="/api/v1/mock", tags=["Mock"]) + + +@API_V1_MOCK_ROUTER.get( + "/presentation-generation-completed", + response_model=List[PresentationPathAndEditPath], +) +async def mock_presentation_generation_completed(): + return [ + PresentationPathAndEditPath( + presentation_id=uuid.uuid4(), + path="/app_data/exports/test.pdf", + edit_path="/presentation?id=123", + ) + ] + + +@API_V1_MOCK_ROUTER.get( + "/presentation-generation-failed", + response_model=List[APIErrorModel], +) +async def mock_presentation_generation_completed(): + return [ + APIErrorModel( + status_code=500, + detail="Presentation generation failed", + ) + ] diff --git a/backend/api/v1/ppt/background_tasks.py b/backend/api/v1/ppt/background_tasks.py new file mode 100644 index 0000000..a271e98 --- /dev/null +++ b/backend/api/v1/ppt/background_tasks.py @@ -0,0 +1,73 @@ +from datetime import datetime +from fastapi import HTTPException +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +from models.ollama_model_status import OllamaModelStatus +from models.sql.ollama_pull_status import OllamaPullStatus +from services.database import async_session_maker +from utils.ollama import pull_ollama_model + + +async def pull_ollama_model_background_task(model: str): + saved_model_status = OllamaModelStatus( + name=model, + status="pulling", + done=False, + ) + log_event_count = 0 + + async with async_session_maker() as session: + try: + async for event in pull_ollama_model(model): + log_event_count += 1 + if log_event_count != 1 and log_event_count % 20 != 0: + continue + + if "completed" in event: + saved_model_status.downloaded = event["completed"] + + if not saved_model_status.size and "total" in event: + saved_model_status.size = event["total"] + + if "status" in event: + saved_model_status.status = event["status"] + + await upsert_ollama_pull_status(session, model, saved_model_status) + + except Exception as e: + saved_model_status.status = "error" + saved_model_status.done = True + await upsert_ollama_pull_status(session, model, saved_model_status) + raise HTTPException( + status_code=500, + detail=f"Failed to pull model: {e}", + ) + + saved_model_status.done = True + saved_model_status.status = "pulled" + saved_model_status.downloaded = saved_model_status.size + + await upsert_ollama_pull_status(session, model, saved_model_status) + + +async def upsert_ollama_pull_status( + session: AsyncSession, model: str, model_status: OllamaModelStatus +): + stmt = select(OllamaPullStatus).where(OllamaPullStatus.id == model) + result = await session.execute(stmt) + existing_record = result.scalar_one_or_none() + + if existing_record: + existing_record.status = model_status.model_dump(mode="json") + existing_record.last_updated = datetime.now() + else: + new_record = OllamaPullStatus( + id=model, + status=model_status.model_dump(mode="json"), + last_updated=datetime.now(), + ) + session.add(new_record) + + await session.commit() + await session.flush() diff --git a/backend/api/v1/ppt/endpoints/__init__.py b/backend/api/v1/ppt/endpoints/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/v1/ppt/endpoints/anthropic.py b/backend/api/v1/ppt/endpoints/anthropic.py new file mode 100644 index 0000000..e3e1d56 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/anthropic.py @@ -0,0 +1,16 @@ +from typing import Annotated, List +from fastapi import APIRouter, Body, HTTPException + +from utils.available_models import list_available_anthropic_models + +ANTHROPIC_ROUTER = APIRouter(prefix="/anthropic", tags=["Anthropic"]) + + +@ANTHROPIC_ROUTER.post("/models/available", response_model=List[str]) +async def get_available_models( + api_key: Annotated[str, Body(embed=True)], +): + try: + return await list_available_anthropic_models(api_key) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) diff --git a/backend/api/v1/ppt/endpoints/files.py b/backend/api/v1/ppt/endpoints/files.py new file mode 100644 index 0000000..5f7d88c --- /dev/null +++ b/backend/api/v1/ppt/endpoints/files.py @@ -0,0 +1,87 @@ +from http.client import HTTPException +import os +from typing import Annotated, List, Optional +from fastapi import APIRouter, Body, File, UploadFile + +from constants.documents import UPLOAD_ACCEPTED_FILE_TYPES +from models.decomposed_file_info import DecomposedFileInfo +from services.temp_file_service import TEMP_FILE_SERVICE +from services.documents_loader import DocumentsLoader +import uuid +from utils.validators import validate_files + +FILES_ROUTER = APIRouter(prefix="/files", tags=["Files"]) + + +@FILES_ROUTER.post("/upload", response_model=List[str]) +async def upload_files(files: Optional[List[UploadFile]]): + if not files: + raise HTTPException(400, "Documents are required") + + temp_dir = TEMP_FILE_SERVICE.create_temp_dir(str(uuid.uuid4())) + + validate_files(files, True, True, 100, UPLOAD_ACCEPTED_FILE_TYPES) + + temp_files: List[str] = [] + if files: + for each_file in files: + temp_path = TEMP_FILE_SERVICE.create_temp_file_path( + each_file.filename, temp_dir + ) + with open(temp_path, "wb") as f: + content = await each_file.read() + f.write(content) + + temp_files.append(temp_path) + + return temp_files + + +@FILES_ROUTER.post("/decompose", response_model=List[DecomposedFileInfo]) +async def decompose_files(file_paths: Annotated[List[str], Body(embed=True)]): + temp_dir = TEMP_FILE_SERVICE.create_temp_dir(str(uuid.uuid4())) + + txt_files = [] + other_files = [] + for file_path in file_paths: + if file_path.endswith(".txt"): + txt_files.append(file_path) + else: + other_files.append(file_path) + + documents_loader = DocumentsLoader(file_paths=other_files) + await documents_loader.load_documents(temp_dir) + parsed_documents = documents_loader.documents + + response = [] + for index, parsed_doc in enumerate(parsed_documents): + file_path = TEMP_FILE_SERVICE.create_temp_file_path( + f"{uuid.uuid4()}.txt", temp_dir + ) + parsed_doc = parsed_doc.replace("
", "\n") + with open(file_path, "w") as text_file: + text_file.write(parsed_doc) + response.append( + DecomposedFileInfo( + name=os.path.basename(other_files[index]), file_path=file_path + ) + ) + + # Return the txt documents as it is + for each_file in txt_files: + response.append( + DecomposedFileInfo(name=os.path.basename(each_file), file_path=each_file) + ) + + return response + + +@FILES_ROUTER.post("/update") +async def update_files( + file_path: Annotated[str, Body()], + file: Annotated[UploadFile, File()], +): + with open(file_path, "wb") as f: + f.write(await file.read()) + + return {"message": "File updated successfully"} diff --git a/backend/api/v1/ppt/endpoints/fonts.py b/backend/api/v1/ppt/endpoints/fonts.py new file mode 100644 index 0000000..ecf7ca8 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/fonts.py @@ -0,0 +1,290 @@ +import os +import uuid +import shutil +from pathlib import Path +from typing import List, Dict, Any, Optional +from fastapi import APIRouter, HTTPException, File, UploadFile +from pydantic import BaseModel +from utils.asset_directory_utils import get_app_data_directory_env +import uuid + +try: + from fontTools.ttLib import TTFont + from fontTools.ttLib.tables._n_a_m_e import table__n_a_m_e + FONTTOOLS_AVAILABLE = True +except ImportError: + FONTTOOLS_AVAILABLE = False + +FONTS_ROUTER = APIRouter(prefix="/fonts", tags=["fonts"]) + +# Supported font file extensions +SUPPORTED_FONT_EXTENSIONS = { + '.ttf': 'font/ttf', + '.otf': 'font/otf', + '.woff': 'font/woff', + '.woff2': 'font/woff2', + '.eot': 'application/vnd.ms-fontobject' +} + +class FontUploadResponse(BaseModel): + success: bool + font_name: str + font_url: str + font_path: str + message: Optional[str] = None + +class FontListResponse(BaseModel): + success: bool + fonts: List[dict] + message: Optional[str] = None + + +def get_fonts_directory() -> str: + """Get the fonts directory path, create if it doesn't exist""" + app_data_dir = get_app_data_directory_env() or "/tmp/presenton" + fonts_dir = os.path.join(app_data_dir, "fonts") + os.makedirs(fonts_dir, exist_ok=True) + return fonts_dir + + +def is_valid_font_file(file: UploadFile) -> bool: + """Validate font file by extension and MIME type""" + if not file.filename: + return False + + file_ext = os.path.splitext(file.filename)[1].lower() + if file_ext not in SUPPORTED_FONT_EXTENSIONS: + return False + + # Check MIME type + content_type = file.content_type or "" + valid_mime_types = [ + "font/ttf", "font/otf", "font/woff", "font/woff2", + "application/font-ttf", "application/font-otf", + "application/font-woff", "application/font-woff2", + "application/x-font-ttf", "application/x-font-otf", + "font/truetype", "font/opentype" + ] + + return content_type in valid_mime_types + + +def extract_font_name_from_file(file_path: str) -> str: + """Extract the actual font family name from font file metadata""" + if not FONTTOOLS_AVAILABLE: + # Fallback to filename parsing if fonttools not available + filename = os.path.basename(file_path) + base_name = os.path.splitext(filename)[0] + if '_' in filename and len(filename.split('_')[-1].split('.')[0]) == 8: + # Remove UUID part + parts = filename.split('_') + if len(parts) > 1: + return '_'.join(parts[:-1]) + return base_name + + try: + font = TTFont(file_path) + + # Try to get font family name from name table + if 'name' in font: + name_table = font['name'] + + # Preferred order: Family name (ID 1), then Full name (ID 4), then PostScript name (ID 6) + for name_id in [1, 4, 6]: + for record in name_table.names: + if record.nameID == name_id: + # Prefer English names + if record.langID == 0x409 or record.langID == 0: # English + font_name = record.toUnicode().strip() + if font_name: + font.close() + return font_name + + # If no English name found, use any available family name + for record in name_table.names: + if record.nameID == 1: # Family name + font_name = record.toUnicode().strip() + if font_name: + font.close() + return font_name + + font.close() + except Exception as e: + # If font parsing fails, fallback to filename + print(f"Error reading font metadata from {file_path}: {e}") + + # Fallback to filename parsing + filename = os.path.basename(file_path) + base_name = os.path.splitext(filename)[0] + if '_' in filename and len(filename.split('_')[-1].split('.')[0]) == 8: + # Remove UUID part + parts = filename.split('_') + if len(parts) > 1: + return '_'.join(parts[:-1]) + return base_name + + +@FONTS_ROUTER.post("/upload", response_model=FontUploadResponse) +async def upload_font( + font_file: UploadFile = File(..., description="Font file to upload (.ttf, .otf, .woff, .woff2, .eot)") +): + """ + Upload a font file and save it to the fonts directory. + + Args: + font_file: Uploaded font file + + Returns: + FontUploadResponse with font details and accessible URL + + Raises: + HTTPException: If file validation fails or upload error occurs + """ + try: + # Validate file + if not font_file.filename: + raise HTTPException( + status_code=400, + detail="No file name provided" + ) + + if not is_valid_font_file(font_file): + raise HTTPException( + status_code=400, + detail=f"Invalid font file. Supported formats: {', '.join(SUPPORTED_FONT_EXTENSIONS.keys())}" + ) + + # Generate unique filename to avoid conflicts + file_ext = os.path.splitext(font_file.filename)[1].lower() + base_name = os.path.splitext(font_file.filename)[0] + unique_filename = f"{base_name}_{str(uuid.uuid4())[:8]}{file_ext}" + + # Get fonts directory + fonts_dir = get_fonts_directory() + font_path = os.path.join(fonts_dir, unique_filename) + + # Save the uploaded file + with open(font_path, "wb") as buffer: + shutil.copyfileobj(font_file.file, buffer) + + # Generate accessible URL + font_url = f"/app_data/fonts/{unique_filename}" + + return FontUploadResponse( + success=True, + font_name=base_name, + font_url=font_url, + font_path=font_path, + message=f"Font '{base_name}' uploaded successfully" + ) + + except HTTPException: + # Re-raise HTTP exceptions as-is + raise + except Exception as e: + print(f"Error uploading font: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Error uploading font: {str(e)}" + ) + + +@FONTS_ROUTER.get("/list", response_model=FontListResponse) +async def list_fonts(): + """ + List all uploaded fonts with their accessible URLs. + + Returns: + FontListResponse with list of available fonts + """ + try: + fonts_dir = get_fonts_directory() + fonts = [] + + # Get all font files in the directory + if os.path.exists(fonts_dir): + for filename in os.listdir(fonts_dir): + file_path = os.path.join(fonts_dir, filename) + + if os.path.isfile(file_path): + file_ext = os.path.splitext(filename)[1].lower() + + if file_ext in SUPPORTED_FONT_EXTENSIONS: + # Get the real font name from file metadata + font_name = extract_font_name_from_file(file_path) + + # Extract original name (remove UUID suffix for display) + base_name = filename + if '_' in filename and len(filename.split('_')[-1].split('.')[0]) == 8: + # Remove UUID part for original_name display + parts = filename.split('_') + if len(parts) > 1: + base_name = '_'.join(parts[:-1]) + file_ext + + fonts.append({ + "filename": filename, + "font_name": font_name, # Real font family name from metadata + "original_name": base_name, + "font_url": f"/app_data/fonts/{filename}", + "font_type": SUPPORTED_FONT_EXTENSIONS.get(file_ext, 'unknown'), + "file_size": os.path.getsize(file_path) + }) + + return FontListResponse( + success=True, + fonts=fonts, + message=f"Found {len(fonts)} font files" + ) + + except Exception as e: + print(f"Error listing fonts: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Error listing fonts: {str(e)}" + ) + + +@FONTS_ROUTER.delete("/delete/{filename}") +async def delete_font(filename: str): + """ + Delete a font file from the fonts directory. + + Args: + filename: Name of the font file to delete + + Returns: + Success message + """ + try: + fonts_dir = get_fonts_directory() + font_path = os.path.join(fonts_dir, filename) + + if not os.path.exists(font_path): + raise HTTPException( + status_code=404, + detail=f"Font file '{filename}' not found" + ) + + # Validate it's actually a font file before deleting + file_ext = os.path.splitext(filename.lower())[1] + if file_ext not in SUPPORTED_FONT_EXTENSIONS: + raise HTTPException( + status_code=400, + detail="File is not a recognized font format" + ) + + os.remove(font_path) + + return { + "success": True, + "message": f"Font '{filename}' deleted successfully" + } + + except HTTPException: + raise + except Exception as e: + print(f"Error deleting font: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Error deleting font: {str(e)}" + ) \ No newline at end of file diff --git a/backend/api/v1/ppt/endpoints/google.py b/backend/api/v1/ppt/endpoints/google.py new file mode 100644 index 0000000..4c83627 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/google.py @@ -0,0 +1,14 @@ +from typing import Annotated, List +from fastapi import APIRouter, Body, HTTPException + +from utils.available_models import list_available_google_models + +GOOGLE_ROUTER = APIRouter(prefix="/google", tags=["Google"]) + + +@GOOGLE_ROUTER.post("/models/available", response_model=List[str]) +async def get_available_models(api_key: Annotated[str, Body(embed=True)]): + try: + return await list_available_google_models(api_key) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) diff --git a/backend/api/v1/ppt/endpoints/icons.py b/backend/api/v1/ppt/endpoints/icons.py new file mode 100644 index 0000000..5d71791 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/icons.py @@ -0,0 +1,10 @@ +from typing import List +from fastapi import APIRouter +from services.icon_finder_service import ICON_FINDER_SERVICE + +ICONS_ROUTER = APIRouter(prefix="/icons", tags=["Icons"]) + + +@ICONS_ROUTER.get("/search", response_model=List[str]) +async def search_icons(query: str, limit: int = 20): + return await ICON_FINDER_SERVICE.search_icons(query, limit) diff --git a/backend/api/v1/ppt/endpoints/images.py b/backend/api/v1/ppt/endpoints/images.py new file mode 100644 index 0000000..62731f5 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/images.py @@ -0,0 +1,105 @@ +from typing import List +from fastapi import APIRouter, Depends, File, UploadFile, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.image_prompt import ImagePrompt +from models.sql.image_asset import ImageAsset +from services.database import get_async_session +from services.image_generation_service import ImageGenerationService +from utils.asset_directory_utils import get_images_directory +import os +import uuid +from utils.file_utils import get_file_name_with_random_uuid + +IMAGES_ROUTER = APIRouter(prefix="/images", tags=["Images"]) + + +@IMAGES_ROUTER.get("/generate") +async def generate_image( + prompt: str, sql_session: AsyncSession = Depends(get_async_session) +): + images_directory = get_images_directory() + image_prompt = ImagePrompt(prompt=prompt) + image_generation_service = ImageGenerationService(images_directory) + + image = await image_generation_service.generate_image(image_prompt) + if not isinstance(image, ImageAsset): + return image + + sql_session.add(image) + await sql_session.commit() + + return image.path + + +@IMAGES_ROUTER.get("/generated", response_model=List[ImageAsset]) +async def get_generated_images(sql_session: AsyncSession = Depends(get_async_session)): + try: + images = await sql_session.scalars( + select(ImageAsset) + .where(ImageAsset.is_uploaded == False) + .order_by(ImageAsset.created_at.desc()) + ) + return images + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Failed to retrieve generated images: {str(e)}" + ) + + +@IMAGES_ROUTER.post("/upload") +async def upload_image( + file: UploadFile = File(...), sql_session: AsyncSession = Depends(get_async_session) +): + try: + new_filename = get_file_name_with_random_uuid(file) + image_path = os.path.join( + get_images_directory(), os.path.basename(new_filename) + ) + + with open(image_path, "wb") as f: + f.write(await file.read()) + + image_asset = ImageAsset(path=image_path, is_uploaded=True) + + sql_session.add(image_asset) + await sql_session.commit() + + return image_asset + except Exception as e: + raise HTTPException(status_code=500, detail=f"Failed to upload image: {str(e)}") + + +@IMAGES_ROUTER.get("/uploaded", response_model=List[ImageAsset]) +async def get_uploaded_images(sql_session: AsyncSession = Depends(get_async_session)): + try: + images = await sql_session.scalars( + select(ImageAsset) + .where(ImageAsset.is_uploaded == True) + .order_by(ImageAsset.created_at.desc()) + ) + return images + except Exception as e: + raise HTTPException( + status_code=500, detail=f"Failed to retrieve uploaded images: {str(e)}" + ) + + +@IMAGES_ROUTER.delete("/{id}", status_code=204) +async def delete_uploaded_image_by_id( + id: uuid.UUID, sql_session: AsyncSession = Depends(get_async_session) +): + try: + # Fetch the asset to get its actual file path + image = await sql_session.get(ImageAsset, id) + if not image: + raise HTTPException(status_code=404, detail="Image not found") + + os.remove(image.path) + + await sql_session.delete(image) + await sql_session.commit() + + except Exception as e: + raise HTTPException(status_code=500, detail=f"Failed to delete image: {str(e)}") diff --git a/backend/api/v1/ppt/endpoints/layouts.py b/backend/api/v1/ppt/endpoints/layouts.py new file mode 100644 index 0000000..6e1051b --- /dev/null +++ b/backend/api/v1/ppt/endpoints/layouts.py @@ -0,0 +1,27 @@ +from fastapi import APIRouter, HTTPException +import aiohttp +from typing import List, Any +from utils.get_layout_by_name import get_layout_by_name +from models.presentation_layout import PresentationLayoutModel + +LAYOUTS_ROUTER = APIRouter(prefix="/layouts", tags=["Layouts"]) + +@LAYOUTS_ROUTER.get("/", summary="Get available layouts") +async def get_layouts(): + url = "http://localhost:3000/api/layouts" # Adjust port if needed + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + if response.status != 200: + error_text = await response.text() + raise HTTPException( + status_code=response.status, + detail=f"Failed to fetch layouts: {error_text}" + ) + layouts_json = await response.json() + # Optionally, parse into a Pydantic model if you have one matching the structure + return layouts_json + + +@LAYOUTS_ROUTER.get("/{layout_name}", summary="Get layout details by ID") +async def get_layout_detail(layout_name: str) -> PresentationLayoutModel: + return await get_layout_by_name(layout_name) diff --git a/backend/api/v1/ppt/endpoints/ollama.py b/backend/api/v1/ppt/endpoints/ollama.py new file mode 100644 index 0000000..4350583 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/ollama.py @@ -0,0 +1,85 @@ +from datetime import datetime, timedelta +import json +from typing import List +from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession + +from api.v1.ppt.background_tasks import pull_ollama_model_background_task +from constants.supported_ollama_models import SUPPORTED_OLLAMA_MODELS +from models.ollama_model_metadata import OllamaModelMetadata +from models.ollama_model_status import OllamaModelStatus +from models.sql.ollama_pull_status import OllamaPullStatus +from services.database import get_async_session +from utils.ollama import list_pulled_ollama_models + +OLLAMA_ROUTER = APIRouter(prefix="/ollama", tags=["Ollama"]) + + +@OLLAMA_ROUTER.get("/models/supported", response_model=List[OllamaModelMetadata]) +def get_supported_models(): + return SUPPORTED_OLLAMA_MODELS.values() + + +@OLLAMA_ROUTER.get("/models/available", response_model=List[OllamaModelStatus]) +async def get_available_models(): + return await list_pulled_ollama_models() + + +@OLLAMA_ROUTER.get("/model/pull", response_model=OllamaModelStatus) +async def pull_model( + model: str, + background_tasks: BackgroundTasks, + session: AsyncSession = Depends(get_async_session), +): + + if model not in SUPPORTED_OLLAMA_MODELS: + raise HTTPException( + status_code=400, + detail=f"Model {model} is not supported", + ) + + try: + pulled_models = await list_pulled_ollama_models() + filtered_models = [ + pulled_model for pulled_model in pulled_models if pulled_model.name == model + ] + if filtered_models: + return filtered_models[0] + except HTTPException as e: + raise e + except Exception as e: + raise HTTPException( + status_code=500, + detail=f"Failed to check pulled models: {e}", + ) + + saved_pull_status = None + saved_model_status = None + try: + saved_pull_status = await session.get(OllamaPullStatus, model) + saved_model_status = saved_pull_status.status + except Exception as e: + pass + + # If the model is being pulled, return the model + if saved_model_status: + # If the model is being pulled, return the model + # ? If the model status is pulled in database but was not found while listing pulled models, + # ? it means the model was deleted and we need to pull it again + if ( + saved_model_status["status"] == "error" + or saved_model_status["status"] == "pulled" + or saved_pull_status.last_updated < (datetime.now() - timedelta(seconds=10)) + ): + await session.delete(saved_pull_status) + else: + return saved_model_status + + # If the model is not being pulled, pull the model + background_tasks.add_task(pull_ollama_model_background_task, model) + + return OllamaModelStatus( + name=model, + status="pulling", + done=False, + ) diff --git a/backend/api/v1/ppt/endpoints/openai.py b/backend/api/v1/ppt/endpoints/openai.py new file mode 100644 index 0000000..8e2f00e --- /dev/null +++ b/backend/api/v1/ppt/endpoints/openai.py @@ -0,0 +1,17 @@ +from typing import Annotated, List +from fastapi import APIRouter, Body, HTTPException + +from utils.available_models import list_available_openai_compatible_models + +OPENAI_ROUTER = APIRouter(prefix="/openai", tags=["OpenAI"]) + + +@OPENAI_ROUTER.post("/models/available", response_model=List[str]) +async def get_available_models( + url: Annotated[str, Body()], + api_key: Annotated[str, Body()], +): + try: + return await list_available_openai_compatible_models(url, api_key) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) diff --git a/backend/api/v1/ppt/endpoints/outlines.py b/backend/api/v1/ppt/endpoints/outlines.py new file mode 100644 index 0000000..764f5b2 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/outlines.py @@ -0,0 +1,113 @@ +import asyncio +import json +import math +import traceback +import uuid +import dirtyjson +from fastapi import APIRouter, Depends, HTTPException +from fastapi.responses import StreamingResponse +from sqlalchemy.ext.asyncio import AsyncSession + +from models.presentation_outline_model import PresentationOutlineModel +from models.sql.presentation import PresentationModel +from models.sse_response import ( + SSECompleteResponse, + SSEErrorResponse, + SSEResponse, + SSEStatusResponse, +) +from services.temp_file_service import TEMP_FILE_SERVICE +from services.database import get_async_session +from services.documents_loader import DocumentsLoader +from utils.llm_calls.generate_presentation_outlines import generate_ppt_outline +from utils.ppt_utils import get_presentation_title_from_outlines + +OUTLINES_ROUTER = APIRouter(prefix="/outlines", tags=["Outlines"]) + + +@OUTLINES_ROUTER.get("/stream/{id}") +async def stream_outlines( + id: uuid.UUID, sql_session: AsyncSession = Depends(get_async_session) +): + presentation = await sql_session.get(PresentationModel, id) + + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + temp_dir = TEMP_FILE_SERVICE.create_temp_dir() + + async def inner(): + yield SSEStatusResponse( + status="Generating presentation outlines..." + ).to_string() + + additional_context = "" + if presentation.file_paths: + documents_loader = DocumentsLoader(file_paths=presentation.file_paths) + await documents_loader.load_documents(temp_dir) + documents = documents_loader.documents + if documents: + additional_context = "\n\n".join(documents) + + presentation_outlines_text = "" + + n_slides_to_generate = presentation.n_slides + if presentation.include_table_of_contents: + needed_toc_count = math.ceil((presentation.n_slides - 1) / 10) + n_slides_to_generate -= math.ceil( + (presentation.n_slides - needed_toc_count) / 10 + ) + + async for chunk in generate_ppt_outline( + presentation.content, + n_slides_to_generate, + presentation.language, + additional_context, + presentation.tone, + presentation.verbosity, + presentation.instructions, + presentation.include_title_slide, + presentation.web_search, + ): + # Give control to the event loop + await asyncio.sleep(0) + + if isinstance(chunk, HTTPException): + yield SSEErrorResponse(detail=chunk.detail).to_string() + return + + yield SSEResponse( + event="response", + data=json.dumps({"type": "chunk", "chunk": chunk}), + ).to_string() + + presentation_outlines_text += chunk + + try: + presentation_outlines_json = dict( + dirtyjson.loads(presentation_outlines_text) + ) + except Exception as e: + traceback.print_exc() + yield SSEErrorResponse( + detail=f"Failed to generate presentation outlines. Please try again. {str(e)}", + ).to_string() + return + + presentation_outlines = PresentationOutlineModel(**presentation_outlines_json) + + presentation_outlines.slides = presentation_outlines.slides[ + :n_slides_to_generate + ] + + presentation.outlines = presentation_outlines.model_dump() + presentation.title = get_presentation_title_from_outlines(presentation_outlines) + + sql_session.add(presentation) + await sql_session.commit() + + yield SSECompleteResponse( + key="presentation", value=presentation.model_dump(mode="json") + ).to_string() + + return StreamingResponse(inner(), media_type="text/event-stream") diff --git a/backend/api/v1/ppt/endpoints/pdf_slides.py b/backend/api/v1/ppt/endpoints/pdf_slides.py new file mode 100644 index 0000000..606cb12 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/pdf_slides.py @@ -0,0 +1,116 @@ +import os +import shutil +import tempfile +import subprocess +from typing import List, Optional +from fastapi import APIRouter, UploadFile, File, HTTPException +from pydantic import BaseModel + +from services.documents_loader import DocumentsLoader +from utils.asset_directory_utils import get_images_directory +import uuid +from constants.documents import PDF_MIME_TYPES + + +PDF_SLIDES_ROUTER = APIRouter(prefix="/pdf-slides", tags=["PDF Slides"]) + + +class PdfSlideData(BaseModel): + slide_number: int + screenshot_url: str + + +class PdfSlidesResponse(BaseModel): + success: bool + slides: List[PdfSlideData] + total_slides: int + + +@PDF_SLIDES_ROUTER.post("/process", response_model=PdfSlidesResponse) +async def process_pdf_slides( + pdf_file: UploadFile = File(..., description="PDF file to process") +): + """ + Process a PDF file to extract slide screenshots. + + This endpoint: + 1. Validates the uploaded PDF file + 2. Uses ImageMagick to convert PDF pages to PNG images + 3. Returns screenshot URLs for each slide/page + + Note: Font installation is not needed since PDFs already have fonts embedded. + """ + + # Validate PDF file + if pdf_file.content_type not in PDF_MIME_TYPES: + raise HTTPException( + status_code=400, + detail=f"Invalid file type. Expected PDF file, got {pdf_file.content_type}", + ) + # Enforce 100MB size limit + if ( + hasattr(pdf_file, "size") + and pdf_file.size + and pdf_file.size > (100 * 1024 * 1024) + ): + raise HTTPException( + status_code=400, + detail="PDF file exceeded max upload size of 100 MB", + ) + + # Create temporary directory for processing + with tempfile.TemporaryDirectory() as temp_dir: + try: + # Save uploaded PDF file + pdf_path = os.path.join(temp_dir, "presentation.pdf") + with open(pdf_path, "wb") as f: + pdf_content = await pdf_file.read() + f.write(pdf_content) + + # Generate screenshots from PDF using ImageMagick + screenshot_paths = await DocumentsLoader.get_page_images_from_pdf_async( + pdf_path, temp_dir + ) + print(f"Generated {len(screenshot_paths)} PDF screenshots") + + # Move screenshots to images directory and generate URLs + images_dir = get_images_directory() + presentation_id = uuid.uuid4() + presentation_images_dir = os.path.join(images_dir, str(presentation_id)) + os.makedirs(presentation_images_dir, exist_ok=True) + + slides_data = [] + + for i, screenshot_path in enumerate(screenshot_paths, 1): + # Move screenshot to permanent location + screenshot_filename = f"slide_{i}.png" + permanent_screenshot_path = os.path.join( + presentation_images_dir, screenshot_filename + ) + + if ( + os.path.exists(screenshot_path) + and os.path.getsize(screenshot_path) > 0 + ): + # Use shutil.copy2 instead of os.rename to handle cross-device moves + shutil.copy2(screenshot_path, permanent_screenshot_path) + screenshot_url = ( + f"/app_data/images/{presentation_id}/{screenshot_filename}" + ) + else: + # Fallback if screenshot generation failed or file is empty placeholder + screenshot_url = "/static/images/placeholder.jpg" + + slides_data.append( + PdfSlideData(slide_number=i, screenshot_url=screenshot_url) + ) + + return PdfSlidesResponse( + success=True, slides=slides_data, total_slides=len(slides_data) + ) + + except Exception as e: + print(f"Error processing PDF slides: {str(e)}") + raise HTTPException( + status_code=500, detail=f"Failed to process PDF: {str(e)}" + ) diff --git a/backend/api/v1/ppt/endpoints/pptx_slides.py b/backend/api/v1/ppt/endpoints/pptx_slides.py new file mode 100644 index 0000000..b4c4aca --- /dev/null +++ b/backend/api/v1/ppt/endpoints/pptx_slides.py @@ -0,0 +1,613 @@ +import os +import shutil +import zipfile +import tempfile +import subprocess +import uuid +from typing import List, Optional, Dict +from fastapi import APIRouter, UploadFile, File, HTTPException +from pydantic import BaseModel +import aiohttp +import asyncio +import xml.etree.ElementTree as ET +import re + +from services.documents_loader import DocumentsLoader +from utils.asset_directory_utils import get_images_directory +import uuid +from constants.documents import POWERPOINT_TYPES + + +PPTX_SLIDES_ROUTER = APIRouter(prefix="/pptx-slides", tags=["PPTX Slides"]) + + +class SlideData(BaseModel): + slide_number: int + screenshot_url: str + xml_content: str + normalized_fonts: List[str] + + +class FontAnalysisResult(BaseModel): + internally_supported_fonts: List[ + Dict[str, str] + ] # [{"name": "Open Sans", "google_fonts_url": "..."}] + not_supported_fonts: List[str] # ["Custom Font Name"] + + +class PptxSlidesResponse(BaseModel): + success: bool + slides: List[SlideData] + total_slides: int + fonts: Optional[FontAnalysisResult] = None + + +# NEW: Fonts-only router and response for PPTX +class PptxFontsResponse(BaseModel): + success: bool + fonts: FontAnalysisResult + + +PPTX_FONTS_ROUTER = APIRouter(prefix="/pptx-fonts", tags=["PPTX Fonts"]) + +# NEW: Normalize font family names by removing style/weight/stretch descriptors and splitting camel case +_STYLE_TOKENS = { + # styles + "italic", + "italics", + "ital", + "oblique", + "roman", + # combined style shortcuts + "bolditalic", + "bolditalics", + # weights + "thin", + "hairline", + "extralight", + "ultralight", + "light", + "demilight", + "semilight", + "book", + "regular", + "normal", + "medium", + "semibold", + "demibold", + "bold", + "extrabold", + "ultrabold", + "black", + "extrablack", + "ultrablack", + "heavy", + # width/stretch + "narrow", + "condensed", + "semicondensed", + "extracondensed", + "ultracondensed", + "expanded", + "semiexpanded", + "extraexpanded", + "ultraexpanded", +} +# Modifiers commonly used with style tokens +_STYLE_MODIFIERS = {"semi", "demi", "extra", "ultra"} + + +def _insert_spaces_in_camel_case(value: str) -> str: + # Insert space before capital letters preceded by lowercase or digits (e.g., MontserratBold -> Montserrat Bold) + value = re.sub(r"(?<=[a-z0-9])([A-Z])", r" \1", value) + # Handle sequences like BoldItalic -> Bold Italic + value = re.sub(r"([A-Z]+)([A-Z][a-z])", r"\1 \2", value) + return value + + +def normalize_font_family_name(raw_name: str) -> str: + if not raw_name: + return raw_name + # Replace separators with spaces + name = raw_name.replace("_", " ").replace("-", " ") + # Insert spaces in camel case + name = _insert_spaces_in_camel_case(name) + # Collapse multiple spaces + name = re.sub(r"\s+", " ", name).strip() + # Lowercase helper for matching but keep original casing for output + lower_name = name.lower() + # Quick cut: if the full string ends with a pure style suffix, trim it + for style in sorted(_STYLE_TOKENS, key=len, reverse=True): + if lower_name.endswith(" " + style): + name = name[: -(len(style) + 1)] + lower_name = lower_name[: -(len(style) + 1)] + break + # Tokenize + tokens_original = name.split(" ") + tokens_filtered: List[str] = [] + for index, tok in enumerate(tokens_original): + lower_tok = tok.lower() + # Always keep the first token to avoid stripping families like "Black Ops One" + if index == 0: + tokens_filtered.append(tok) + continue + # Drop style tokens and standalone modifiers + if lower_tok in _STYLE_TOKENS or lower_tok in _STYLE_MODIFIERS: + continue + tokens_filtered.append(tok) + # If everything except first token was dropped and first token is a style token (unlikely), fallback to original + if not tokens_filtered: + tokens_filtered = tokens_original + normalized = " ".join(tokens_filtered).strip() + # Final cleanup of leftover multiple spaces + normalized = re.sub(r"\s+", " ", normalized) + return normalized + + +def extract_fonts_from_oxml(xml_content: str) -> List[str]: + """ + Extract font names from OXML content. + + Args: + xml_content: OXML content as string + + Returns: + List of unique font names found in the OXML + """ + fonts = set() + + try: + # Parse the XML content + root = ET.fromstring(xml_content) + + # Define namespaces commonly used in OXML + namespaces = { + "a": "http://schemas.openxmlformats.org/drawingml/2006/main", + "p": "http://schemas.openxmlformats.org/presentationml/2006/main", + "r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + } + + # Search for font references in various OXML elements + # Look for latin fonts + for font_elem in root.findall(".//a:latin", namespaces): + if "typeface" in font_elem.attrib: + fonts.add(font_elem.attrib["typeface"]) + + # Look for east asian fonts + for font_elem in root.findall(".//a:ea", namespaces): + if "typeface" in font_elem.attrib: + fonts.add(font_elem.attrib["typeface"]) + + # Look for complex script fonts + for font_elem in root.findall(".//a:cs", namespaces): + if "typeface" in font_elem.attrib: + fonts.add(font_elem.attrib["typeface"]) + + # Look for font references in theme elements + for font_elem in root.findall(".//a:font", namespaces): + if "typeface" in font_elem.attrib: + fonts.add(font_elem.attrib["typeface"]) + + # Look for rPr (run properties) font references + for rpr_elem in root.findall(".//a:rPr", namespaces): + for font_elem in rpr_elem.findall(".//a:latin", namespaces): + if "typeface" in font_elem.attrib: + fonts.add(font_elem.attrib["typeface"]) + + # Also search without namespace prefix for compatibility + for font_elem in root.findall(".//latin"): + if "typeface" in font_elem.attrib: + fonts.add(font_elem.attrib["typeface"]) + + # Regex fallback for fonts that might be missed + font_pattern = r'typeface="([^"]+)"' + regex_fonts = re.findall(font_pattern, xml_content) + fonts.update(regex_fonts) + + # Filter out system fonts and empty values + system_fonts = {"+mn-lt", "+mj-lt", "+mn-ea", "+mj-ea", "+mn-cs", "+mj-cs", ""} + fonts = {font for font in fonts if font not in system_fonts and font.strip()} + + return list(fonts) + + except Exception as e: + print(f"Error extracting fonts from OXML: {e}") + return [] + + +async def check_google_font_availability(font_name: str) -> bool: + """ + Check if a font is available in Google Fonts. + + Args: + font_name: Name of the font to check + + Returns: + True if font is available in Google Fonts, False otherwise + """ + try: + formatted_name = font_name.replace(" ", "+") + url = f"https://fonts.googleapis.com/css2?family={formatted_name}&display=swap" + + async with aiohttp.ClientSession() as session: + async with session.head( + url, timeout=aiohttp.ClientTimeout(total=10) + ) as response: + return response.status == 200 + + except Exception as e: + print(f"Error checking Google Font availability for {font_name}: {e}") + return False + + +async def analyze_fonts_in_all_slides(slide_xmls: List[str]) -> FontAnalysisResult: + """ + Analyze fonts across all slides and determine Google Fonts availability. + + Args: + slide_xmls: List of OXML content strings from all slides + + Returns: + FontAnalysisResult with supported and unsupported fonts + """ + # Extract fonts from all slides + raw_fonts = set() + for xml_content in slide_xmls: + slide_fonts = extract_fonts_from_oxml(xml_content) + raw_fonts.update(slide_fonts) + + # Normalize to root families (e.g., "Montserrat Italic" -> "Montserrat") + normalized_fonts = {normalize_font_family_name(f) for f in raw_fonts} + # Remove empties if any + normalized_fonts = {f for f in normalized_fonts if f} + + if not normalized_fonts: + return FontAnalysisResult(internally_supported_fonts=[], not_supported_fonts=[]) + + # Check each normalized font's availability in Google Fonts concurrently + tasks = [check_google_font_availability(font) for font in normalized_fonts] + results = await asyncio.gather(*tasks) + + internally_supported_fonts = [] + not_supported_fonts = [] + + for font, is_available in zip(normalized_fonts, results): + if is_available: + formatted_name = font.replace(" ", "+") + google_fonts_url = f"https://fonts.googleapis.com/css2?family={formatted_name}&display=swap" + internally_supported_fonts.append( + {"name": font, "google_fonts_url": google_fonts_url} + ) + else: + not_supported_fonts.append(font) + + return FontAnalysisResult( + internally_supported_fonts=internally_supported_fonts, not_supported_fonts=[] + ) + + +@PPTX_SLIDES_ROUTER.post("/process", response_model=PptxSlidesResponse) +async def process_pptx_slides( + pptx_file: UploadFile = File(..., description="PPTX file to process"), + fonts: Optional[List[UploadFile]] = File(None, description="Optional font files"), +): + """ + Process a PPTX file to extract slide screenshots and XML content. + + This endpoint: + 1. Validates the uploaded PPTX file + 2. Installs any provided font files + 3. Unzips the PPTX to extract slide XMLs + 4. Uses LibreOffice to generate slide screenshots + 5. Returns both screenshot URLs and XML content for each slide + """ + + # Validate PPTX file + if pptx_file.content_type not in POWERPOINT_TYPES: + raise HTTPException( + status_code=400, + detail=f"Invalid file type. Expected PPTX file, got {pptx_file.content_type}", + ) + # Enforce 100MB size limit + if ( + hasattr(pptx_file, "size") + and pptx_file.size + and pptx_file.size > (100 * 1024 * 1024) + ): + raise HTTPException( + status_code=400, + detail="PPTX file exceeded max upload size of 100 MB", + ) + + # Create temporary directory for processing + with tempfile.TemporaryDirectory() as temp_dir: + if True: + # Save uploaded PPTX file + pptx_path = os.path.join(temp_dir, "presentation.pptx") + with open(pptx_path, "wb") as f: + pptx_content = await pptx_file.read() + f.write(pptx_content) + + # Install fonts if provided + if fonts: + await _install_fonts(fonts, temp_dir) + + # Extract slide XMLs from PPTX + slide_xmls = _extract_slide_xmls(pptx_path, temp_dir) + + # Convert PPTX to PDF + pdf_path = await _convert_pptx_to_pdf(pptx_path, temp_dir) + + # Generate screenshots using LibreOffice + screenshot_paths = await DocumentsLoader.get_page_images_from_pdf_async( + pdf_path, temp_dir + ) + print(f"Screenshot paths: {screenshot_paths}") + + # Analyze fonts across all slides + font_analysis = await analyze_fonts_in_all_slides(slide_xmls) + print( + f"Font analysis completed: {len(font_analysis.internally_supported_fonts)} supported, {len(font_analysis.not_supported_fonts)} not supported" + ) + + # Move screenshots to images directory and generate URLs + images_dir = get_images_directory() + presentation_id = uuid.uuid4() + presentation_images_dir = os.path.join(images_dir, str(presentation_id)) + os.makedirs(presentation_images_dir, exist_ok=True) + + slides_data = [] + + for i, (xml_content, screenshot_path) in enumerate( + zip(slide_xmls, screenshot_paths), 1 + ): + # Move screenshot to permanent location + screenshot_filename = f"slide_{i}.png" + permanent_screenshot_path = os.path.join( + presentation_images_dir, screenshot_filename + ) + + if ( + os.path.exists(screenshot_path) + and os.path.getsize(screenshot_path) > 0 + ): + # Use shutil.copy2 instead of os.rename to handle cross-device moves + shutil.copy2(screenshot_path, permanent_screenshot_path) + screenshot_url = ( + f"/app_data/images/{presentation_id}/{screenshot_filename}" + ) + else: + # Fallback if screenshot generation failed or file is empty placeholder + screenshot_url = "/static/images/placeholder.jpg" + + # Compute normalized fonts for this slide + raw_slide_fonts = extract_fonts_from_oxml(xml_content) + normalized_fonts = sorted( + {normalize_font_family_name(f) for f in raw_slide_fonts if f} + ) + + slides_data.append( + SlideData( + slide_number=i, + screenshot_url=screenshot_url, + xml_content=xml_content, + normalized_fonts=normalized_fonts, + ) + ) + + return PptxSlidesResponse( + success=True, + slides=slides_data, + total_slides=len(slides_data), + fonts=font_analysis, + ) + + +# NEW: Fonts-only endpoint leveraging the same font extraction/analysis +@PPTX_FONTS_ROUTER.post("/process", response_model=PptxFontsResponse) +async def process_pptx_fonts( + pptx_file: UploadFile = File(..., description="PPTX file to analyze fonts from") +): + """ + Analyze a PPTX file and return only the fonts used in the document. + + Uses the exact same font extraction and analysis utilities as the /pptx-slides endpoint. + """ + # Validate PPTX file + if pptx_file.content_type not in POWERPOINT_TYPES: + raise HTTPException( + status_code=400, + detail=f"Invalid file type. Expected PPTX file, got {pptx_file.content_type}", + ) + + # Create temporary directory for processing + with tempfile.TemporaryDirectory() as temp_dir: + # Save uploaded PPTX file + pptx_path = os.path.join(temp_dir, "presentation.pptx") + with open(pptx_path, "wb") as f: + pptx_content = await pptx_file.read() + f.write(pptx_content) + + # Extract slide XMLs from PPTX + slide_xmls = _extract_slide_xmls(pptx_path, temp_dir) + + # Analyze fonts across all slides (same logic as in /pptx-slides) + font_analysis = await analyze_fonts_in_all_slides(slide_xmls) + + return PptxFontsResponse( + success=True, + fonts=font_analysis, + ) + + +def _create_font_alias_config(raw_fonts: List[str]) -> str: + """Create a temporary fontconfig configuration that aliases variant family names to normalized root families. + Returns the path to the config file. + """ + # Build mapping from raw -> normalized where different + mappings: Dict[str, str] = {} + for f in raw_fonts: + normalized = normalize_font_family_name(f) + if normalized and normalized != f: + mappings[f] = normalized + # Create config only if we have mappings + fd, fonts_conf_path = tempfile.mkstemp(prefix="fonts_alias_", suffix=".conf") + os.close(fd) + with open(fonts_conf_path, "w", encoding="utf-8") as cfg: + cfg.write( + """ + + + /etc/fonts/fonts.conf +""" + ) + for src, dst in mappings.items(): + cfg.write( + f""" + + + {src} + + + {dst} + + +""" + ) + cfg.write("\n\n") + return fonts_conf_path + + +async def _install_fonts(fonts: List[UploadFile], temp_dir: str) -> None: + """Install provided font files to the system.""" + fonts_dir = os.path.join(temp_dir, "fonts") + os.makedirs(fonts_dir, exist_ok=True) + + for font_file in fonts: + # Save font file + font_path = os.path.join(fonts_dir, font_file.filename) + with open(font_path, "wb") as f: + font_content = await font_file.read() + f.write(font_content) + + # Install font (copy to system fonts directory) + try: + subprocess.run( + ["cp", font_path, "/usr/share/fonts/truetype/"], + check=True, + capture_output=True, + ) + except subprocess.CalledProcessError as e: + print(f"Warning: Failed to install font {font_file.filename}: {e}") + + # Refresh font cache + try: + subprocess.run(["fc-cache", "-f", "-v"], check=True, capture_output=True) + except subprocess.CalledProcessError as e: + print(f"Warning: Failed to refresh font cache: {e}") + + +def _extract_slide_xmls(pptx_path: str, temp_dir: str) -> List[str]: + """Extract slide XML content from PPTX file.""" + slide_xmls = [] + extract_dir = os.path.join(temp_dir, "pptx_extract") + + try: + # Unzip PPTX file + with zipfile.ZipFile(pptx_path, "r") as zip_ref: + zip_ref.extractall(extract_dir) + + # Look for slides in ppt/slides/ directory + slides_dir = os.path.join(extract_dir, "ppt", "slides") + + if not os.path.exists(slides_dir): + raise Exception("No slides directory found in PPTX file") + + # Get all slide XML files and sort them numerically + slide_files = [ + f + for f in os.listdir(slides_dir) + if f.startswith("slide") and f.endswith(".xml") + ] + slide_files.sort(key=lambda x: int(x.replace("slide", "").replace(".xml", ""))) + + # Read XML content from each slide + for slide_file in slide_files: + slide_path = os.path.join(slides_dir, slide_file) + with open(slide_path, "r", encoding="utf-8") as f: + slide_xmls.append(f.read()) + + return slide_xmls + + except Exception as e: + raise Exception(f"Failed to extract slide XMLs: {str(e)}") + + +async def _convert_pptx_to_pdf(pptx_path: str, temp_dir: str) -> str: + """Generate PNG screenshots of PPTX slides using LibreOffice + ImageMagick.""" + screenshots_dir = os.path.join(temp_dir, "screenshots") + os.makedirs(screenshots_dir, exist_ok=True) + + try: + # First, get the number of slides by extracting XMLs + slide_xmls = _extract_slide_xmls(pptx_path, temp_dir) + slide_count = len(slide_xmls) + + # Build font alias config to force variant families to resolve to normalized root families + raw_fonts: List[str] = [] + for xml in slide_xmls: + raw_fonts.extend(extract_fonts_from_oxml(xml)) + raw_fonts = list({f for f in raw_fonts if f}) + fonts_conf_path = _create_font_alias_config(raw_fonts) + env = os.environ.copy() + env["FONTCONFIG_FILE"] = fonts_conf_path + + print(f"Found {slide_count} slides in presentation") + + # Step 1: Convert PPTX to PDF using LibreOffice + print("Starting LibreOffice PDF conversion...") + pdf_filename = "temp_presentation.pdf" + pdf_path = os.path.join(screenshots_dir, pdf_filename) + + try: + result = subprocess.run( + [ + "libreoffice", + "--headless", + "--convert-to", + "pdf", + "--outdir", + screenshots_dir, + pptx_path, + ], + check=True, + capture_output=True, + text=True, + timeout=500, + env=env, + ) + + print(f"LibreOffice PDF conversion output: {result.stdout}") + if result.stderr: + print(f"LibreOffice PDF conversion warnings: {result.stderr}") + except subprocess.TimeoutExpired: + raise Exception("LibreOffice PDF conversion timed out after 120 seconds") + except subprocess.CalledProcessError as e: + error_msg = e.stderr if e.stderr else str(e) + raise Exception(f"LibreOffice PDF conversion failed: {error_msg}") + + # Find the generated PDF file (LibreOffice uses original filename) + pdf_files = [f for f in os.listdir(screenshots_dir) if f.endswith(".pdf")] + if not pdf_files: + raise Exception("LibreOffice failed to generate PDF file") + + actual_pdf_path = os.path.join(screenshots_dir, pdf_files[0]) + print(f"Generated PDF: {actual_pdf_path}") + return actual_pdf_path + + except Exception as e: + # Re-raise the specific exceptions we've already handled + if "timed out" in str(e) or "failed:" in str(e): + raise + # Handle any other unexpected exceptions + raise Exception(f"Screenshot generation failed: {str(e)}") diff --git a/backend/api/v1/ppt/endpoints/presentation.py b/backend/api/v1/ppt/endpoints/presentation.py new file mode 100644 index 0000000..f5f030f --- /dev/null +++ b/backend/api/v1/ppt/endpoints/presentation.py @@ -0,0 +1,973 @@ +import asyncio +from datetime import datetime +import json +import math +import os +import random +import traceback +from typing import Annotated, List, Literal, Optional, Tuple +import dirtyjson +from fastapi import APIRouter, BackgroundTasks, Body, Depends, HTTPException, Path +from fastapi.responses import StreamingResponse +from sqlalchemy import delete +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select +from constants.presentation import DEFAULT_TEMPLATES +from enums.webhook_event import WebhookEvent +from models.api_error_model import APIErrorModel +from models.generate_presentation_request import GeneratePresentationRequest +from models.presentation_and_path import PresentationPathAndEditPath +from models.presentation_from_template import EditPresentationRequest +from models.presentation_outline_model import ( + PresentationOutlineModel, + SlideOutlineModel, +) +from enums.tone import Tone +from enums.verbosity import Verbosity +from models.pptx_models import PptxPresentationModel +from models.presentation_layout import PresentationLayoutModel +from models.presentation_structure_model import PresentationStructureModel +from models.presentation_with_slides import ( + PresentationWithSlides, +) +from models.sql.template import TemplateModel + +from services.documents_loader import DocumentsLoader +from services.webhook_service import WebhookService +from utils.get_layout_by_name import get_layout_by_name +from services.image_generation_service import ImageGenerationService +from utils.dict_utils import deep_update +from utils.export_utils import export_presentation +from utils.llm_calls.generate_presentation_outlines import generate_ppt_outline +from models.sql.slide import SlideModel +from models.sse_response import SSECompleteResponse, SSEErrorResponse, SSEResponse + +from services.database import get_async_session +from services.temp_file_service import TEMP_FILE_SERVICE +from services.concurrent_service import CONCURRENT_SERVICE +from models.sql.presentation import PresentationModel +from models.sql.user import UserModel +from utils.auth_dependencies import get_current_user +from services.pptx_presentation_creator import PptxPresentationCreator +from models.sql.async_presentation_generation_status import ( + AsyncPresentationGenerationTaskModel, +) +from utils.asset_directory_utils import get_exports_directory, get_images_directory +from utils.llm_calls.generate_presentation_structure import ( + generate_presentation_structure, +) +from utils.llm_calls.generate_slide_content import ( + get_slide_content_from_type_and_outline, +) +from utils.ppt_utils import ( + get_presentation_title_from_outlines, + select_toc_or_list_slide_layout_index, +) +from utils.process_slides import ( + process_slide_add_placeholder_assets, + process_slide_and_fetch_assets, +) +import uuid + + +PRESENTATION_ROUTER = APIRouter(prefix="/presentation", tags=["Presentation"]) + + +@PRESENTATION_ROUTER.get("/all", response_model=List[PresentationWithSlides]) +async def get_all_presentations( + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentations_with_slides = [] + + query = ( + select(PresentationModel, SlideModel) + .join( + SlideModel, + (SlideModel.presentation == PresentationModel.id) & (SlideModel.index == 0), + ) + .order_by(PresentationModel.created_at.desc()) + ) + + results = await sql_session.execute(query) + rows = results.all() + presentations_with_slides = [ + PresentationWithSlides( + **presentation.model_dump(), + slides=[first_slide], + ) + for presentation, first_slide in rows + ] + return presentations_with_slides + + +@PRESENTATION_ROUTER.get("/{id}", response_model=PresentationWithSlides) +async def get_presentation( + id: uuid.UUID, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, id) + if not presentation: + raise HTTPException(404, "Presentation not found") + slides = await sql_session.scalars( + select(SlideModel) + .where(SlideModel.presentation == id) + .order_by(SlideModel.index) + ) + return PresentationWithSlides( + **presentation.model_dump(), + slides=slides, + ) + + +@PRESENTATION_ROUTER.delete("/{id}", status_code=204) +async def delete_presentation( + id: uuid.UUID, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, id) + if not presentation: + raise HTTPException(404, "Presentation not found") + + await sql_session.delete(presentation) + await sql_session.commit() + + +@PRESENTATION_ROUTER.post("/create", response_model=PresentationModel) +async def create_presentation( + content: Annotated[str, Body()], + n_slides: Annotated[int, Body()], + language: Annotated[str, Body()], + file_paths: Annotated[Optional[List[str]], Body()] = None, + tone: Annotated[Tone, Body()] = Tone.DEFAULT, + verbosity: Annotated[Verbosity, Body()] = Verbosity.STANDARD, + instructions: Annotated[Optional[str], Body()] = None, + include_table_of_contents: Annotated[bool, Body()] = False, + include_title_slide: Annotated[bool, Body()] = True, + web_search: Annotated[bool, Body()] = False, + current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + + if include_table_of_contents and n_slides < 3: + raise HTTPException( + status_code=400, + detail="Number of slides cannot be less than 3 if table of contents is included", + ) + + presentation_id = uuid.uuid4() + + presentation = PresentationModel( + id=presentation_id, + content=content, + n_slides=n_slides, + language=language, + file_paths=file_paths, + tone=tone.value, + verbosity=verbosity.value, + instructions=instructions, + include_table_of_contents=include_table_of_contents, + include_title_slide=include_title_slide, + web_search=web_search, + owner_id=current_user.id, + ) + + sql_session.add(presentation) + await sql_session.commit() + + return presentation + + +@PRESENTATION_ROUTER.post("/prepare", response_model=PresentationModel) +async def prepare_presentation( + presentation_id: Annotated[uuid.UUID, Body()], + outlines: Annotated[List[SlideOutlineModel], Body()], + layout: Annotated[PresentationLayoutModel, Body()], + title: Annotated[Optional[str], Body()] = None, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + if not outlines: + raise HTTPException(status_code=400, detail="Outlines are required") + + presentation = await sql_session.get(PresentationModel, presentation_id) + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + presentation_outline_model = PresentationOutlineModel(slides=outlines) + + total_slide_layouts = len(layout.slides) + total_outlines = len(outlines) + + if layout.ordered: + presentation_structure = layout.to_presentation_structure() + else: + presentation_structure: PresentationStructureModel = ( + await generate_presentation_structure( + presentation_outline=presentation_outline_model, + presentation_layout=layout, + instructions=presentation.instructions, + ) + ) + + presentation_structure.slides = presentation_structure.slides[: len(outlines)] + for index in range(total_outlines): + random_slide_index = random.randint(0, total_slide_layouts - 1) + if index >= total_outlines: + presentation_structure.slides.append(random_slide_index) + continue + if presentation_structure.slides[index] >= total_slide_layouts: + presentation_structure.slides[index] = random_slide_index + + if presentation.include_table_of_contents: + n_toc_slides = presentation.n_slides - total_outlines + toc_slide_layout_index = select_toc_or_list_slide_layout_index(layout) + if toc_slide_layout_index != -1: + outline_index = 1 if presentation.include_title_slide else 0 + for i in range(n_toc_slides): + outlines_to = outline_index + 10 + if total_outlines == outlines_to: + outlines_to -= 1 + + presentation_structure.slides.insert( + i + 1 if presentation.include_title_slide else i, + toc_slide_layout_index, + ) + toc_outline = "Table of Contents\n\n" + + for outline in presentation_outline_model.slides[ + outline_index:outlines_to + ]: + page_number = ( + outline_index - i + n_toc_slides + 1 + if presentation.include_title_slide + else outline_index - i + n_toc_slides + ) + toc_outline += f"Slide page number: {page_number}\n Slide Content: {outline.content[:100]}\n\n" + outline_index += 1 + + outline_index += 1 + + presentation_outline_model.slides.insert( + i + 1 if presentation.include_title_slide else i, + SlideOutlineModel( + content=toc_outline, + ), + ) + + sql_session.add(presentation) + presentation.outlines = presentation_outline_model.model_dump(mode="json") + presentation.title = title or presentation.title + presentation.set_layout(layout) + presentation.set_structure(presentation_structure) + await sql_session.commit() + + return presentation + + +@PRESENTATION_ROUTER.get("/stream/{id}", response_model=PresentationWithSlides) +async def stream_presentation( + id: uuid.UUID, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, id) + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + if not presentation.structure: + raise HTTPException( + status_code=400, + detail="Presentation not prepared for stream", + ) + if not presentation.outlines: + raise HTTPException( + status_code=400, + detail="Outlines can not be empty", + ) + + image_generation_service = ImageGenerationService(get_images_directory()) + + async def inner(): + structure = presentation.get_structure() + layout = presentation.get_layout() + outline = presentation.get_presentation_outline() + + # These tasks will be gathered and awaited after all slides are generated + async_assets_generation_tasks = [] + + slides: List[SlideModel] = [] + yield SSEResponse( + event="response", + data=json.dumps({"type": "chunk", "chunk": '{ "slides": [ '}), + ).to_string() + for i, slide_layout_index in enumerate(structure.slides): + slide_layout = layout.slides[slide_layout_index] + + try: + slide_content = await get_slide_content_from_type_and_outline( + slide_layout, + outline.slides[i], + presentation.language, + presentation.tone, + presentation.verbosity, + presentation.instructions, + ) + except HTTPException as e: + yield SSEErrorResponse(detail=e.detail).to_string() + return + + slide = SlideModel( + presentation=id, + layout_group=layout.name, + layout=slide_layout.id, + index=i, + speaker_note=slide_content.get("__speaker_note__", ""), + content=slide_content, + ) + slides.append(slide) + + # This will mutate slide and add placeholder assets + process_slide_add_placeholder_assets(slide) + + # This will mutate slide + async_assets_generation_tasks.append( + process_slide_and_fetch_assets(image_generation_service, slide) + ) + + yield SSEResponse( + event="response", + data=json.dumps({"type": "chunk", "chunk": slide.model_dump_json()}), + ).to_string() + + yield SSEResponse( + event="response", + data=json.dumps({"type": "chunk", "chunk": " ] }"}), + ).to_string() + + generated_assets_lists = await asyncio.gather(*async_assets_generation_tasks) + generated_assets = [] + for assets_list in generated_assets_lists: + generated_assets.extend(assets_list) + + # Moved this here to make sure new slides are generated before deleting the old ones + await sql_session.execute( + delete(SlideModel).where(SlideModel.presentation == id) + ) + await sql_session.commit() + + sql_session.add(presentation) + sql_session.add_all(slides) + sql_session.add_all(generated_assets) + await sql_session.commit() + + response = PresentationWithSlides( + **presentation.model_dump(), + slides=slides, + ) + + yield SSECompleteResponse( + key="presentation", + value=response.model_dump(mode="json"), + ).to_string() + + return StreamingResponse(inner(), media_type="text/event-stream") + + +@PRESENTATION_ROUTER.patch("/update", response_model=PresentationWithSlides) +async def update_presentation( + id: Annotated[uuid.UUID, Body()], + n_slides: Annotated[Optional[int], Body()] = None, + title: Annotated[Optional[str], Body()] = None, + slides: Annotated[Optional[List[SlideModel]], Body()] = None, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, id) + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + presentation_update_dict = {} + if n_slides: + presentation_update_dict["n_slides"] = n_slides + if title: + presentation_update_dict["title"] = title + + if n_slides or title: + presentation.sqlmodel_update(presentation_update_dict) + + if slides: + # Just to make sure id is UUID + for slide in slides: + slide.presentation = uuid.UUID(slide.presentation) + slide.id = uuid.UUID(slide.id) + + await sql_session.execute( + delete(SlideModel).where(SlideModel.presentation == presentation.id) + ) + sql_session.add_all(slides) + + await sql_session.commit() + + return PresentationWithSlides( + **presentation.model_dump(), + slides=slides or [], + ) + + +@PRESENTATION_ROUTER.post("/export/pptx", response_model=str) +async def export_presentation_as_pptx( + pptx_model: Annotated[PptxPresentationModel, Body()], + _current_user: UserModel = Depends(get_current_user), +): + temp_dir = TEMP_FILE_SERVICE.create_temp_dir() + + pptx_creator = PptxPresentationCreator(pptx_model, temp_dir) + await pptx_creator.create_ppt() + + export_directory = get_exports_directory() + pptx_path = os.path.join( + export_directory, f"{pptx_model.name or uuid.uuid4()}.pptx" + ) + pptx_creator.save(pptx_path) + + return pptx_path + + +@PRESENTATION_ROUTER.post("/export", response_model=PresentationPathAndEditPath) +async def export_presentation_as_pptx_or_pdf( + id: Annotated[uuid.UUID, Body(description="Presentation ID to export")], + export_as: Annotated[ + Literal["pptx", "pdf"], Body(description="Format to export the presentation as") + ] = "pptx", + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, id) + + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + presentation_and_path = await export_presentation( + id, + presentation.title or str(uuid.uuid4()), + export_as, + ) + + return PresentationPathAndEditPath( + **presentation_and_path.model_dump(), + edit_path=f"/presentation?id={id}", + ) + + +async def check_if_api_request_is_valid( + request: GeneratePresentationRequest, + sql_session: AsyncSession = Depends(get_async_session), +) -> Tuple[uuid.UUID,]: + presentation_id = uuid.uuid4() + print(f"Presentation ID: {presentation_id}") + + # Making sure either content, slides markdown or files is provided + if not (request.content or request.slides_markdown or request.files): + raise HTTPException( + status_code=400, + detail="Either content or slides markdown or files is required to generate presentation", + ) + + # Making sure number of slides is greater than 0 + if request.n_slides <= 0: + raise HTTPException( + status_code=400, + detail="Number of slides must be greater than 0", + ) + + # Checking if template is valid + if request.template not in DEFAULT_TEMPLATES: + request.template = request.template.lower() + if not request.template.startswith("custom-"): + raise HTTPException( + status_code=400, + detail="Template not found. Please use a valid template.", + ) + template_id = request.template.replace("custom-", "") + try: + template = await sql_session.get(TemplateModel, uuid.UUID(template_id)) + if not template: + raise Exception() + except Exception: + raise HTTPException( + status_code=400, + detail="Template not found. Please use a valid template.", + ) + + return (presentation_id,) + + +async def generate_presentation_handler( + request: GeneratePresentationRequest, + presentation_id: uuid.UUID, + async_status: Optional[AsyncPresentationGenerationTaskModel], + sql_session: AsyncSession = Depends(get_async_session), +): + try: + using_slides_markdown = False + + if request.slides_markdown: + using_slides_markdown = True + request.n_slides = len(request.slides_markdown) + + if not using_slides_markdown: + additional_context = "" + + # Updating async status + if async_status: + async_status.message = "Generating presentation outlines" + async_status.updated_at = datetime.now() + sql_session.add(async_status) + await sql_session.commit() + + if request.files: + documents_loader = DocumentsLoader(file_paths=request.files) + await documents_loader.load_documents() + documents = documents_loader.documents + if documents: + additional_context = "\n\n".join(documents) + + # Finding number of slides to generate by considering table of contents + n_slides_to_generate = request.n_slides + if request.include_table_of_contents: + needed_toc_count = math.ceil( + ( + (request.n_slides - 1) + if request.include_title_slide + else request.n_slides + ) + / 10 + ) + n_slides_to_generate -= math.ceil( + (request.n_slides - needed_toc_count) / 10 + ) + + presentation_outlines_text = "" + async for chunk in generate_ppt_outline( + request.content, + n_slides_to_generate, + request.language, + additional_context, + request.tone.value, + request.verbosity.value, + request.instructions, + request.include_title_slide, + request.web_search, + ): + + if isinstance(chunk, HTTPException): + raise chunk + + presentation_outlines_text += chunk + + try: + presentation_outlines_json = dict( + dirtyjson.loads(presentation_outlines_text) + ) + except Exception: + traceback.print_exc() + raise HTTPException( + status_code=400, + detail="Failed to generate presentation outlines. Please try again.", + ) + presentation_outlines = PresentationOutlineModel( + **presentation_outlines_json + ) + total_outlines = n_slides_to_generate + + else: + # Setting outlines to slides markdown + presentation_outlines = PresentationOutlineModel( + slides=[ + SlideOutlineModel(content=slide) + for slide in request.slides_markdown + ] + ) + total_outlines = len(request.slides_markdown) + + # Updating async status + if async_status: + async_status.message = "Selecting layout for each slide" + async_status.updated_at = datetime.now() + sql_session.add(async_status) + await sql_session.commit() + + print("-" * 40) + print(f"Generated {total_outlines} outlines for the presentation") + + # Parse Layouts + layout_model = await get_layout_by_name(request.template) + total_slide_layouts = len(layout_model.slides) + + # Generate Structure + if layout_model.ordered: + presentation_structure = layout_model.to_presentation_structure() + else: + presentation_structure: PresentationStructureModel = ( + await generate_presentation_structure( + presentation_outlines, + layout_model, + request.instructions, + using_slides_markdown, + ) + ) + + presentation_structure.slides = presentation_structure.slides[:total_outlines] + for index in range(total_outlines): + random_slide_index = random.randint(0, total_slide_layouts - 1) + if index >= total_outlines: + presentation_structure.slides.append(random_slide_index) + continue + if presentation_structure.slides[index] >= total_slide_layouts: + presentation_structure.slides[index] = random_slide_index + + # Injecting table of contents to the presentation structure and outlines + if request.include_table_of_contents and not using_slides_markdown: + n_toc_slides = request.n_slides - total_outlines + toc_slide_layout_index = select_toc_or_list_slide_layout_index(layout_model) + if toc_slide_layout_index != -1: + outline_index = 1 if request.include_title_slide else 0 + for i in range(n_toc_slides): + outlines_to = outline_index + 10 + if total_outlines == outlines_to: + outlines_to -= 1 + + presentation_structure.slides.insert( + i + 1 if request.include_title_slide else i, + toc_slide_layout_index, + ) + toc_outline = "Table of Contents\n\n" + + for outline in presentation_outlines.slides[ + outline_index:outlines_to + ]: + page_number = ( + outline_index - i + n_toc_slides + 1 + if request.include_title_slide + else outline_index - i + n_toc_slides + ) + toc_outline += f"Slide page number: {page_number}\n Slide Content: {outline.content[:100]}\n\n" + outline_index += 1 + + outline_index += 1 + + presentation_outlines.slides.insert( + i + 1 if request.include_title_slide else i, + SlideOutlineModel( + content=toc_outline, + ), + ) + + # Create PresentationModel + presentation = PresentationModel( + id=presentation_id, + content=request.content, + n_slides=request.n_slides, + language=request.language, + title=get_presentation_title_from_outlines(presentation_outlines), + outlines=presentation_outlines.model_dump(), + layout=layout_model.model_dump(), + structure=presentation_structure.model_dump(), + tone=request.tone.value, + verbosity=request.verbosity.value, + instructions=request.instructions, + ) + + # Updating async status + if async_status: + async_status.message = "Generating slides" + async_status.updated_at = datetime.now() + sql_session.add(async_status) + await sql_session.commit() + + image_generation_service = ImageGenerationService(get_images_directory()) + async_assets_generation_tasks = [] + + # 7. Generate slide content concurrently (batched), then build slides and fetch assets + slides: List[SlideModel] = [] + + slide_layout_indices = presentation_structure.slides + slide_layouts = [layout_model.slides[idx] for idx in slide_layout_indices] + + # Schedule slide content generation and asset fetching in batches of 10 + batch_size = 10 + for start in range(0, len(slide_layouts), batch_size): + end = min(start + batch_size, len(slide_layouts)) + + print(f"Generating slides from {start} to {end}") + + # Generate contents for this batch concurrently + content_tasks = [ + get_slide_content_from_type_and_outline( + slide_layouts[i], + presentation_outlines.slides[i], + request.language, + request.tone.value, + request.verbosity.value, + request.instructions, + ) + for i in range(start, end) + ] + batch_contents: List[dict] = await asyncio.gather(*content_tasks) + + # Build slides for this batch + batch_slides: List[SlideModel] = [] + for offset, slide_content in enumerate(batch_contents): + i = start + offset + slide_layout = slide_layouts[i] + slide = SlideModel( + presentation=presentation_id, + layout_group=layout_model.name, + layout=slide_layout.id, + index=i, + speaker_note=slide_content.get("__speaker_note__"), + content=slide_content, + ) + slides.append(slide) + batch_slides.append(slide) + + # Start asset fetch tasks for just-generated slides so they run while next batch is processed + asset_tasks = [ + process_slide_and_fetch_assets(image_generation_service, slide) + for slide in batch_slides + ] + async_assets_generation_tasks.extend(asset_tasks) + + if async_status: + async_status.message = "Fetching assets for slides" + async_status.updated_at = datetime.now() + sql_session.add(async_status) + await sql_session.commit() + + # Run all asset tasks concurrently while batches may still be generating content + generated_assets_list = await asyncio.gather(*async_assets_generation_tasks) + generated_assets = [] + for assets_list in generated_assets_list: + generated_assets.extend(assets_list) + + # 8. Save PresentationModel and Slides + sql_session.add(presentation) + sql_session.add_all(slides) + sql_session.add_all(generated_assets) + await sql_session.commit() + + if async_status: + async_status.message = "Exporting presentation" + async_status.updated_at = datetime.now() + sql_session.add(async_status) + + # 9. Export + presentation_and_path = await export_presentation( + presentation_id, presentation.title or str(uuid.uuid4()), request.export_as + ) + + response = PresentationPathAndEditPath( + **presentation_and_path.model_dump(), + edit_path=f"/presentation?id={presentation_id}", + ) + + if async_status: + async_status.message = "Presentation generation completed" + async_status.status = "completed" + async_status.data = response.model_dump(mode="json") + async_status.updated_at = datetime.now() + sql_session.add(async_status) + await sql_session.commit() + + # Triggering webhook on success + CONCURRENT_SERVICE.run_task( + None, + WebhookService.send_webhook, + WebhookEvent.PRESENTATION_GENERATION_COMPLETED, + response.model_dump(mode="json"), + ) + + return response + + except Exception as e: + if not isinstance(e, HTTPException): + traceback.print_exc() + e = HTTPException(status_code=500, detail="Presentation generation failed") + + api_error_model = APIErrorModel.from_exception(e) + + # Triggering webhook on failure + CONCURRENT_SERVICE.run_task( + None, + WebhookService.send_webhook, + WebhookEvent.PRESENTATION_GENERATION_FAILED, + api_error_model.model_dump(mode="json"), + ) + + if async_status: + async_status.status = "error" + async_status.message = "Presentation generation failed" + async_status.updated_at = datetime.now() + async_status.error = api_error_model.model_dump(mode="json") + sql_session.add(async_status) + await sql_session.commit() + + else: + raise e + + +@PRESENTATION_ROUTER.post("/generate", response_model=PresentationPathAndEditPath) +async def generate_presentation_sync( + request: GeneratePresentationRequest, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + try: + (presentation_id,) = await check_if_api_request_is_valid(request, sql_session) + return await generate_presentation_handler( + request, presentation_id, None, sql_session + ) + except Exception: + traceback.print_exc() + raise HTTPException(status_code=500, detail="Presentation generation failed") + + +@PRESENTATION_ROUTER.post( + "/generate/async", response_model=AsyncPresentationGenerationTaskModel +) +async def generate_presentation_async( + request: GeneratePresentationRequest, + background_tasks: BackgroundTasks, + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + try: + (presentation_id,) = await check_if_api_request_is_valid(request, sql_session) + + async_status = AsyncPresentationGenerationTaskModel( + status="pending", + message="Queued for generation", + data=None, + ) + sql_session.add(async_status) + await sql_session.commit() + + background_tasks.add_task( + generate_presentation_handler, + request, + presentation_id, + async_status=async_status, + sql_session=sql_session, + ) + return async_status + + except Exception as e: + if not isinstance(e, HTTPException): + print(e) + e = HTTPException(status_code=500, detail="Presentation generation failed") + + raise e + + +@PRESENTATION_ROUTER.get( + "/status/{id}", response_model=AsyncPresentationGenerationTaskModel +) +async def check_async_presentation_generation_status( + id: str = Path(description="ID of the presentation generation task"), + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + status = await sql_session.get(AsyncPresentationGenerationTaskModel, id) + if not status: + raise HTTPException( + status_code=404, detail="No presentation generation task found" + ) + return status + + +@PRESENTATION_ROUTER.post("/edit", response_model=PresentationPathAndEditPath) +async def edit_presentation_with_new_content( + data: Annotated[EditPresentationRequest, Body()], + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, data.presentation_id) + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + slides = await sql_session.scalars( + select(SlideModel).where(SlideModel.presentation == data.presentation_id) + ) + + new_slides = [] + slides_to_delete = [] + for each_slide in slides: + updated_content = None + new_slide_data = list( + filter(lambda x: x.index == each_slide.index, data.slides) + ) + if new_slide_data: + updated_content = deep_update(each_slide.content, new_slide_data[0].content) + new_slides.append( + each_slide.get_new_slide(presentation.id, updated_content) + ) + slides_to_delete.append(each_slide.id) + + await sql_session.execute( + delete(SlideModel).where(SlideModel.id.in_(slides_to_delete)) + ) + + sql_session.add_all(new_slides) + await sql_session.commit() + + presentation_and_path = await export_presentation( + presentation.id, presentation.title or str(uuid.uuid4()), data.export_as + ) + + return PresentationPathAndEditPath( + **presentation_and_path.model_dump(), + edit_path=f"/presentation?id={presentation.id}", + ) + + +@PRESENTATION_ROUTER.post("/derive", response_model=PresentationPathAndEditPath) +async def derive_presentation_from_existing_one( + data: Annotated[EditPresentationRequest, Body()], + _current_user: UserModel = Depends(get_current_user), + sql_session: AsyncSession = Depends(get_async_session), +): + presentation = await sql_session.get(PresentationModel, data.presentation_id) + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + slides = await sql_session.scalars( + select(SlideModel).where(SlideModel.presentation == data.presentation_id) + ) + + new_presentation = presentation.get_new_presentation() + new_slides = [] + for each_slide in slides: + updated_content = None + new_slide_data = list( + filter(lambda x: x.index == each_slide.index, data.slides) + ) + if new_slide_data: + updated_content = deep_update(each_slide.content, new_slide_data[0].content) + new_slides.append( + each_slide.get_new_slide(new_presentation.id, updated_content) + ) + + sql_session.add(new_presentation) + sql_session.add_all(new_slides) + await sql_session.commit() + + presentation_and_path = await export_presentation( + new_presentation.id, new_presentation.title or str(uuid.uuid4()), data.export_as + ) + + return PresentationPathAndEditPath( + **presentation_and_path.model_dump(), + edit_path=f"/presentation?id={new_presentation.id}", + ) diff --git a/backend/api/v1/ppt/endpoints/prompts.py b/backend/api/v1/ppt/endpoints/prompts.py new file mode 100644 index 0000000..8cdb64c --- /dev/null +++ b/backend/api/v1/ppt/endpoints/prompts.py @@ -0,0 +1,241 @@ +GENERATE_HTML_SYSTEM_PROMPT = """ +You need to generate html and tailwind code for given presentation slide image. Generated code will be used as template for different content. You need to think through each design elements and then decide where each element should go. +Follow these rules strictly: +- Make sure the design from html and tailwind is exact to the slide. +- Make sure all components are in their own place. +- Make sure size of elements are exact. Check sizes of images and other elements from OXML and convert them to pixels. +- Make sure all components should be noted of and should be added as it is. +- Image's and icons's size and position should be added exactly as it is. +- Read through the OXML data of slide and then match exact position ans size of elements. Make sure to convert between dimension and pixels. +- Make sure the vertical and horizonal spacing between elements are same as in the image. Try to get spacing from the OXML document as well. Make sure no elements overflows because of high spacing. +- Do not use absolute position unless absolutely necessary. Use flex, grid and spacing to properly arrange components. +- First, layout everything using flex or grid. Try to fit all the components using this layout. Finally, if you cannot layout any element without flex and grid, then only use absolute to place the element. +- Analyze each text's available space and it's design, and give minimum characters to fill in the text for the space and context and maximum that the space can handle. Be conservative with how many characters text space can handle. Make sure no text overflows and decide as to not disrupt the slide. Do this for every text. +- Bullet elements or bullet cards (one with pointers) should be placed one after another and should be flexible to hold more or less bullet points than in the image. Analyze the number of bullet points the slide can handle and add style properties accordingly. Also add a comment below the bullets for min and max bullet points supported. Make sure the number you quote should fit in the available space. Don't be too ambitious. +- For each text add font size and font family as tailwind property. Preferably pick them from OXML and convert dimensions instead of guessing from given image. +- Make sure that no elements overflow or exceed slide bounding in any way. +- Properly export shapes as exact SVG. +- Add relevant font in tailwind to all texts. +- Wrap the output code inside these classes: \"relative w-full rounded-sm max-w-[1280px] shadow-lg max-h-[720px] aspect-video bg-white relative z-20 mx-auto overflow-hidden\". +- For image everywhere use https://images.pexels.com/photos/31527637/pexels-photo-31527637.jpeg +- Image should never be inside of a SVG. +- Replace brand icons with a circle of same size with "i" between. Generic icons like "email", "call", etc should remain same. +- If there is a box/card enclosing a text, make it grow as well when the text grows, so that the text does not overflow the box/card. +- Give out only HTML and Tailwind code. No other texts or explanations. +- Do not give entire HTML structure with head, body, etc. Just give the respective HTML and Tailwind code inside div with above classes. +- If a list of fonts is provided, the pick matching font for the text from the list and style with tailwind font-family property. Use following format: font-["font-name"] +""" + +HTML_TO_REACT_SYSTEM_PROMPT = """ +Convert given static HTML and Tailwind slide to a TSX React component so that it can be dynamically populated. Follow these rules strictly while converting: + +1) Required imports, a zod schema and HTML layout has to be generated. +2) Schema will populate the layout so make sure schema has fields for all text, images and icons in the layout. +3) For similar components in the layouts (eg, team members), they should be represented by array of such components in the schema. +4) For image and icons icons should be a different schema with two dunder fields for prompt and url separately. +5) Default value for schema fields should be populated with the respective static value in HTML input. +6) In schema max and min value for characters in string and items in array should be specified as per the given image of the slide. You should accurately evaluate the maximum and minimum possible characters respective fields can handle visually through the image. ALso give out maximum number of words it can handle in the meta. +7) For image and icons schema should be compulsorily declared with two dunder fields for prompt and url separately. +8) Component name at the end should always yo 'dynamicSlideLayout'. +9) **Import or export statements should not be present in the output.** + - Don't give "import {React} from 'react'" + - Don't give "import {z} from 'zod'" +10) Always use double quotes for strings. +11) Layout Id, layout name and layout description should be declared and should describe the structure of the layout not its purpose. Do not describe numbers of any items in the layout. + -layoutDescription should not have any purpose for elements in it, so use '...cards' instead of '...goal cards' and '...bullet points' instead of '...solution bullet points'. + -layoutDescription should not have words like 'goals', 'solutions', 'problems' in it. + -layoutName constant should be same as the component name in the layout. + -Layout Id examples: header-description-bullet-points-slide, header-description-image-slide + -Layout Name examples: HeaderDescriptionBulletPointsLayout, HeaderDescriptionImageLayout + -Layout Description examples: A slide with a header, description, and bullet points and A slide with a header, description, and image +12. Only give Code and nothing else. No other text or comments. +13. Do not parse the slideData inside dynamicSlideLayout, just use it as it is. Do not use statements like `Schema.parse() ` anywhere. Instead directly use the data without validating or parsing. +14. Always complete the reference, do not give "slideData .? .cards" instead give "slideData?.cards". +15. Do not add anything other than code. Do not add "use client", "json", "typescript", "javascript" and other prefix or suffix, just give out code exactly formatted like example. +16. In schema, give default for all fields irrespective of their types, give defualt values for array and objects as well. +17. For charts use recharts.js library and follow these rules strictly: + - Do not import rechart, it will already be imported. + - There should support for multiple chart types including bar, line, pie and donut in the same size as given. + - Use an attribute in the schema to select between chart types. + - All data should be properly represented in schema. +18. For diagrams use mermaid with appropriate placeholder which can render any daigram. Schema should have a field for code. Render in the placeholder properly. +19. Don't add style attribute in the schema. Colors, font sizes, and all other style attributes should be added directly as tailwind classes. +For example: +Input: +

Effects of Global Warming

global warming effects on earth

Global warming triggers a cascade of effects on our planet. These changes impact everything from our oceans to our ecosystems.

sea level rising icon

Rising Sea Levels

Rising sea levels threaten coastal communities and ecosystems due to melting glaciers and thermal expansion.

heatwave icon

Intense Heatwaves

Heatwaves are becoming more frequent and intense, posing significant risks to human health and agriculture.

precipitation changes icon

Changes in Precipitation

Altered precipitation patterns lead to increased droughts in some regions and severe flooding in others, affecting water resources.

+Output: +const ImageSchema = z.object({ + __image_url__: z.url().meta({ + description: "URL to image", + }), + __image_prompt__: z.string().meta({ + description: "Prompt used to generate the image. Max 30 words", + }).min(10).max(50), +}) + +const IconSchema = z.object({ + __icon_url__: z.string().meta({ + description: "URL to icon", + }), + __icon_query__: z.string().meta({ + description: "Query used to search the icon. Max 3 words", + }).min(5).max(20), +}) +const layoutId = "bullet-with-icons-slide" +const layoutName = "Bullet with Icons" +const layoutDescription = "A bullets style slide with main content, supporting image, and bullet points with icons and descriptions." + +const Schema = z.object({ + title: z.string().min(3).max(40).default("Problem").meta({ + description: "Main title of the slide. Max 5 words", + }), + description: z.string().max(150).default("Businesses face challenges with outdated technology and rising costs, limiting efficiency and growth in competitive markets.").meta({ + description: "Main description text explaining the problem or topic. Max 30 words", + }), + image: ImageSchema.default({ + __image_url__: 'https://images.unsplash.com/photo-1552664730-d307ca884978?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80', + __image_prompt__: "Business people analyzing documents and charts in office" + }).meta({ + description: "Supporting image for the slide. Max 30 words", + }), + bulletPoints: z.array(z.object({ + title: z.string().min(2).max(80).meta({ + description: "Bullet point title. Max 4 words", + }), + description: z.string().min(10).max(150).meta({ + description: "Bullet point description. Max 15 words", + }), + icon: IconSchema, + })).min(1).max(3).default([ + { + title: "Inefficiency", + description: "Businesses struggle to find digital tools that meet their needs, causing operational slowdowns.", + icon: { + __icon_url__: "/static/icons/placeholder.png", + __icon_query__: "warning alert inefficiency" + } + }, + { + title: "High Costs", + description: "Outdated systems increase expenses, while small businesses struggle to expand their market reach.", + icon: { + __icon_url__: "/static/icons/placeholder.png", + __icon_query__: "trending up costs chart" + } + } + ]).meta({ + description: "List of bullet points with icons and descriptions. Max 3 points", + }) +}) + +type BulletWithIconsSlideData = z.infer + +interface BulletWithIconsSlideLayoutProps { + data?: Partial +} + +const dynamicSlideLayout: React.FC = ({ data: slideData }) => { + const bulletPoints = slideData?.bulletPoints || [] + + return ( + <> +
+ + + {/* Main Content */} +
+ {/* Title Section - Full Width */} +
+

+ {slideData?.title || "Problem"} +

+
+ + {/* Content Container */} +
+ {/* Left Section - Image with Grid Pattern */} +
+ {/* Grid Pattern Background */} +
+ + + + + + + + +
+ + {/* Image Container */} +
+
+ {slideData?.image?.__image_prompt__ +
+
+ + {/* Decorative Sparkle */} +
+ + + +
+
+ + {/* Right Section - Content */} +
+ {/* Description */} +

+ {slideData?.description || "Businesses face challenges with outdated technology and rising costs, limiting efficiency and growth in competitive markets."} +

+ + {/* Bullet Points */} +
+ {bulletPoints.map((bullet, index) => ( +
+ {/* Icon */} +
+ {bullet.icon.__icon_query__} +
+ + {/* Content */} +
+

+ {bullet.title} +

+
+

+ {bullet.description} +

+
+
+ ))} +
+
+
+
+
+ + ) +} + +- Give output with only code and nothing else. (no json, no markdown, no text, no explanation) +""" + +HTML_EDIT_SYSTEM_PROMPT = """ +You need to edit given html with respect to the indication and sketch in the given UI. You'll be given the code for current UI which is in presentation size, along with its visualization in image form. Over that you'll also be given another image which has indications of what might change in form of sketch in the UI. You will have to return the edited html with tailwind with the changes as indicated on the image and through prompt. Make sure you think through the design before making the change and also make sure you don't change the non-indicated part. Try to follow the design style of current content for generated content. If sketch image is not provided, then you need to edit the html with respect to the prompt. Make sure size of the presentation does not change in any cirsumstance. Only give out code and nothing else. +""" + diff --git a/backend/api/v1/ppt/endpoints/slide.py b/backend/api/v1/ppt/endpoints/slide.py new file mode 100644 index 0000000..704c2eb --- /dev/null +++ b/backend/api/v1/ppt/endpoints/slide.py @@ -0,0 +1,90 @@ +from typing import Annotated, Optional +from fastapi import APIRouter, Body, Depends, HTTPException +from sqlalchemy.ext.asyncio import AsyncSession +import uuid + +from models.sql.presentation import PresentationModel +from models.sql.slide import SlideModel +from services.database import get_async_session +from services.image_generation_service import ImageGenerationService +from utils.asset_directory_utils import get_images_directory +from utils.llm_calls.edit_slide import get_edited_slide_content +from utils.llm_calls.edit_slide_html import get_edited_slide_html +from utils.llm_calls.select_slide_type_on_edit import get_slide_layout_from_prompt +from utils.process_slides import process_old_and_new_slides_and_fetch_assets +import uuid + + +SLIDE_ROUTER = APIRouter(prefix="/slide", tags=["Slide"]) + + +@SLIDE_ROUTER.post("/edit") +async def edit_slide( + id: Annotated[uuid.UUID, Body()], + prompt: Annotated[str, Body()], + sql_session: AsyncSession = Depends(get_async_session), +): + slide = await sql_session.get(SlideModel, id) + if not slide: + raise HTTPException(status_code=404, detail="Slide not found") + presentation = await sql_session.get(PresentationModel, slide.presentation) + if not presentation: + raise HTTPException(status_code=404, detail="Presentation not found") + + presentation_layout = presentation.get_layout() + slide_layout = await get_slide_layout_from_prompt( + prompt, presentation_layout, slide + ) + + edited_slide_content = await get_edited_slide_content( + prompt, slide, presentation.language, slide_layout + ) + + image_generation_service = ImageGenerationService(get_images_directory()) + + # This will mutate edited_slide_content + new_assets = await process_old_and_new_slides_and_fetch_assets( + image_generation_service, + slide.content, + edited_slide_content, + ) + + # Always assign a new unique id to the slide + slide.id = uuid.uuid4() + + sql_session.add(slide) + slide.content = edited_slide_content + slide.layout = slide_layout.id + slide.speaker_note = edited_slide_content.get("__speaker_note__", "") + sql_session.add_all(new_assets) + await sql_session.commit() + + return slide + + +@SLIDE_ROUTER.post("/edit-html", response_model=SlideModel) +async def edit_slide_html( + id: Annotated[uuid.UUID, Body()], + prompt: Annotated[str, Body()], + html: Annotated[Optional[str], Body()] = None, + sql_session: AsyncSession = Depends(get_async_session), +): + slide = await sql_session.get(SlideModel, id) + if not slide: + raise HTTPException(status_code=404, detail="Slide not found") + + html_to_edit = html or slide.html_content + if not html_to_edit: + raise HTTPException(status_code=400, detail="No HTML to edit") + + edited_slide_html = await get_edited_slide_html(prompt, html_to_edit) + + # Always assign a new unique id to the slide + # This is to ensure that the nextjs can track slide updates + slide.id = uuid.uuid4() + + sql_session.add(slide) + slide.html_content = edited_slide_html + await sql_session.commit() + + return slide diff --git a/backend/api/v1/ppt/endpoints/slide_to_html.py b/backend/api/v1/ppt/endpoints/slide_to_html.py new file mode 100644 index 0000000..5025ce4 --- /dev/null +++ b/backend/api/v1/ppt/endpoints/slide_to_html.py @@ -0,0 +1,1043 @@ +import os +import base64 +from datetime import datetime +from typing import Optional, List, Dict +from uuid import UUID +from fastapi import APIRouter, HTTPException, File, UploadFile, Form, Depends +from pydantic import BaseModel +from openai import OpenAI +from openai import APIError +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy import select, delete, func +from utils.asset_directory_utils import get_images_directory +from services.database import get_async_session +from models.sql.presentation_layout_code import PresentationLayoutCodeModel +from .prompts import ( + GENERATE_HTML_SYSTEM_PROMPT, + HTML_TO_REACT_SYSTEM_PROMPT, + HTML_EDIT_SYSTEM_PROMPT, +) +from models.sql.template import TemplateModel + + +# Create separate routers for each functionality +SLIDE_TO_HTML_ROUTER = APIRouter(prefix="/slide-to-html", tags=["slide-to-html"]) +HTML_TO_REACT_ROUTER = APIRouter(prefix="/html-to-react", tags=["html-to-react"]) +HTML_EDIT_ROUTER = APIRouter(prefix="/html-edit", tags=["html-edit"]) +LAYOUT_MANAGEMENT_ROUTER = APIRouter( + prefix="/template-management", tags=["template-management"] +) + + +# Request/Response models for slide-to-html endpoint +class SlideToHtmlRequest(BaseModel): + image: str # Partial path to image file (e.g., "/app_data/images/uuid/slide_1.png") + xml: str # OXML content as text + fonts: Optional[List[str]] = None # Optional normalized root fonts for this slide + + +class SlideToHtmlResponse(BaseModel): + success: bool + html: str + + +# Request/Response models for html-edit endpoint +class HtmlEditResponse(BaseModel): + success: bool + edited_html: str + message: Optional[str] = None + + +# Request/Response models for html-to-react endpoint +class HtmlToReactRequest(BaseModel): + html: str # HTML content to convert to React component + image: Optional[str] = None # Optional image path to provide visual context + + +class HtmlToReactResponse(BaseModel): + success: bool + react_component: str + message: Optional[str] = None + + +# Request/Response models for layout management endpoints +class LayoutData(BaseModel): + presentation: UUID # UUID of the presentation + layout_id: str # Unique identifier for the layout + layout_name: str # Display name of the layout + layout_code: str # TSX/React component code for the layout + fonts: Optional[List[str]] = None # Optional list of font links + + +class SaveLayoutsRequest(BaseModel): + layouts: list[LayoutData] + + +class SaveLayoutsResponse(BaseModel): + success: bool + saved_count: int + message: Optional[str] = None + + +class GetLayoutsResponse(BaseModel): + success: bool + layouts: list[LayoutData] + message: Optional[str] = None + template: Optional[dict] = None + fonts: Optional[List[str]] = None + + +class PresentationSummary(BaseModel): + presentation_id: UUID + layout_count: int + last_updated_at: Optional[datetime] = None + template: Optional[dict] = None + + +class GetPresentationSummaryResponse(BaseModel): + success: bool + presentations: List[PresentationSummary] + total_presentations: int + total_layouts: int + message: Optional[str] = None + + +class ErrorResponse(BaseModel): + success: bool = False + detail: str + error_code: Optional[str] = None + + +class TemplateCreateRequest(BaseModel): + id: UUID + name: str + description: Optional[str] = None + + +class TemplateCreateResponse(BaseModel): + success: bool + template: dict + message: Optional[str] = None + + +class TemplateInfo(BaseModel): + id: UUID + name: Optional[str] = None + description: Optional[str] = None + created_at: Optional[datetime] = None + + +async def generate_html_from_slide( + base64_image: str, + media_type: str, + xml_content: str, + api_key: str, + fonts: Optional[List[str]] = None, +) -> str: + """ + Generate HTML content from slide image and XML using OpenAI GPT-5 Responses API. + + Args: + base64_image: Base64 encoded image data + media_type: MIME type of the image (e.g., 'image/png') + xml_content: OXML content as text + api_key: OpenAI API key + fonts: Optional list of normalized root font families to prefer in output + + Returns: + Generated HTML content as string + + Raises: + HTTPException: If API call fails or no content is generated + """ + print( + f"Generating HTML from slide image and XML using OpenAI GPT-5 Responses API..." + ) + try: + client = OpenAI(api_key=api_key) + + # Compose input for Responses API. Include system prompt, image (separate), OXML and optional fonts text. + data_url = f"data:{media_type};base64,{base64_image}" + fonts_text = ( + f"\nFONTS (Normalized root families used in this slide, use where it is required): {', '.join(fonts)}" + if fonts + else "" + ) + user_text = f"OXML: \n\n{fonts_text}" + input_payload = [ + {"role": "system", "content": GENERATE_HTML_SYSTEM_PROMPT}, + { + "role": "user", + "content": [ + {"type": "input_image", "image_url": data_url}, + {"type": "input_text", "text": user_text}, + ], + }, + ] + + print("Making Responses API request for HTML generation...") + response = client.responses.create( + model="gpt-5", + input=input_payload, + reasoning={"effort": "high"}, + text={"verbosity": "low"}, + ) + + # Extract the response text + html_content = ( + getattr(response, "output_text", None) + or getattr(response, "text", None) + or "" + ) + + print(f"Received HTML content length: {len(html_content)}") + + if not html_content: + raise HTTPException( + status_code=500, detail="No HTML content generated by OpenAI GPT-5" + ) + + return html_content + + except APIError as e: + print(f"OpenAI API Error: {e}") + raise HTTPException( + status_code=500, detail=f"OpenAI API error during HTML generation: {str(e)}" + ) + except Exception as e: + # Handle various API errors + error_msg = str(e) + print(f"Exception occurred: {error_msg}") + print(f"Exception type: {type(e)}") + if "timeout" in error_msg.lower(): + raise HTTPException( + status_code=408, + detail=f"OpenAI API timeout during HTML generation: {error_msg}", + ) + elif "connection" in error_msg.lower(): + raise HTTPException( + status_code=503, + detail=f"OpenAI API connection error during HTML generation: {error_msg}", + ) + else: + raise HTTPException( + status_code=500, + detail=f"OpenAI API error during HTML generation: {error_msg}", + ) + + +async def generate_react_component_from_html( + html_content: str, + api_key: str, + image_base64: Optional[str] = None, + media_type: Optional[str] = None, +) -> str: + """ + Convert HTML content to TSX React component using OpenAI GPT-5 Responses API. + + Args: + html_content: Generated HTML content + api_key: OpenAI API key + + Returns: + Generated TSX React component code as string + + Raises: + HTTPException: If API call fails or no content is generated + """ + try: + client = OpenAI(api_key=api_key) + + print("Making Responses API request for React component generation...") + + # Build payload with optional image + content_parts = [{"type": "input_text", "text": f"HTML INPUT:\n{html_content}"}] + if image_base64 and media_type: + data_url = f"data:{media_type};base64,{image_base64}" + content_parts.insert(0, {"type": "input_image", "image_url": data_url}) + + input_payload = [ + {"role": "system", "content": HTML_TO_REACT_SYSTEM_PROMPT}, + {"role": "user", "content": content_parts}, + ] + + response = client.responses.create( + model="gpt-5", + input=input_payload, + reasoning={"effort": "minimal"}, + text={"verbosity": "low"}, + ) + + react_content = ( + getattr(response, "output_text", None) + or getattr(response, "text", None) + or "" + ) + + print(f"Received React content length: {len(react_content)}") + + if not react_content: + raise HTTPException( + status_code=500, detail="No React component generated by OpenAI GPT-5" + ) + + react_content = ( + react_content.replace("```tsx", "") + .replace("```", "") + .replace("typescript", "") + .replace("javascript", "") + ) + + # Filter out lines that start with import or export + filtered_lines = [] + for line in react_content.split("\n"): + stripped_line = line.strip() + if not ( + stripped_line.startswith("import ") + or stripped_line.startswith("export ") + ): + filtered_lines.append(line) + + filtered_react_content = "\n".join(filtered_lines) + print(f"Filtered React content length: {len(filtered_react_content)}") + + return filtered_react_content + except APIError as e: + print(f"OpenAI API Error: {e}") + raise HTTPException( + status_code=500, + detail=f"OpenAI API error during React generation: {str(e)}", + ) + except Exception as e: + # Handle various API errors + error_msg = str(e) + print(f"Exception occurred: {error_msg}") + print(f"Exception type: {type(e)}") + if "timeout" in error_msg.lower(): + raise HTTPException( + status_code=408, + detail=f"OpenAI API timeout during React generation: {error_msg}", + ) + elif "connection" in error_msg.lower(): + raise HTTPException( + status_code=503, + detail=f"OpenAI API connection error during React generation: {error_msg}", + ) + else: + raise HTTPException( + status_code=500, + detail=f"OpenAI API error during React generation: {error_msg}", + ) + + +async def edit_html_with_images( + current_ui_base64: str, + sketch_base64: Optional[str], + media_type: str, + html_content: str, + prompt: str, + api_key: str, +) -> str: + """ + Edit HTML content based on one or two images and a text prompt using OpenAI GPT-5 Responses API. + + Args: + current_ui_base64: Base64 encoded current UI image data + sketch_base64: Base64 encoded sketch/indication image data (optional) + media_type: MIME type of the images (e.g., 'image/png') + html_content: Current HTML content to edit + prompt: Text prompt describing the changes + api_key: OpenAI API key + + Returns: + Edited HTML content as string + + Raises: + HTTPException: If API call fails or no content is generated + """ + try: + client = OpenAI(api_key=api_key) + + print("Making Responses API request for HTML editing...") + + current_data_url = f"data:{media_type};base64,{current_ui_base64}" + sketch_data_url = ( + f"data:{media_type};base64,{sketch_base64}" if sketch_base64 else None + ) + + content_parts = [ + {"type": "input_image", "image_url": current_data_url}, + { + "type": "input_text", + "text": f"CURRENT HTML TO EDIT:\n{html_content}\n\nTEXT PROMPT FOR CHANGES:\n{prompt}", + }, + ] + if sketch_data_url: + # Insert sketch image after current UI image for context + content_parts.insert( + 1, {"type": "input_image", "image_url": sketch_data_url} + ) + + input_payload = [ + {"role": "system", "content": HTML_EDIT_SYSTEM_PROMPT}, + {"role": "user", "content": content_parts}, + ] + + response = client.responses.create( + model="gpt-5", + input=input_payload, + reasoning={"effort": "low"}, + text={"verbosity": "low"}, + ) + + edited_html = ( + getattr(response, "output_text", None) + or getattr(response, "text", None) + or "" + ) + + print(f"Received edited HTML content length: {len(edited_html)}") + + if not edited_html: + raise HTTPException( + status_code=500, + detail="No edited HTML content generated by OpenAI GPT-5", + ) + + return edited_html + + except APIError as e: + print(f"OpenAI API Error: {e}") + raise HTTPException( + status_code=500, detail=f"OpenAI API error during HTML editing: {str(e)}" + ) + except Exception as e: + # Handle various API errors + error_msg = str(e) + print(f"Exception occurred: {error_msg}") + print(f"Exception type: {type(e)}") + if "timeout" in error_msg.lower(): + raise HTTPException( + status_code=408, + detail=f"OpenAI API timeout during HTML editing: {error_msg}", + ) + elif "connection" in error_msg.lower(): + raise HTTPException( + status_code=503, + detail=f"OpenAI API connection error during HTML editing: {error_msg}", + ) + else: + raise HTTPException( + status_code=500, + detail=f"OpenAI API error during HTML editing: {error_msg}", + ) + + +# ENDPOINT 1: Slide to HTML conversion +@SLIDE_TO_HTML_ROUTER.post("/", response_model=SlideToHtmlResponse) +async def convert_slide_to_html(request: SlideToHtmlRequest): + """ + Convert a slide image and its OXML data to HTML using Anthropic Claude API. + + Args: + request: JSON request containing image path and XML content + + Returns: + SlideToHtmlResponse with generated HTML + """ + try: + # Get OpenAI API key from environment + api_key = os.getenv("OPENAI_API_KEY") + if not api_key: + raise HTTPException( + status_code=500, detail="OPENAI_API_KEY environment variable not set" + ) + + # Resolve image path to actual file system path + image_path = request.image + + # Handle different path formats + if image_path.startswith("/app_data/images/"): + # Remove the /app_data/images/ prefix and join with actual images directory + relative_path = image_path[len("/app_data/images/") :] + actual_image_path = os.path.join(get_images_directory(), relative_path) + elif image_path.startswith("/static/"): + # Handle static files + relative_path = image_path[len("/static/") :] + actual_image_path = os.path.join("static", relative_path) + else: + # Assume it's already a full path or relative to images directory + if os.path.isabs(image_path): + actual_image_path = image_path + else: + actual_image_path = os.path.join(get_images_directory(), image_path) + + # Check if image file exists + if not os.path.exists(actual_image_path): + raise HTTPException( + status_code=404, detail=f"Image file not found: {image_path}" + ) + + # Read and encode image to base64 + with open(actual_image_path, "rb") as image_file: + image_content = image_file.read() + base64_image = base64.b64encode(image_content).decode("utf-8") + + # Determine media type from file extension + file_extension = os.path.splitext(actual_image_path)[1].lower() + media_type_map = { + ".png": "image/png", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".gif": "image/gif", + ".webp": "image/webp", + } + media_type = media_type_map.get(file_extension, "image/png") + + # Generate HTML using the extracted function + html_content = await generate_html_from_slide( + base64_image=base64_image, + media_type=media_type, + xml_content=request.xml, + api_key=api_key, + fonts=request.fonts, + ) + + html_content = html_content.replace("```html", "").replace("```", "") + + return SlideToHtmlResponse(success=True, html=html_content) + + except HTTPException: + # Re-raise HTTP exceptions as-is + raise + except Exception as e: + # Log the full error for debugging + print(f"Unexpected error during slide to HTML processing: {str(e)}") + raise HTTPException( + status_code=500, detail=f"Error processing slide to HTML: {str(e)}" + ) + + +# ENDPOINT 2: HTML to React component conversion +@HTML_TO_REACT_ROUTER.post("/", response_model=HtmlToReactResponse) +async def convert_html_to_react(request: HtmlToReactRequest): + """ + Convert HTML content to TSX React component using Anthropic Claude API. + + Args: + request: JSON request containing HTML content + + Returns: + HtmlToReactResponse with generated React component + """ + try: + # Get OpenAI API key from environment + api_key = os.getenv("OPENAI_API_KEY") + if not api_key: + raise HTTPException( + status_code=500, detail="OPENAI_API_KEY environment variable not set" + ) + + # Validate HTML content + if not request.html or not request.html.strip(): + raise HTTPException(status_code=400, detail="HTML content cannot be empty") + + # Optionally resolve image and encode to base64 + image_b64 = None + media_type = None + if request.image: + image_path = request.image + if image_path.startswith("/app_data/images/"): + relative_path = image_path[len("/app_data/images/") :] + actual_image_path = os.path.join(get_images_directory(), relative_path) + elif image_path.startswith("/static/"): + relative_path = image_path[len("/static/") :] + actual_image_path = os.path.join("static", relative_path) + else: + actual_image_path = ( + image_path + if os.path.isabs(image_path) + else os.path.join(get_images_directory(), image_path) + ) + if os.path.exists(actual_image_path): + with open(actual_image_path, "rb") as f: + image_b64 = base64.b64encode(f.read()).decode("utf-8") + ext = os.path.splitext(actual_image_path)[1].lower() + media_type = { + ".png": "image/png", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".gif": "image/gif", + ".webp": "image/webp", + }.get(ext, "image/png") + + # Convert HTML to React component + react_component = await generate_react_component_from_html( + html_content=request.html, + api_key=api_key, + image_base64=image_b64, + media_type=media_type, + ) + + react_component = react_component.replace("```tsx", "").replace("```", "") + + return HtmlToReactResponse( + success=True, + react_component=react_component, + message="React component generated successfully", + ) + + except HTTPException: + # Re-raise HTTP exceptions as-is + raise + except Exception as e: + # Log the full error for debugging + print(f"Unexpected error during HTML to React processing: {str(e)}") + raise HTTPException( + status_code=500, detail=f"Error processing HTML to React: {str(e)}" + ) + + +# ENDPOINT 3: HTML editing with images +@HTML_EDIT_ROUTER.post("/", response_model=HtmlEditResponse) +async def edit_html_with_images_endpoint( + current_ui_image: UploadFile = File(..., description="Current UI image file"), + sketch_image: Optional[UploadFile] = File( + None, description="Sketch/indication image file (optional)" + ), + html: str = Form(..., description="Current HTML content to edit"), + prompt: str = Form(..., description="Text prompt describing the changes"), +): + """ + Edit HTML content based on one or two uploaded images and a text prompt using Anthropic Claude API. + + Args: + current_ui_image: Uploaded current UI image file + sketch_image: Uploaded sketch/indication image file (optional) + html: Current HTML content to edit (form data) + prompt: Text prompt describing the changes (form data) + + Returns: + HtmlEditResponse with edited HTML + """ + try: + # Get OpenAI API key from environment + api_key = os.getenv("OPENAI_API_KEY") + if not api_key: + raise HTTPException( + status_code=500, detail="OPENAI_API_KEY environment variable not set" + ) + + # Validate inputs + if not html or not html.strip(): + raise HTTPException(status_code=400, detail="HTML content cannot be empty") + + if not prompt or not prompt.strip(): + raise HTTPException(status_code=400, detail="Text prompt cannot be empty") + + # Validate current UI image file + if ( + not current_ui_image.content_type + or not current_ui_image.content_type.startswith("image/") + ): + raise HTTPException( + status_code=400, detail="Current UI file must be an image" + ) + + # Validate sketch image file only if provided + if sketch_image and ( + not sketch_image.content_type + or not sketch_image.content_type.startswith("image/") + ): + raise HTTPException(status_code=400, detail="Sketch file must be an image") + + # Read and encode current UI image to base64 + current_ui_content = await current_ui_image.read() + current_ui_base64 = base64.b64encode(current_ui_content).decode("utf-8") + + # Read and encode sketch image to base64 only if provided + sketch_base64 = None + if sketch_image: + sketch_content = await sketch_image.read() + sketch_base64 = base64.b64encode(sketch_content).decode("utf-8") + + # Use the content type from the uploaded files + media_type = current_ui_image.content_type + + # Edit HTML using the function + edited_html = await edit_html_with_images( + current_ui_base64=current_ui_base64, + sketch_base64=sketch_base64, + media_type=media_type, + html_content=html, + prompt=prompt, + api_key=api_key, + ) + + edited_html = edited_html.replace("```html", "").replace("```", "") + + return HtmlEditResponse( + success=True, edited_html=edited_html, message="HTML edited successfully" + ) + + except HTTPException: + # Re-raise HTTP exceptions as-is + raise + except Exception as e: + # Log the full error for debugging + print(f"Unexpected error during HTML editing: {str(e)}") + raise HTTPException( + status_code=500, detail=f"Error processing HTML editing: {str(e)}" + ) + + +# ENDPOINT 4: Save layouts for a presentation +@LAYOUT_MANAGEMENT_ROUTER.post( + "/save-templates", + response_model=SaveLayoutsResponse, + responses={ + 400: {"model": ErrorResponse, "description": "Validation error"}, + 500: {"model": ErrorResponse, "description": "Internal server error"}, + }, +) +async def save_layouts( + request: SaveLayoutsRequest, session: AsyncSession = Depends(get_async_session) +): + """ + Save multiple layouts for presentations. + + Args: + request: JSON request containing array of layout data + session: Database session + + Returns: + SaveLayoutsResponse with success status and count of saved layouts + + Raises: + HTTPException: 400 for validation errors, 500 for server errors + """ + try: + # Validate request data + if not request.layouts: + raise HTTPException(status_code=400, detail="Layouts array cannot be empty") + + if len(request.layouts) > 50: # Reasonable limit + raise HTTPException( + status_code=400, detail="Cannot save more than 50 layouts at once" + ) + + saved_count = 0 + + for i, layout_data in enumerate(request.layouts): + # Validate individual layout data + if ( + not layout_data.presentation + or not str(layout_data.presentation).strip() + ): + raise HTTPException( + status_code=400, + detail=f"Layout {i+1}: presentation_id cannot be empty", + ) + + if not layout_data.layout_id or not layout_data.layout_id.strip(): + raise HTTPException( + status_code=400, detail=f"Layout {i+1}: layout_id cannot be empty" + ) + + if not layout_data.layout_name or not layout_data.layout_name.strip(): + raise HTTPException( + status_code=400, detail=f"Layout {i+1}: layout_name cannot be empty" + ) + + if not layout_data.layout_code or not layout_data.layout_code.strip(): + raise HTTPException( + status_code=400, detail=f"Layout {i+1}: layout_code cannot be empty" + ) + + # Check if layout already exists for this presentation and layout_id + stmt = select(PresentationLayoutCodeModel).where( + PresentationLayoutCodeModel.presentation == layout_data.presentation, + PresentationLayoutCodeModel.layout_id == layout_data.layout_id, + ) + result = await session.execute(stmt) + existing_layout = result.scalar_one_or_none() + + if existing_layout: + # Update existing layout + existing_layout.layout_name = layout_data.layout_name + existing_layout.layout_code = layout_data.layout_code + existing_layout.fonts = layout_data.fonts + existing_layout.updated_at = datetime.now() + else: + # Create new layout + new_layout = PresentationLayoutCodeModel( + presentation=layout_data.presentation, + layout_id=layout_data.layout_id, + layout_name=layout_data.layout_name, + layout_code=layout_data.layout_code, + fonts=layout_data.fonts, + ) + session.add(new_layout) + + saved_count += 1 + + await session.commit() + + return SaveLayoutsResponse( + success=True, + saved_count=saved_count, + message=f"Successfully saved {saved_count} layout(s)", + ) + + except HTTPException: + # Re-raise HTTP exceptions as-is + await session.rollback() + raise + except Exception as e: + await session.rollback() + print(f"Unexpected error saving layouts: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Internal server error while saving layouts: {str(e)}", + ) + + +# ENDPOINT 5: Get layouts for a presentation +@LAYOUT_MANAGEMENT_ROUTER.get( + "/get-templates/{presentation}", + response_model=GetLayoutsResponse, + responses={ + 400: {"model": ErrorResponse, "description": "Invalid presentation ID"}, + 404: { + "model": ErrorResponse, + "description": "No layouts found for presentation", + }, + 500: {"model": ErrorResponse, "description": "Internal server error"}, + }, +) +async def get_layouts( + presentation: UUID, session: AsyncSession = Depends(get_async_session) +): + """ + Retrieve all layouts for a specific presentation. + + Args: + presentation: UUID of the presentation + session: Database session + + Returns: + GetLayoutsResponse with layouts data + + Raises: + HTTPException: 404 if no layouts found, 400 for invalid UUID, 500 for server errors + """ + try: + # Validate presentation_id format (basic UUID check) + if not presentation or len(str(presentation).strip()) == 0: + raise HTTPException( + status_code=400, detail="Presentation ID cannot be empty" + ) + + # Query layouts for the given presentation_id + stmt = select(PresentationLayoutCodeModel).where( + PresentationLayoutCodeModel.presentation == presentation + ) + result = await session.execute(stmt) + layouts_db = result.scalars().all() + + # Check if any layouts were found + if not layouts_db: + raise HTTPException( + status_code=404, + detail=f"No layouts found for presentation ID: {presentation}", + ) + + # Convert to response format + layouts = [ + LayoutData( + presentation=layout.presentation, + layout_id=layout.layout_id, + layout_name=layout.layout_name, + layout_code=layout.layout_code, + fonts=layout.fonts, + ) + for layout in layouts_db + ] + + # Aggregate unique fonts across all layouts + aggregated_fonts: set[str] = set() + for layout in layouts_db: + if layout.fonts: + aggregated_fonts.update([f for f in layout.fonts if isinstance(f, str)]) + fonts_list = sorted(list(aggregated_fonts)) if aggregated_fonts else None + + # Fetch template meta + template_meta = await session.get(TemplateModel, presentation) + template = None + if template_meta: + template = { + "id": template_meta.id, + "name": template_meta.name, + "description": template_meta.description, + "created_at": template_meta.created_at, + } + + return GetLayoutsResponse( + success=True, + layouts=layouts, + message=f"Retrieved {len(layouts)} layout(s) for presentation {presentation}", + template=template, + fonts=fonts_list, + ) + + except HTTPException: + # Re-raise HTTP exceptions as-is + raise + except Exception as e: + print(f"Error retrieving layouts for presentation {presentation}: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Internal server error while retrieving layouts: {str(e)}", + ) + + +# ENDPOINT: Get all presentations with layout counts +@LAYOUT_MANAGEMENT_ROUTER.get( + "/summary", + response_model=GetPresentationSummaryResponse, + summary="Get all presentations with layout counts", + description="Retrieve a summary of all presentations and the number of layouts in each", + responses={ + 200: { + "model": GetPresentationSummaryResponse, + "description": "Presentations summary retrieved successfully", + }, + 500: {"model": ErrorResponse, "description": "Internal server error"}, + }, +) +async def get_presentations_summary( + session: AsyncSession = Depends(get_async_session), +): + """ + Get summary of all presentations with their layout counts. + """ + try: + # Query to get presentation_id, count of layouts, and MAX(updated_at) + stmt = select( + PresentationLayoutCodeModel.presentation, + func.count(PresentationLayoutCodeModel.id).label("layout_count"), + func.max(PresentationLayoutCodeModel.updated_at).label("last_updated_at"), + ).group_by(PresentationLayoutCodeModel.presentation) + + result = await session.execute(stmt) + presentation_data = result.all() + + # Convert to response format with template info if available + presentations = [] + for row in presentation_data: + template_meta = await session.get(TemplateModel, row.presentation) + template = None + if template_meta: + template = { + "id": template_meta.id, + "name": template_meta.name, + "description": template_meta.description, + "created_at": template_meta.created_at, + } + presentations.append( + PresentationSummary( + presentation_id=row.presentation, + layout_count=row.layout_count, + last_updated_at=row.last_updated_at, + template=template, + ) + ) + + # Calculate totals + total_presentations = len(presentations) + total_layouts = sum(p.layout_count for p in presentations) + + return GetPresentationSummaryResponse( + success=True, + presentations=presentations, + total_presentations=total_presentations, + total_layouts=total_layouts, + message=f"Retrieved {total_presentations} presentation(s) with {total_layouts} total layout(s)", + ) + + except Exception as e: + print(f"Error retrieving presentations summary: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Internal server error while retrieving presentations summary: {str(e)}", + ) + + +@LAYOUT_MANAGEMENT_ROUTER.post( + "/templates", + response_model=TemplateCreateResponse, + responses={ + 400: {"model": ErrorResponse, "description": "Validation error"}, + 500: {"model": ErrorResponse, "description": "Internal server error"}, + }, +) +async def create_template( + request: TemplateCreateRequest, + session: AsyncSession = Depends(get_async_session), +): + try: + if not request.id or not request.name: + raise HTTPException(status_code=400, detail="id and name are required") + + # Upsert template by id + existing = await session.get(TemplateModel, request.id) + if existing: + existing.name = request.name + existing.description = request.description + else: + session.add( + TemplateModel( + id=request.id, name=request.name, description=request.description + ) + ) + await session.commit() + + # Read back + template = await session.get(TemplateModel, request.id) + return TemplateCreateResponse( + success=True, + template={ + "id": template.id, + "name": template.name, + "description": template.description, + "created_at": template.created_at, + }, + message="Template saved", + ) + except HTTPException: + await session.rollback() + raise + except Exception as e: + await session.rollback() + raise HTTPException( + status_code=500, detail=f"Failed to save template: {str(e)}" + ) + + +@LAYOUT_MANAGEMENT_ROUTER.delete("/delete-templates/{template_id}", status_code=204) +async def delete_template( + template_id: UUID, + session: AsyncSession = Depends(get_async_session), +): + try: + await session.execute( + delete(TemplateModel).where(TemplateModel.id == template_id) + ) + await session.execute( + delete(PresentationLayoutCodeModel).where( + PresentationLayoutCodeModel.presentation == template_id, + ) + ) + await session.commit() + except Exception as e: + raise HTTPException(status_code=500, detail=f"Failed to delete template") diff --git a/backend/api/v1/ppt/router.py b/backend/api/v1/ppt/router.py new file mode 100644 index 0000000..1f89a2f --- /dev/null +++ b/backend/api/v1/ppt/router.py @@ -0,0 +1,39 @@ +from fastapi import APIRouter + +from api.v1.ppt.endpoints.slide_to_html import SLIDE_TO_HTML_ROUTER, HTML_TO_REACT_ROUTER, HTML_EDIT_ROUTER, LAYOUT_MANAGEMENT_ROUTER +from api.v1.ppt.endpoints.presentation import PRESENTATION_ROUTER +from api.v1.ppt.endpoints.anthropic import ANTHROPIC_ROUTER +from api.v1.ppt.endpoints.google import GOOGLE_ROUTER +from api.v1.ppt.endpoints.openai import OPENAI_ROUTER +from api.v1.ppt.endpoints.files import FILES_ROUTER +from api.v1.ppt.endpoints.pptx_slides import PPTX_SLIDES_ROUTER +from api.v1.ppt.endpoints.pdf_slides import PDF_SLIDES_ROUTER +from api.v1.ppt.endpoints.fonts import FONTS_ROUTER +from api.v1.ppt.endpoints.icons import ICONS_ROUTER +from api.v1.ppt.endpoints.images import IMAGES_ROUTER +from api.v1.ppt.endpoints.ollama import OLLAMA_ROUTER +from api.v1.ppt.endpoints.outlines import OUTLINES_ROUTER +from api.v1.ppt.endpoints.slide import SLIDE_ROUTER +from api.v1.ppt.endpoints.pptx_slides import PPTX_FONTS_ROUTER + + +API_V1_PPT_ROUTER = APIRouter(prefix="/api/v1/ppt") + +API_V1_PPT_ROUTER.include_router(FILES_ROUTER) +API_V1_PPT_ROUTER.include_router(FONTS_ROUTER) +API_V1_PPT_ROUTER.include_router(OUTLINES_ROUTER) +API_V1_PPT_ROUTER.include_router(PRESENTATION_ROUTER) +API_V1_PPT_ROUTER.include_router(PPTX_SLIDES_ROUTER) +API_V1_PPT_ROUTER.include_router(SLIDE_ROUTER) +API_V1_PPT_ROUTER.include_router(SLIDE_TO_HTML_ROUTER) +API_V1_PPT_ROUTER.include_router(HTML_TO_REACT_ROUTER) +API_V1_PPT_ROUTER.include_router(HTML_EDIT_ROUTER) +API_V1_PPT_ROUTER.include_router(LAYOUT_MANAGEMENT_ROUTER) +API_V1_PPT_ROUTER.include_router(IMAGES_ROUTER) +API_V1_PPT_ROUTER.include_router(ICONS_ROUTER) +API_V1_PPT_ROUTER.include_router(OLLAMA_ROUTER) +API_V1_PPT_ROUTER.include_router(PDF_SLIDES_ROUTER) +API_V1_PPT_ROUTER.include_router(OPENAI_ROUTER) +API_V1_PPT_ROUTER.include_router(ANTHROPIC_ROUTER) +API_V1_PPT_ROUTER.include_router(GOOGLE_ROUTER) +API_V1_PPT_ROUTER.include_router(PPTX_FONTS_ROUTER) diff --git a/backend/api/v1/webhook/router.py b/backend/api/v1/webhook/router.py new file mode 100644 index 0000000..4b85fc4 --- /dev/null +++ b/backend/api/v1/webhook/router.py @@ -0,0 +1,53 @@ +from typing import Optional +from fastapi import APIRouter, Body, Depends, HTTPException, Path +from pydantic import BaseModel, Field +from sqlalchemy.ext.asyncio import AsyncSession + +from enums.webhook_event import WebhookEvent +from models.sql.webhook_subscription import WebhookSubscription +from services.database import get_async_session + +API_V1_WEBHOOK_ROUTER = APIRouter(prefix="/api/v1/webhook", tags=["Webhook"]) + + +class SubscribeToWebhookRequest(BaseModel): + url: str = Field(description="The URL to send the webhook to") + secret: Optional[str] = Field(None, description="The secret to use for the webhook") + event: WebhookEvent = Field(description="The event to subscribe to") + + +class SubscribeToWebhookResponse(BaseModel): + id: str + + +@API_V1_WEBHOOK_ROUTER.post( + "/subscribe", response_model=SubscribeToWebhookResponse, status_code=201 +) +async def subscribe_to_webhook( + body: SubscribeToWebhookRequest, + sql_session: AsyncSession = Depends(get_async_session), +): + webhook_subscription = WebhookSubscription( + url=body.url, + secret=body.secret, + event=body.event, + ) + sql_session.add(webhook_subscription) + await sql_session.commit() + return SubscribeToWebhookResponse(id=webhook_subscription.id) + + +@API_V1_WEBHOOK_ROUTER.delete("/unsubscribe", status_code=204) +async def unsubscribe_to_webhook( + id: str = Body( + embed=True, description="The ID of the webhook subscription to unsubscribe from" + ), + sql_session: AsyncSession = Depends(get_async_session), +): + + webhook_subscription = await sql_session.get(WebhookSubscription, id) + if not webhook_subscription: + raise HTTPException(404, "Webhook subscription not found") + + await sql_session.delete(webhook_subscription) + await sql_session.commit() diff --git a/backend/assets/icons.json b/backend/assets/icons.json new file mode 100644 index 0000000..ef41b09 --- /dev/null +++ b/backend/assets/icons.json @@ -0,0 +1,63510 @@ +{ + "sets": [{ "label": "Phosphor Icons", "id": 1 }], + "groups": [], + "icons": [ + { + "name": "acorn", + "content": "", + "style": "outline", + "tags": "*new*,savings,nut,vegetable,veggies,food,groceries,market", + "set_id": 1 + }, + { + "name": "address-book", + "content": "", + "style": "outline", + "tags": "contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "address-book-tabs", + "content": "", + "style": "outline", + "tags": "*new*,contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "air-traffic-control", + "content": "", + "style": "outline", + "tags": "airport,travel,transportation,buildings", + "set_id": 1 + }, + { + "name": "airplane", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "airplane-in-flight", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-landing", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-takeoff", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplane-taxiing", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-tilt", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplay", + "content": "", + "style": "outline", + "tags": "apple,screencasting,television,tv", + "set_id": 1 + }, + { + "name": "alarm", + "content": "", + "style": "outline", + "tags": "times,timer,clock,schedule,events,watch", + "set_id": 1 + }, + { + "name": "alien", + "content": "", + "style": "outline", + "tags": "ufo,space,flying saucer,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "align-bottom", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-bottom-simple", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-center-horizontal", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-horizontal-simple", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-simple", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-left", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-left-simple", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-right", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-right-simple", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-top", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "align-top-simple", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "amazon-logo", + "content": "", + "style": "outline", + "tags": "ecommerce,shopping,logos", + "set_id": 1 + }, + { + "name": "ambulance", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,doctor,vehicles", + "set_id": 1 + }, + { + "name": "anchor", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "anchor-simple", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "android-logo", + "content": "", + "style": "outline", + "tags": "logos,google,mobile,phone,cellular,cellphone", + "set_id": 1 + }, + { + "name": "angle", + "content": "", + "style": "outline", + "tags": "*new*,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "angular-logo", + "content": "", + "style": "outline", + "tags": "framework,javascript,google,web", + "set_id": 1 + }, + { + "name": "aperture", + "content": "", + "style": "outline", + "tags": "photography,cameras,pictures,lens", + "set_id": 1 + }, + { + "name": "app-store-logo", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "app-window", + "content": "", + "style": "outline", + "tags": "windows,software,programs,applications", + "set_id": 1 + }, + { + "name": "apple-logo", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "apple-podcasts-logo", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "approximate-equals", + "content": "", + "style": "outline", + "tags": "*new*,≈,is approximately equal to,congruent,equality,equivalent,equivalence,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "archive", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "armchair", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "arrow-arc-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-arc-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply-all", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply,re", + "set_id": 1 + }, + { + "name": "arrow-bend-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,forward,fwd", + "set_id": 1 + }, + { + "name": "arrow-circle-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-clockwise", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-counter-clockwise", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-fat-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,caps lock,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,shift,outlined", + "set_id": 1 + }, + { + "name": "arrow-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,bottom", + "set_id": 1 + }, + { + "name": "arrow-line-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,top", + "set_id": 1 + }, + { + "name": "arrow-line-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-in", + "content": "", + "style": "outline", + "tags": "import,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-out", + "content": "", + "style": "outline", + "tags": "export,external,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-u-down-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-down-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-down", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-up", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-left", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-right", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-clockwise", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,sync,synchronize,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-counter-clockwise", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-down-up", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-horizontal", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,left,right", + "set_id": 1 + }, + { + "name": "arrows-in", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-cardinal", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-line-horizontal", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-line-vertical", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-simple", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize", + "set_id": 1 + }, + { + "name": "arrows-left-right", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-merge", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,join,combine", + "set_id": 1 + }, + { + "name": "arrows-out", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,grow", + "set_id": 1 + }, + { + "name": "arrows-out-cardinal", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,pan,move,grow", + "set_id": 1 + }, + { + "name": "arrows-out-line-horizontal", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-line-vertical", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-simple", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize", + "set_id": 1 + }, + { + "name": "arrows-split", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,fork", + "set_id": 1 + }, + { + "name": "arrows-vertical", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,up,down", + "set_id": 1 + }, + { + "name": "article", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-medium", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-ny-times", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,news,newspaper,nyt,new york times", + "set_id": 1 + }, + { + "name": "asclepius", + "content": "", + "style": "outline", + "tags": "*new*,caduceus,staff,mythology,rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor,hospital,snake,mercury,hermes", + "set_id": 1 + }, + { + "name": "asterisk", + "content": "", + "style": "outline", + "tags": "star,wildcard,bullet point,6,emergency", + "set_id": 1 + }, + { + "name": "asterisk-simple", + "content": "", + "style": "outline", + "tags": "*updated*,star,wildcard,bullet point,5,emergency", + "set_id": 1 + }, + { + "name": "at", + "content": "", + "style": "outline", + "tags": "@,address,email,at symbol,commercial at,arobase", + "set_id": 1 + }, + { + "name": "atom", + "content": "", + "style": "outline", + "tags": "atomic,nucleus,nuclear,reactor,science,physics,electron,automation,react", + "set_id": 1 + }, + { + "name": "avocado", + "content": "", + "style": "outline", + "tags": "*new*,food,vegetable,veggie,fruit,groceries,market", + "set_id": 1 + }, + { + "name": "axe", + "content": "", + "style": "outline", + "tags": "*new*,tools,carpentry,forestry,construction", + "set_id": 1 + }, + { + "name": "baby", + "content": "", + "style": "outline", + "tags": "infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "baby-carriage", + "content": "", + "style": "outline", + "tags": "*new*,pram,stroller,infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "backpack", + "content": "", + "style": "outline", + "tags": "knapsack,camping,school,bag", + "set_id": 1 + }, + { + "name": "backspace", + "content": "", + "style": "outline", + "tags": "keyboard,remove,delete", + "set_id": 1 + }, + { + "name": "bag", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "bag-simple", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "balloon", + "content": "", + "style": "outline", + "tags": "helium,birthday,party", + "set_id": 1 + }, + { + "name": "bandaids", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,first aid,injury", + "set_id": 1 + }, + { + "name": "bank", + "content": "", + "style": "outline", + "tags": "banking,checking,money,savings,deposit,withdraw,places,locations", + "set_id": 1 + }, + { + "name": "barbell", + "content": "", + "style": "outline", + "tags": "gym,weights,dumbbells,strength training,workout,exercises,fitness", + "set_id": 1 + }, + { + "name": "barcode", + "content": "", + "style": "outline", + "tags": "upc,qr,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "barn", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,buildings,farming,agriculture", + "set_id": 1 + }, + { + "name": "barricade", + "content": "", + "style": "outline", + "tags": "construction,safety,gate", + "set_id": 1 + }, + { + "name": "baseball", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "baseball-cap", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sports,hat", + "set_id": 1 + }, + { + "name": "baseball-helmet", + "content": "", + "style": "outline", + "tags": "*new*,sports,mlb", + "set_id": 1 + }, + { + "name": "basket", + "content": "", + "style": "outline", + "tags": "ecommerce,market,cart,buying,shopping,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "basketball", + "content": "", + "style": "outline", + "tags": "sports,nba", + "set_id": 1 + }, + { + "name": "bathtub", + "content": "", + "style": "outline", + "tags": "bath,shower,bathroom,faucet", + "set_id": 1 + }, + { + "name": "battery-charging", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-charging-vertical", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-empty", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-full", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,filled", + "set_id": 1 + }, + { + "name": "battery-high", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-low", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-medium", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-vertical", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-empty", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-vertical-full", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-high", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-low", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-medium", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-warning", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "battery-warning-vertical", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "beach-ball", + "content": "", + "style": "outline", + "tags": "*new*,sports,ocean,party", + "set_id": 1 + }, + { + "name": "beanie", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,sports,hat,winter", + "set_id": 1 + }, + { + "name": "bed", + "content": "", + "style": "outline", + "tags": "hotels,accommodations,sleeping,places,locations,medical,hospital", + "set_id": 1 + }, + { + "name": "beer-bottle", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "beer-stein", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "behance-logo", + "content": "", + "style": "outline", + "tags": "logos,illustration,ui,interface", + "set_id": 1 + }, + { + "name": "bell", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-ringing", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-ringing", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-slash", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,silent,silenced,disabled", + "set_id": 1 + }, + { + "name": "bell-simple-z", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "bell-slash", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,silent,silenced,ringer,calls,disabled", + "set_id": 1 + }, + { + "name": "bell-z", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "belt", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "bezier-curve", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "bicycle", + "content": "", + "style": "outline", + "tags": "bikers,bicycling,cyclists,transit,transportation,commuter,exercises,fitness", + "set_id": 1 + }, + { + "name": "binary", + "content": "", + "style": "outline", + "tags": "*new*,digital,0,1,programming,coding,executable", + "set_id": 1 + }, + { + "name": "binoculars", + "content": "", + "style": "outline", + "tags": "telescope,glasses,search,find,explore", + "set_id": 1 + }, + { + "name": "biohazard", + "content": "", + "style": "outline", + "tags": "*new*,contamination,quarantine,toxic,poison,danger,caution", + "set_id": 1 + }, + { + "name": "bird", + "content": "", + "style": "outline", + "tags": "*updated*,animals,pets", + "set_id": 1 + }, + { + "name": "blueprint", + "content": "", + "style": "outline", + "tags": "*new*,architecture,layout,floorplan,building,construction", + "set_id": 1 + }, + { + "name": "bluetooth", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-connected", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-slash", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,disabled", + "set_id": 1 + }, + { + "name": "bluetooth-x", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "boat", + "content": "", + "style": "outline", + "tags": "ferry,ship,cruise,vehicles,public transit,transportation,commuter,traveling,sailing,places,locations", + "set_id": 1 + }, + { + "name": "bomb", + "content": "", + "style": "outline", + "tags": "*new*,gaming,grenade,explosive,war,weapon,fuse", + "set_id": 1 + }, + { + "name": "bone", + "content": "", + "style": "outline", + "tags": "dogbone", + "set_id": 1 + }, + { + "name": "book", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-bookmark", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library,favorites,favorited", + "set_id": 1 + }, + { + "name": "book-open", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-text", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-user", + "content": "", + "style": "outline", + "tags": "*new*,reading,reader,easy read,library,places,locations", + "set_id": 1 + }, + { + "name": "bookmark", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmark-simple", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-simple", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "books", + "content": "", + "style": "outline", + "tags": "reading,reader,bookshelf,library,places,locations", + "set_id": 1 + }, + { + "name": "boot", + "content": "", + "style": "outline", + "tags": "hiking,shoes,sports,exercise", + "set_id": 1 + }, + { + "name": "boules", + "content": "", + "style": "outline", + "tags": "*new*,balls,sports,pétanque,raffa,bocce,boule lyonnaise,lawn bowls", + "set_id": 1 + }, + { + "name": "bounding-box", + "content": "", + "style": "outline", + "tags": "polygon,shapes,outline,corners,rectangle", + "set_id": 1 + }, + { + "name": "bowl-food", + "content": "", + "style": "outline", + "tags": "ramen,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowl-steam", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowling-ball", + "content": "", + "style": "outline", + "tags": "*new*,sports,alley", + "set_id": 1 + }, + { + "name": "box-arrow-down", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "box-arrow-up", + "content": "", + "style": "outline", + "tags": "*new*,unarchive,archival,upload", + "set_id": 1 + }, + { + "name": "boxing-glove", + "content": "", + "style": "outline", + "tags": "*new*,sports,combat,martial arts,fight,gym", + "set_id": 1 + }, + { + "name": "brackets-angle", + "content": "", + "style": "outline", + "tags": "code,angle brackets,angle braces", + "set_id": 1 + }, + { + "name": "brackets-curly", + "content": "", + "style": "outline", + "tags": "code,curly brackets,curly braces", + "set_id": 1 + }, + { + "name": "brackets-round", + "content": "", + "style": "outline", + "tags": "code,parentheses,round brackets,round braces", + "set_id": 1 + }, + { + "name": "brackets-square", + "content": "", + "style": "outline", + "tags": "code,square brackets,square braces,array", + "set_id": 1 + }, + { + "name": "brain", + "content": "", + "style": "outline", + "tags": "mind,mental", + "set_id": 1 + }, + { + "name": "brandy", + "content": "", + "style": "outline", + "tags": "drinks,beverages,whiskey,cocktail,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "bread", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,bakery,sandwich,gluten,loaf,toast,slice", + "set_id": 1 + }, + { + "name": "bridge", + "content": "", + "style": "outline", + "tags": "travel,transportation,infrastucture", + "set_id": 1 + }, + { + "name": "briefcase", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "briefcase-metal", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "broadcast", + "content": "", + "style": "outline", + "tags": "radio,hotspot,wifi,emit", + "set_id": 1 + }, + { + "name": "broom", + "content": "", + "style": "outline", + "tags": "sweeping,cleaning", + "set_id": 1 + }, + { + "name": "browser", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "browsers", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "bug", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-beetle", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-droid", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,android,google", + "set_id": 1 + }, + { + "name": "building", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "building-apartment", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,buildings", + "set_id": 1 + }, + { + "name": "building-office", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "buildings", + "content": "", + "style": "outline", + "tags": "places,locations,company,business", + "set_id": 1 + }, + { + "name": "bulldozer", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,construction,earth mover,dig,digger", + "set_id": 1 + }, + { + "name": "bus", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "butterfly", + "content": "", + "style": "outline", + "tags": "animals,insects,moth", + "set_id": 1 + }, + { + "name": "cable-car", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,gondola,skiing,mountains,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "cactus", + "content": "", + "style": "outline", + "tags": "*updated*,plants,cacti,desert,western", + "set_id": 1 + }, + { + "name": "cake", + "content": "", + "style": "outline", + "tags": "dessert,birthday,celebration,event", + "set_id": 1 + }, + { + "name": "calculator", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "calendar", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,12", + "set_id": 1 + }, + { + "name": "calendar-blank", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,none", + "set_id": 1 + }, + { + "name": "calendar-check", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,todo,checklist", + "set_id": 1 + }, + { + "name": "calendar-dot", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,today", + "set_id": 1 + }, + { + "name": "calendar-dots", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule", + "set_id": 1 + }, + { + "name": "calendar-heart", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-minus", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete", + "set_id": 1 + }, + { + "name": "calendar-plus", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,add", + "set_id": 1 + }, + { + "name": "calendar-slash", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete,cancel. unavailable", + "set_id": 1 + }, + { + "name": "calendar-star", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-x", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,closed,cancelled", + "set_id": 1 + }, + { + "name": "call-bell", + "content": "", + "style": "outline", + "tags": "service bell,reception,attendant,concierge bell", + "set_id": 1 + }, + { + "name": "camera", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens", + "set_id": 1 + }, + { + "name": "camera-plus", + "content": "", + "style": "outline", + "tags": "photography,pictures,album,add", + "set_id": 1 + }, + { + "name": "camera-rotate", + "content": "", + "style": "outline", + "tags": "photography,pictures,orientation,portrait,landscape,selfie,flip", + "set_id": 1 + }, + { + "name": "camera-slash", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens,disabled", + "set_id": 1 + }, + { + "name": "campfire", + "content": "", + "style": "outline", + "tags": "camping,flame,bonfire,outdoors", + "set_id": 1 + }, + { + "name": "car", + "content": "", + "style": "outline", + "tags": "*updated*,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-battery", + "content": "", + "style": "outline", + "tags": "*new*,charged,charger,charging,power,voltage,electricity", + "set_id": 1 + }, + { + "name": "car-profile", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-simple", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "cardholder", + "content": "", + "style": "outline", + "tags": "wallet,money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cards", + "content": "", + "style": "outline", + "tags": "card,slides,slideshow,windows,website,webpage,layers", + "set_id": 1 + }, + { + "name": "cards-three", + "content": "", + "style": "outline", + "tags": "*new*,card,slides,slideshow,windows,website,webpage,layers,stack", + "set_id": 1 + }, + { + "name": "caret-circle-double-down", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-left", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-right", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-up", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-down", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-left", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-right", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-down", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-down", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-left", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-right", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-up", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-down", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-left", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-down", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-left", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-right", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-up", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-right", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-down", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "carrot", + "content": "", + "style": "outline", + "tags": "food,vegetable,veggie,groceries,market", + "set_id": 1 + }, + { + "name": "cash-register", + "content": "", + "style": "outline", + "tags": "*new*,retail,point-of-sale,pos,transaction,sales,till", + "set_id": 1 + }, + { + "name": "cassette-tape", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music", + "set_id": 1 + }, + { + "name": "castle-turret", + "content": "", + "style": "outline", + "tags": "*updated*,chess,rook", + "set_id": 1 + }, + { + "name": "cat", + "content": "", + "style": "outline", + "tags": "pets,animals,kitty,kitten", + "set_id": 1 + }, + { + "name": "cell-signal-full", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-high", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-low", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-medium", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-none", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-slash", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,disconnected,disabled,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-x", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,disconnected,errors,service", + "set_id": 1 + }, + { + "name": "cell-tower", + "content": "", + "style": "outline", + "tags": "*new*,wireless,cellular,broadcast,phone,mobile,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "certificate", + "content": "", + "style": "outline", + "tags": "*updated*,awards,certification,degree,diploma", + "set_id": 1 + }, + { + "name": "chair", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "chalkboard", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-simple", + "content": "", + "style": "outline", + "tags": "*updated*,blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-teacher", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,education,school,college,university", + "set_id": 1 + }, + { + "name": "champagne", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,wine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "charging-station", + "content": "", + "style": "outline", + "tags": "ev,charge,fuel,pump", + "set_id": 1 + }, + { + "name": "chart-bar", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-bar-horizontal", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-donut", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-line", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-down", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-up", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-pie", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-pie-slice", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-polar", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-scatter", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "chat", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-dots", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-slash", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-text", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-circle", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-dots", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-slash", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-text", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-dots", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-slash", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-dots", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-slash", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-text", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-text", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-circle", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chats-teardrop", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "check", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-circle", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,round,ok,done", + "set_id": 1 + }, + { + "name": "check-fat", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-square", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "check-square-offset", + "content": "", + "style": "outline", + "tags": "*updated*,todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "checkerboard", + "content": "", + "style": "outline", + "tags": "*new*,crossword", + "set_id": 1 + }, + { + "name": "checks", + "content": "", + "style": "outline", + "tags": "*updated*,todo,task,to-do,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "cheers", + "content": "", + "style": "outline", + "tags": "*new*,glass,drinks,beverages,champagne,toast,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "cheese", + "content": "", + "style": "outline", + "tags": "*new*,dairy,wedge,food,dining", + "set_id": 1 + }, + { + "name": "chef-hat", + "content": "", + "style": "outline", + "tags": "*new*,cooking,cuisine,kitchen,clothes,clothing", + "set_id": 1 + }, + { + "name": "cherries", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,cherry,groceries,market", + "set_id": 1 + }, + { + "name": "church", + "content": "", + "style": "outline", + "tags": "christ,christianity,cathedral,religion,worship", + "set_id": 1 + }, + { + "name": "cigarette", + "content": "", + "style": "outline", + "tags": "*new*,smoking,tobacco", + "set_id": 1 + }, + { + "name": "cigarette-slash", + "content": "", + "style": "outline", + "tags": "*new*,non-smoking,tobacco", + "set_id": 1 + }, + { + "name": "circle", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-dashed", + "content": "", + "style": "outline", + "tags": "missing,round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-half", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-half-tilt", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-notch", + "content": "", + "style": "outline", + "tags": "round,shapes,loading,loader,spinner,waiting,progress", + "set_id": 1 + }, + { + "name": "circles-four", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,4", + "set_id": 1 + }, + { + "name": "circles-three", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,asana", + "set_id": 1 + }, + { + "name": "circles-three-plus", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,+", + "set_id": 1 + }, + { + "name": "circuitry", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit,electronics,motherboard", + "set_id": 1 + }, + { + "name": "city", + "content": "", + "style": "outline", + "tags": "*new*,skyline,skyscrapers,places,locations,buildings", + "set_id": 1 + }, + { + "name": "clipboard", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clipboard-text", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clock", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-afternoon", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-clockwise", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,restore,fast forward,update", + "set_id": 1 + }, + { + "name": "clock-countdown", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-counter-clockwise", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,backup,rewind,history", + "set_id": 1 + }, + { + "name": "clock-user", + "content": "", + "style": "outline", + "tags": "*new*,times,timer,shift,schedule,events,watch", + "set_id": 1 + }, + { + "name": "closed-captioning", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "cloud", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,meteorology,cloudy,overcast", + "set_id": 1 + }, + { + "name": "cloud-arrow-down", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,download", + "set_id": 1 + }, + { + "name": "cloud-arrow-up", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,upload", + "set_id": 1 + }, + { + "name": "cloud-check", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,synchronized", + "set_id": 1 + }, + { + "name": "cloud-fog", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,foggy,mist,haze", + "set_id": 1 + }, + { + "name": "cloud-lightning", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,stormy,thunderstorm", + "set_id": 1 + }, + { + "name": "cloud-moon", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,night,evening", + "set_id": 1 + }, + { + "name": "cloud-rain", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,rainy,raining,stormy,rainstorm", + "set_id": 1 + }, + { + "name": "cloud-slash", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,disabled", + "set_id": 1 + }, + { + "name": "cloud-snow", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,snowy,snowing,stormy,snowstorm", + "set_id": 1 + }, + { + "name": "cloud-sun", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,partly sunny", + "set_id": 1 + }, + { + "name": "cloud-warning", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "cloud-x", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "clover", + "content": "", + "style": "outline", + "tags": "*new*,four leaf clover,plants,luck,lucky,irish", + "set_id": 1 + }, + { + "name": "club", + "content": "", + "style": "outline", + "tags": "clubs,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "coat-hanger", + "content": "", + "style": "outline", + "tags": "clothing,clothes,closet", + "set_id": 1 + }, + { + "name": "coda-logo", + "content": "", + "style": "outline", + "tags": "project management,productivity,documentation,wiki,logos", + "set_id": 1 + }, + { + "name": "code", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-block", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-simple", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "codepen-logo", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "codesandbox-logo", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "coffee", + "content": "", + "style": "outline", + "tags": "tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coffee-bean", + "content": "", + "style": "outline", + "tags": "*new*,tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coin", + "content": "", + "style": "outline", + "tags": "coins,cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coin-vertical", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coins", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "columns", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "columns-plus-left", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "columns-plus-right", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,append,insert", + "set_id": 1 + }, + { + "name": "command", + "content": "", + "style": "outline", + "tags": "apple,keyboard,shortcut,modifier,looped square,bowen knot,saint john's arms", + "set_id": 1 + }, + { + "name": "compass", + "content": "", + "style": "outline", + "tags": "navigation,directions,maps,safari,apple", + "set_id": 1 + }, + { + "name": "compass-rose", + "content": "", + "style": "outline", + "tags": "*new*,navigation,directions,maps,cardinal,cartography", + "set_id": 1 + }, + { + "name": "compass-tool", + "content": "", + "style": "outline", + "tags": "drawing,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "computer-tower", + "content": "", + "style": "outline", + "tags": "desktop,pc,imac", + "set_id": 1 + }, + { + "name": "confetti", + "content": "", + "style": "outline", + "tags": "tada,party,emoji", + "set_id": 1 + }, + { + "name": "contactless-payment", + "content": "", + "style": "outline", + "tags": "purchase,credit card,nfc", + "set_id": 1 + }, + { + "name": "control", + "content": "", + "style": "outline", + "tags": "ctrl,key,keyboard,shortcut,caret", + "set_id": 1 + }, + { + "name": "cookie", + "content": "", + "style": "outline", + "tags": "privacy,dessert,food,dining", + "set_id": 1 + }, + { + "name": "cooking-pot", + "content": "", + "style": "outline", + "tags": "stew,kitchen,steaming,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "copy", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copy-simple", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copyleft", + "content": "", + "style": "outline", + "tags": "🄯,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "copyright", + "content": "", + "style": "outline", + "tags": "©,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "corners-in", + "content": "", + "style": "outline", + "tags": "*updated*,collapse,windowed,minimized", + "set_id": 1 + }, + { + "name": "corners-out", + "content": "", + "style": "outline", + "tags": "*updated*,expand,fullscreen,maximized", + "set_id": 1 + }, + { + "name": "couch", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "court-basketball", + "content": "", + "style": "outline", + "tags": "*new*,sports,nba", + "set_id": 1 + }, + { + "name": "cow", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,beef,bull,milk,dairy", + "set_id": 1 + }, + { + "name": "cowboy-hat", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,stetson", + "set_id": 1 + }, + { + "name": "cpu", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "crane", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "crane-tower", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "credit-card", + "content": "", + "style": "outline", + "tags": "debit,visa,mastercard,money,payment,paying,purchase,swipe", + "set_id": 1 + }, + { + "name": "cricket", + "content": "", + "style": "outline", + "tags": "*new*,sports,ball,bat", + "set_id": 1 + }, + { + "name": "crop", + "content": "", + "style": "outline", + "tags": "photography,clip,screenshots", + "set_id": 1 + }, + { + "name": "cross", + "content": "", + "style": "outline", + "tags": "dagger,crucifix,christ,christianity,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "crosshair", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crosshair-simple", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crown", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-cross", + "content": "", + "style": "outline", + "tags": "*new*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-simple", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "cube", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks", + "set_id": 1 + }, + { + "name": "cube-focus", + "content": "", + "style": "outline", + "tags": "augmented reality,ar,virual reality,vr,3d,scan", + "set_id": 1 + }, + { + "name": "cube-transparent", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks,necker", + "set_id": 1 + }, + { + "name": "currency-btc", + "content": "", + "style": "outline", + "tags": "money,btc,bitcoin,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-circle-dollar", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-cny", + "content": "", + "style": "outline", + "tags": "money,yuan,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-simple", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eth", + "content": "", + "style": "outline", + "tags": "money,ethereum,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eur", + "content": "", + "style": "outline", + "tags": "money,euros,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-gbp", + "content": "", + "style": "outline", + "tags": "money,pounds sterling,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-inr", + "content": "", + "style": "outline", + "tags": "money,rupees,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-jpy", + "content": "", + "style": "outline", + "tags": "money,yen,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-krw", + "content": "", + "style": "outline", + "tags": "money,won,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-kzt", + "content": "", + "style": "outline", + "tags": "money,kazakhstan,tenge,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-ngn", + "content": "", + "style": "outline", + "tags": "money,nigeria,naira,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-rub", + "content": "", + "style": "outline", + "tags": "money,rubles,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cursor", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse,click", + "set_id": 1 + }, + { + "name": "cursor-click", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse", + "set_id": 1 + }, + { + "name": "cursor-text", + "content": "", + "style": "outline", + "tags": "i-beam,input,select", + "set_id": 1 + }, + { + "name": "cylinder", + "content": "", + "style": "outline", + "tags": "shapes,tube", + "set_id": 1 + }, + { + "name": "database", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "desk", + "content": "", + "style": "outline", + "tags": "*new*,furniture,workspace,table", + "set_id": 1 + }, + { + "name": "desktop", + "content": "", + "style": "outline", + "tags": "computer,pc,imac,tower", + "set_id": 1 + }, + { + "name": "desktop-tower", + "content": "", + "style": "outline", + "tags": "*updated*,computer,pc,imac", + "set_id": 1 + }, + { + "name": "detective", + "content": "", + "style": "outline", + "tags": "incognito,police,law enforcement,spy,secret", + "set_id": 1 + }, + { + "name": "dev-to-logo", + "content": "", + "style": "outline", + "tags": "reading,writing,social media,logos", + "set_id": 1 + }, + { + "name": "device-mobile", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-camera", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-slash", + "content": "", + "style": "outline", + "tags": "*new*,cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-speaker", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-rotate", + "content": "", + "style": "outline", + "tags": "*new*,orientation,landscape,portrait,spin,flip", + "set_id": 1 + }, + { + "name": "device-tablet", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-camera", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-speaker", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "devices", + "content": "", + "style": "outline", + "tags": "responsive,cellphone,cellular,tablet,destop", + "set_id": 1 + }, + { + "name": "diamond", + "content": "", + "style": "outline", + "tags": "rectangle,shapes,polygons,diamonds,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "diamonds-four", + "content": "", + "style": "outline", + "tags": "shapes,grid,component", + "set_id": 1 + }, + { + "name": "dice-five", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,5", + "set_id": 1 + }, + { + "name": "dice-four", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,4", + "set_id": 1 + }, + { + "name": "dice-one", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,1", + "set_id": 1 + }, + { + "name": "dice-six", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,6", + "set_id": 1 + }, + { + "name": "dice-three", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,3", + "set_id": 1 + }, + { + "name": "dice-two", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,2", + "set_id": 1 + }, + { + "name": "disc", + "content": "", + "style": "outline", + "tags": "cd-rom,compact disk,album,record", + "set_id": 1 + }, + { + "name": "disco-ball", + "content": "", + "style": "outline", + "tags": "*new*,danging,club,70s", + "set_id": 1 + }, + { + "name": "discord-logo", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging,chat", + "set_id": 1 + }, + { + "name": "divide", + "content": "", + "style": "outline", + "tags": "division,divisor,dividend,quotient,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "dna", + "content": "", + "style": "outline", + "tags": "double helix,gene,genetics", + "set_id": 1 + }, + { + "name": "dog", + "content": "", + "style": "outline", + "tags": "pets,animals,puppy", + "set_id": 1 + }, + { + "name": "door", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "door-open", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "dot", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dot-outline", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dots-nine", + "content": "", + "style": "outline", + "tags": "grid,circles,shapes,polygons,9", + "set_id": 1 + }, + { + "name": "dots-six", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-six-vertical", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-three", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-vertical", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-vertical", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-vertical", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "download", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk", + "set_id": 1 + }, + { + "name": "download-simple", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk,import", + "set_id": 1 + }, + { + "name": "dress", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "dresser", + "content": "", + "style": "outline", + "tags": "*new*,furniture,bedroom,storage,drawers,wardrobe", + "set_id": 1 + }, + { + "name": "dribbble-logo", + "content": "", + "style": "outline", + "tags": "logos,round,basketball,sports,design", + "set_id": 1 + }, + { + "name": "drone", + "content": "", + "style": "outline", + "tags": "*new*,aerial,uav,photography,remote", + "set_id": 1 + }, + { + "name": "drop", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,raining,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-half", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-half-bottom", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-simple", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-slash", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur,disabled", + "set_id": 1 + }, + { + "name": "dropbox-logo", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "ear", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound", + "set_id": 1 + }, + { + "name": "ear-slash", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound,mute,accessible", + "set_id": 1 + }, + { + "name": "egg", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch", + "set_id": 1 + }, + { + "name": "egg-crack", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch,break", + "set_id": 1 + }, + { + "name": "eject", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "eject-simple", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "elevator", + "content": "", + "style": "outline", + "tags": "lift", + "set_id": 1 + }, + { + "name": "empty", + "content": "", + "style": "outline", + "tags": "*new*,∅,empty set,member,mathematics,arithmetic,calculator,null", + "set_id": 1 + }, + { + "name": "engine", + "content": "", + "style": "outline", + "tags": "*updated*,motor,repair,vehicles,automobile", + "set_id": 1 + }, + { + "name": "envelope", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-open", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-open", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "equalizer", + "content": "", + "style": "outline", + "tags": "music,audio,meter,volume,spectrum,eq,deezer", + "set_id": 1 + }, + { + "name": "equals", + "content": "", + "style": "outline", + "tags": "=,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "eraser", + "content": "", + "style": "outline", + "tags": "write,writing,editing,undo,deleted", + "set_id": 1 + }, + { + "name": "escalator-down", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "escalator-up", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "exam", + "content": "", + "style": "outline", + "tags": "text,examination,paper,school,grade", + "set_id": 1 + }, + { + "name": "exclamation-mark", + "content": "", + "style": "outline", + "tags": "*new*,!,alert,warning,caution,interjection,punctuation,symbol", + "set_id": 1 + }, + { + "name": "exclude", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "exclude-square", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "export", + "content": "", + "style": "outline", + "tags": "share,send to,arrows", + "set_id": 1 + }, + { + "name": "eye", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view", + "set_id": 1 + }, + { + "name": "eye-closed", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,private", + "set_id": 1 + }, + { + "name": "eye-slash", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,eyelashes,disabled,private", + "set_id": 1 + }, + { + "name": "eyedropper", + "content": "", + "style": "outline", + "tags": "colors,color picker,sample,arts", + "set_id": 1 + }, + { + "name": "eyedropper-sample", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "eyeglasses", + "content": "", + "style": "outline", + "tags": "vision,spectacles", + "set_id": 1 + }, + { + "name": "eyes", + "content": "", + "style": "outline", + "tags": "*new*,look,glance", + "set_id": 1 + }, + { + "name": "face-mask", + "content": "", + "style": "outline", + "tags": "ppe,facemask,covid-19,coronavirus,flu,cold", + "set_id": 1 + }, + { + "name": "facebook-logo", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "factory", + "content": "", + "style": "outline", + "tags": "industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "faders", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "faders-horizontal", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "fallout-shelter", + "content": "", + "style": "outline", + "tags": "*new*,radiation,radioactive,nuclear,bunker,contamination,quarantine,toxic,danger,caution", + "set_id": 1 + }, + { + "name": "fan", + "content": "", + "style": "outline", + "tags": "desk fan,air conditioning", + "set_id": 1 + }, + { + "name": "farm", + "content": "", + "style": "outline", + "tags": "*new*,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "fast-forward", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "fast-forward-circle", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "feather", + "content": "", + "style": "outline", + "tags": "bird", + "set_id": 1 + }, + { + "name": "fediverse-logo", + "content": "", + "style": "outline", + "tags": "*new*,social media,decentralized", + "set_id": 1 + }, + { + "name": "figma-logo", + "content": "", + "style": "outline", + "tags": "*updated*,logos,drawing,art,illustration,ui,interface,prototype,prototyping", + "set_id": 1 + }, + { + "name": "file", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,page", + "set_id": 1 + }, + { + "name": "file-archive", + "content": "", + "style": "outline", + "tags": "documents,zip,compression", + "set_id": 1 + }, + { + "name": "file-arrow-down", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,download,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-arrow-up", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,upload,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-audio", + "content": "", + "style": "outline", + "tags": "documents,music,sound", + "set_id": 1 + }, + { + "name": "file-c", + "content": "", + "style": "outline", + "tags": "*new*,documents,code", + "set_id": 1 + }, + { + "name": "file-c-sharp", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c#", + "set_id": 1 + }, + { + "name": "file-cloud", + "content": "", + "style": "outline", + "tags": "documents,sync", + "set_id": 1 + }, + { + "name": "file-code", + "content": "", + "style": "outline", + "tags": "documents", + "set_id": 1 + }, + { + "name": "file-cpp", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c++", + "set_id": 1 + }, + { + "name": "file-css", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-csv", + "content": "", + "style": "outline", + "tags": "documents,data", + "set_id": 1 + }, + { + "name": "file-dashed", + "content": "", + "style": "outline", + "tags": "documents,files,browse,draft,open,dotted", + "set_id": 1 + }, + { + "name": "file-doc", + "content": "", + "style": "outline", + "tags": "documents,word,microsoft", + "set_id": 1 + }, + { + "name": "file-html", + "content": "", + "style": "outline", + "tags": "*updated*,documents,code", + "set_id": 1 + }, + { + "name": "file-image", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ini", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-jpg", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph,jpeg", + "set_id": 1 + }, + { + "name": "file-js", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-jsx", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-lock", + "content": "", + "style": "outline", + "tags": "documents,secure,locked,private", + "set_id": 1 + }, + { + "name": "file-magnifying-glass", + "content": "", + "style": "outline", + "tags": "documents,files,search,find,locate,browse,missing", + "set_id": 1 + }, + { + "name": "file-md", + "content": "", + "style": "outline", + "tags": "*new*,documents,notes,markdown", + "set_id": 1 + }, + { + "name": "file-minus", + "content": "", + "style": "outline", + "tags": "documents,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "file-pdf", + "content": "", + "style": "outline", + "tags": "documents,files,acrobat", + "set_id": 1 + }, + { + "name": "file-plus", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "file-png", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ppt", + "content": "", + "style": "outline", + "tags": "documents,powerpoint,microsoft", + "set_id": 1 + }, + { + "name": "file-py", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,python", + "set_id": 1 + }, + { + "name": "file-rs", + "content": "", + "style": "outline", + "tags": "documents,code,rust", + "set_id": 1 + }, + { + "name": "file-sql", + "content": "", + "style": "outline", + "tags": "documents,database", + "set_id": 1 + }, + { + "name": "file-svg", + "content": "", + "style": "outline", + "tags": "documents,images,vector", + "set_id": 1 + }, + { + "name": "file-text", + "content": "", + "style": "outline", + "tags": "documents,files,save,write", + "set_id": 1 + }, + { + "name": "file-ts", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-tsx", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-txt", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-video", + "content": "", + "style": "outline", + "tags": "documents,movie", + "set_id": 1 + }, + { + "name": "file-vue", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-x", + "content": "", + "style": "outline", + "tags": "documents,files,cancelled,deleted,removed,errors", + "set_id": 1 + }, + { + "name": "file-xls", + "content": "", + "style": "outline", + "tags": "documents,excel,microsoft", + "set_id": 1 + }, + { + "name": "file-zip", + "content": "", + "style": "outline", + "tags": "documents,archive,compression", + "set_id": 1 + }, + { + "name": "files", + "content": "", + "style": "outline", + "tags": "documents,open,library", + "set_id": 1 + }, + { + "name": "film-reel", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "film-script", + "content": "", + "style": "outline", + "tags": "screenplay,movie", + "set_id": 1 + }, + { + "name": "film-slate", + "content": "", + "style": "outline", + "tags": "*updated*,clapper,movie", + "set_id": 1 + }, + { + "name": "film-strip", + "content": "", + "style": "outline", + "tags": "camera,photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "fingerprint", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "fingerprint-simple", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "finn-the-human", + "content": "", + "style": "outline", + "tags": "adventure time,cartoons,television,tv,character", + "set_id": 1 + }, + { + "name": "fire", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-extinguisher", + "content": "", + "style": "outline", + "tags": "safety,prevention,emergency,hazard,danger,caution", + "set_id": 1 + }, + { + "name": "fire-simple", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-truck", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,firefighter", + "set_id": 1 + }, + { + "name": "first-aid", + "content": "", + "style": "outline", + "tags": "hospital,cross,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "first-aid-kit", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "fish", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "fish-simple", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "flag", + "content": "", + "style": "outline", + "tags": "country,countries,finished,completed,flags", + "set_id": 1 + }, + { + "name": "flag-banner", + "content": "", + "style": "outline", + "tags": "ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-banner-fold", + "content": "", + "style": "outline", + "tags": "*new*,ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-checkered", + "content": "", + "style": "outline", + "tags": "flags,race,racing,finish line", + "set_id": 1 + }, + { + "name": "flag-pennant", + "content": "", + "style": "outline", + "tags": "flags,race,sports,team", + "set_id": 1 + }, + { + "name": "flame", + "content": "", + "style": "outline", + "tags": "fire,burning,match,lighter", + "set_id": 1 + }, + { + "name": "flashlight", + "content": "", + "style": "outline", + "tags": "torch,find,search,locate", + "set_id": 1 + }, + { + "name": "flask", + "content": "", + "style": "outline", + "tags": "beaker,science,chemistry,experiment,erlenmeyer", + "set_id": 1 + }, + { + "name": "flip-horizontal", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "flip-vertical", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "floppy-disk", + "content": "", + "style": "outline", + "tags": "diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "floppy-disk-back", + "content": "", + "style": "outline", + "tags": "*updated*,diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "flow-arrow", + "content": "", + "style": "outline", + "tags": "*updated*,flowchart,arrowhead", + "set_id": 1 + }, + { + "name": "flower", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flower-lotus", + "content": "", + "style": "outline", + "tags": "plants,green,environmental,spirituality", + "set_id": 1 + }, + { + "name": "flower-tulip", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flying-saucer", + "content": "", + "style": "outline", + "tags": "ufo,space,aliens,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "folder", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-dashed", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-lock", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-minus", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-open", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,load", + "set_id": 1 + }, + { + "name": "folder-plus", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-simple-dashed", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-simple-lock", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-simple-minus", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-simple-plus", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-star", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-simple-user", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folder-star", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-user", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folders", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,copy,copied,duplicated", + "set_id": 1 + }, + { + "name": "football", + "content": "", + "style": "outline", + "tags": "sports,american football,nfl", + "set_id": 1 + }, + { + "name": "football-helmet", + "content": "", + "style": "outline", + "tags": "*new*,sports,american football,nfl", + "set_id": 1 + }, + { + "name": "footprints", + "content": "", + "style": "outline", + "tags": "path,trail,walk,route,hike,hiking", + "set_id": 1 + }, + { + "name": "fork-knife", + "content": "", + "style": "outline", + "tags": "food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "four-k", + "content": "", + "style": "outline", + "tags": "*new*,uhd,resolution,video", + "set_id": 1 + }, + { + "name": "frame-corners", + "content": "", + "style": "outline", + "tags": "expand,fullscreen,maximized,resize,windowed,capture", + "set_id": 1 + }, + { + "name": "framer-logo", + "content": "", + "style": "outline", + "tags": "logos,interface,ui,motion,prototype,prototyping", + "set_id": 1 + }, + { + "name": "function", + "content": "", + "style": "outline", + "tags": "mathematics,arithmetic,f-stop", + "set_id": 1 + }, + { + "name": "funnel", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-x", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-x", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "game-controller", + "content": "", + "style": "outline", + "tags": "gaming,video games,nintendo switch,sony playstation,microsoft xbox", + "set_id": 1 + }, + { + "name": "garage", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,buildings,transportation", + "set_id": 1 + }, + { + "name": "gas-can", + "content": "", + "style": "outline", + "tags": "jerrycan,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gas-pump", + "content": "", + "style": "outline", + "tags": "gas station,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gauge", + "content": "", + "style": "outline", + "tags": "dashboard,meter,speed,speedometer,odometer,performance", + "set_id": 1 + }, + { + "name": "gavel", + "content": "", + "style": "outline", + "tags": "judge,justice,legal,law,court,hammer,government", + "set_id": 1 + }, + { + "name": "gear", + "content": "", + "style": "outline", + "tags": "8,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-fine", + "content": "", + "style": "outline", + "tags": "setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-six", + "content": "", + "style": "outline", + "tags": "6,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gender-female", + "content": "", + "style": "outline", + "tags": "woman,feminine,venus", + "set_id": 1 + }, + { + "name": "gender-intersex", + "content": "", + "style": "outline", + "tags": "transgender,non-binary", + "set_id": 1 + }, + { + "name": "gender-male", + "content": "", + "style": "outline", + "tags": "man,masculine,mars", + "set_id": 1 + }, + { + "name": "gender-neuter", + "content": "", + "style": "outline", + "tags": "agender,non-binary,asexual", + "set_id": 1 + }, + { + "name": "gender-nonbinary", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "gender-transgender", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "ghost", + "content": "", + "style": "outline", + "tags": "pac-man,spirit,scary,halloween", + "set_id": 1 + }, + { + "name": "gif", + "content": "", + "style": "outline", + "tags": "gifs,.gif,giphy", + "set_id": 1 + }, + { + "name": "gift", + "content": "", + "style": "outline", + "tags": "presents,holiday,birthday", + "set_id": 1 + }, + { + "name": "git-branch", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "git-commit", + "content": "", + "style": "outline", + "tags": "github,vcs,source control,version control,versioning,commits", + "set_id": 1 + }, + { + "name": "git-diff", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,difference,compare", + "set_id": 1 + }, + { + "name": "git-fork", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-merge", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-pull-request", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,merge request", + "set_id": 1 + }, + { + "name": "github-logo", + "content": "", + "style": "outline", + "tags": "octocat,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-simple", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "globe", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-hemisphere-east", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,europe,africa,asia,australia", + "set_id": 1 + }, + { + "name": "globe-hemisphere-west", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,north america,south america", + "set_id": 1 + }, + { + "name": "globe-simple", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-simple-x", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-stand", + "content": "", + "style": "outline", + "tags": "world,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-x", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "goggles", + "content": "", + "style": "outline", + "tags": "swim,swimming,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "golf", + "content": "", + "style": "outline", + "tags": "*new*,sports,pga,tee,ball", + "set_id": 1 + }, + { + "name": "goodreads-logo", + "content": "", + "style": "outline", + "tags": "*updated*,reading,books,social media,logos", + "set_id": 1 + }, + { + "name": "google-cardboard-logo", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,logos", + "set_id": 1 + }, + { + "name": "google-chrome-logo", + "content": "", + "style": "outline", + "tags": "web browsers,internet", + "set_id": 1 + }, + { + "name": "google-drive-logo", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "google-logo", + "content": "", + "style": "outline", + "tags": "logos,search engine,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-photos-logo", + "content": "", + "style": "outline", + "tags": "album,pictures,photography", + "set_id": 1 + }, + { + "name": "google-play-logo", + "content": "", + "style": "outline", + "tags": "logos,games,apps,applications,play store,app store,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-podcasts-logo", + "content": "", + "style": "outline", + "tags": "audio", + "set_id": 1 + }, + { + "name": "gps", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-fix", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-slash", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation,disabled", + "set_id": 1 + }, + { + "name": "gradient", + "content": "", + "style": "outline", + "tags": "fade,ombre,opacity", + "set_id": 1 + }, + { + "name": "graduation-cap", + "content": "", + "style": "outline", + "tags": "classroom,teacher,education,school,college,university,degree,graduate,hat", + "set_id": 1 + }, + { + "name": "grains", + "content": "", + "style": "outline", + "tags": "wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "grains-slash", + "content": "", + "style": "outline", + "tags": "gluten-free,wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "graph", + "content": "", + "style": "outline", + "tags": "nodes,tree", + "set_id": 1 + }, + { + "name": "graphics-card", + "content": "", + "style": "outline", + "tags": "*new*,graphics card,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "greater-than", + "content": "", + "style": "outline", + "tags": "*new*,>,greater than,gt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "greater-than-or-equal", + "content": "", + "style": "outline", + "tags": "*new*,≥,greater than or equal,gte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "grid-four", + "content": "", + "style": "outline", + "tags": "4,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "grid-nine", + "content": "", + "style": "outline", + "tags": "9,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "guitar", + "content": "", + "style": "outline", + "tags": "music,instrument", + "set_id": 1 + }, + { + "name": "hair-dryer", + "content": "", + "style": "outline", + "tags": "*new*,blow dryer,beauty,grooming,salon", + "set_id": 1 + }, + { + "name": "hamburger", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "hammer", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "hand", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,backhand", + "set_id": 1 + }, + { + "name": "hand-arrow-down", + "content": "", + "style": "outline", + "tags": "*new*,take,receive,remove,withdraw,emoji", + "set_id": 1 + }, + { + "name": "hand-arrow-up", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,deposit,donation,emoji", + "set_id": 1 + }, + { + "name": "hand-coins", + "content": "", + "style": "outline", + "tags": "donation,payment,money,paying,purchase", + "set_id": 1 + }, + { + "name": "hand-deposit", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,donation,atm,emoji", + "set_id": 1 + }, + { + "name": "hand-eye", + "content": "", + "style": "outline", + "tags": "*updated*,emoji,hamsa,evil eye", + "set_id": 1 + }, + { + "name": "hand-fist", + "content": "", + "style": "outline", + "tags": "emoji,power,protest,blm", + "set_id": 1 + }, + { + "name": "hand-grabbing", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,drag,hold", + "set_id": 1 + }, + { + "name": "hand-heart", + "content": "", + "style": "outline", + "tags": "donation,care,emoji", + "set_id": 1 + }, + { + "name": "hand-palm", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,palm,stop,wait,hamsa,5", + "set_id": 1 + }, + { + "name": "hand-peace", + "content": "", + "style": "outline", + "tags": "*new*,emoji,victory", + "set_id": 1 + }, + { + "name": "hand-pointing", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,fingers,clicks,mouse", + "set_id": 1 + }, + { + "name": "hand-soap", + "content": "", + "style": "outline", + "tags": "dispenser,pump,sanitizer,disinfectant,lotion,bottle", + "set_id": 1 + }, + { + "name": "hand-swipe-left", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-swipe-right", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-tap", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-waving", + "content": "", + "style": "outline", + "tags": "emoji,palm,wave,hello,goodbye", + "set_id": 1 + }, + { + "name": "hand-withdraw", + "content": "", + "style": "outline", + "tags": "*new*,take,remove,withdrawal,atm,emoji", + "set_id": 1 + }, + { + "name": "handbag", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "handbag-simple", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "hands-clapping", + "content": "", + "style": "outline", + "tags": "emoji,clap,applause", + "set_id": 1 + }, + { + "name": "hands-praying", + "content": "", + "style": "outline", + "tags": "emoji,religion,worship,prayer,thanks,thank you", + "set_id": 1 + }, + { + "name": "handshake", + "content": "", + "style": "outline", + "tags": "emoji,deal,agreement", + "set_id": 1 + }, + { + "name": "hard-drive", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-drives", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-hat", + "content": "", + "style": "outline", + "tags": "*new*,safety,construction,industry,helmet,ppe", + "set_id": 1 + }, + { + "name": "hash", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "hash-straight", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "head-circuit", + "content": "", + "style": "outline", + "tags": "*new*,automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "headlights", + "content": "", + "style": "outline", + "tags": "brights,high beams", + "set_id": 1 + }, + { + "name": "headphones", + "content": "", + "style": "outline", + "tags": "music,audio,listening", + "set_id": 1 + }, + { + "name": "headset", + "content": "", + "style": "outline", + "tags": "music,audio,listening,gaming,voice chat,microphone,headphones,support,customer-service,call-center", + "set_id": 1 + }, + { + "name": "heart", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-break", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heart-half", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited", + "set_id": 1 + }, + { + "name": "heart-straight", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-straight-break", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heartbeat", + "content": "", + "style": "outline", + "tags": "wellness,healthy,ecg,ekg,vitals,monitor", + "set_id": 1 + }, + { + "name": "hexagon", + "content": "", + "style": "outline", + "tags": "6,shapes,polygons", + "set_id": 1 + }, + { + "name": "high-definition", + "content": "", + "style": "outline", + "tags": "*new*,hd,resolution,video", + "set_id": 1 + }, + { + "name": "high-heel", + "content": "", + "style": "outline", + "tags": "*updated*,pumps,clothes,clothing,shoes", + "set_id": 1 + }, + { + "name": "highlighter", + "content": "", + "style": "outline", + "tags": "*new*,marker,write,writing,editing", + "set_id": 1 + }, + { + "name": "highlighter-circle", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "hockey", + "content": "", + "style": "outline", + "tags": "*new*,sports,nhl,stick,puck", + "set_id": 1 + }, + { + "name": "hoodie", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sweatshirt", + "set_id": 1 + }, + { + "name": "horse", + "content": "", + "style": "outline", + "tags": "animals,equestrian,chess,knight,sports", + "set_id": 1 + }, + { + "name": "hospital", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,medical,medicine,emergency,doctor,buildings", + "set_id": 1 + }, + { + "name": "hourglass", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-high", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-low", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-medium", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-high", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-low", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-medium", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "house", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-line", + "content": "", + "style": "outline", + "tags": "*updated*,homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-simple", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "hurricane", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,cyclone,storm,disaster,wind", + "set_id": 1 + }, + { + "name": "ice-cream", + "content": "", + "style": "outline", + "tags": "food,dessert,cone", + "set_id": 1 + }, + { + "name": "identification-badge", + "content": "", + "style": "outline", + "tags": "license,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "identification-card", + "content": "", + "style": "outline", + "tags": "license,badge,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "image", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "image-broken", + "content": "", + "style": "outline", + "tags": "*new*,pictures,photographs,photography,wallpapers,gallery,landscape,missing,error,404", + "set_id": 1 + }, + { + "name": "image-square", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "images", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "images-square", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "infinity", + "content": "", + "style": "outline", + "tags": "infinite,lemniscate,figure-eight,mathematics,arithmetic,calculator,∞", + "set_id": 1 + }, + { + "name": "info", + "content": "", + "style": "outline", + "tags": "information,help,support", + "set_id": 1 + }, + { + "name": "instagram-logo", + "content": "", + "style": "outline", + "tags": "logos,social media,photography,camera", + "set_id": 1 + }, + { + "name": "intersect", + "content": "", + "style": "outline", + "tags": "round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "intersect-square", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection", + "set_id": 1 + }, + { + "name": "intersect-three", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection,gender,pronouns", + "set_id": 1 + }, + { + "name": "intersection", + "content": "", + "style": "outline", + "tags": "*new*,∩,intersection,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "invoice", + "content": "", + "style": "outline", + "tags": "*new*,receipt,expense,bill", + "set_id": 1 + }, + { + "name": "island", + "content": "", + "style": "outline", + "tags": "*new*,geography,beach,ocean,tropical,palm,vacation,trip,locations,places", + "set_id": 1 + }, + { + "name": "jar", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jar-label", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jeep", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,automobile,suv,cars,trucks,wrangler,off-road,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "joystick", + "content": "", + "style": "outline", + "tags": "*new*,gaming,game controller,video games,arcade game,atari", + "set_id": 1 + }, + { + "name": "kanban", + "content": "", + "style": "outline", + "tags": "scheduling,tasks,project management,process,lean,agile", + "set_id": 1 + }, + { + "name": "key", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "key-return", + "content": "", + "style": "outline", + "tags": "keyboard,enter", + "set_id": 1 + }, + { + "name": "keyboard", + "content": "", + "style": "outline", + "tags": "typing,type,keys,input", + "set_id": 1 + }, + { + "name": "keyhole", + "content": "", + "style": "outline", + "tags": "lock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "knife", + "content": "", + "style": "outline", + "tags": "tools,food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "ladder", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "ladder-simple", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "lamp", + "content": "", + "style": "outline", + "tags": "light,furniture,appliances", + "set_id": 1 + }, + { + "name": "lamp-pendant", + "content": "", + "style": "outline", + "tags": "*new*,light,furniture,appliances", + "set_id": 1 + }, + { + "name": "laptop", + "content": "", + "style": "outline", + "tags": "computer,notebook,pc,macbook", + "set_id": 1 + }, + { + "name": "lasso", + "content": "", + "style": "outline", + "tags": "*new*,select,selection,loop,rope,cowboy", + "set_id": 1 + }, + { + "name": "lastfm-logo", + "content": "", + "style": "outline", + "tags": "*new*,scrobble,music,social media", + "set_id": 1 + }, + { + "name": "layout", + "content": "", + "style": "outline", + "tags": "wireframe,sidebar,ui,interface", + "set_id": 1 + }, + { + "name": "leaf", + "content": "", + "style": "outline", + "tags": "plants,trees,branches,leaves,nodes,green,environmental", + "set_id": 1 + }, + { + "name": "lectern", + "content": "", + "style": "outline", + "tags": "*new*,lecture,podium,pulpit,stand,speech,presentation,keynote", + "set_id": 1 + }, + { + "name": "lego", + "content": "", + "style": "outline", + "tags": "*new*,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "lego-smiley", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "less-than", + "content": "", + "style": "outline", + "tags": "*new*,<,less than,lt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "less-than-or-equal", + "content": "", + "style": "outline", + "tags": "*new*,≤,less than or equal,lte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "letter-circle-h", + "content": "", + "style": "outline", + "tags": "*new*,hospital,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-p", + "content": "", + "style": "outline", + "tags": "*new*,parking lot,valet,vehicles,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-v", + "content": "", + "style": "outline", + "tags": "*new*,vegan,letter,glyph,character", + "set_id": 1 + }, + { + "name": "lifebuoy", + "content": "", + "style": "outline", + "tags": "lifebelt,lifesaver,safety,help,support,nautical,boats,ships", + "set_id": 1 + }, + { + "name": "lightbulb", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lightbulb-filament", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lighthouse", + "content": "", + "style": "outline", + "tags": "buildings,nautical,navigation,boats,ships,safety", + "set_id": 1 + }, + { + "name": "lightning", + "content": "", + "style": "outline", + "tags": "meteorology,stormy,thunderstorm,thunderbolt,charged,charger,charging,power,electricity,flash", + "set_id": 1 + }, + { + "name": "lightning-a", + "content": "", + "style": "outline", + "tags": "flash,auto", + "set_id": 1 + }, + { + "name": "lightning-slash", + "content": "", + "style": "outline", + "tags": "thunderbolt,charged,charger,charging,power,electricity,disabled,flash", + "set_id": 1 + }, + { + "name": "line-segment", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-segments", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-vertical", + "content": "", + "style": "outline", + "tags": "*new*,bar,pipe,|,divider. symbol", + "set_id": 1 + }, + { + "name": "link", + "content": "", + "style": "outline", + "tags": "*updated*,anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-break", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-break", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-horizontal", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-break", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "linkedin-logo", + "content": "", + "style": "outline", + "tags": "logos,jobs,employment,social media", + "set_id": 1 + }, + { + "name": "linktree-logo", + "content": "", + "style": "outline", + "tags": "*new*,social media,links", + "set_id": 1 + }, + { + "name": "linux-logo", + "content": "", + "style": "outline", + "tags": "penguin,computer,animals", + "set_id": 1 + }, + { + "name": "list", + "content": "", + "style": "outline", + "tags": "*updated*,hamburger menu,overflow menu,sidebar,3,ul,ol,unordered list,ordered list,checklist,lines", + "set_id": 1 + }, + { + "name": "list-bullets", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,bulleted list,checklist", + "set_id": 1 + }, + { + "name": "list-checks", + "content": "", + "style": "outline", + "tags": "*updated*,checklist,todo", + "set_id": 1 + }, + { + "name": "list-dashes", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,dashed list,checklist", + "set_id": 1 + }, + { + "name": "list-heart", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "list-magnifying-glass", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "list-numbers", + "content": "", + "style": "outline", + "tags": "*updated*,ol,ordered list,numbered list,checklist", + "set_id": 1 + }, + { + "name": "list-plus", + "content": "", + "style": "outline", + "tags": "*updated*,ul,ol,unordered list,ordered list,checklist,add,+", + "set_id": 1 + }, + { + "name": "list-star", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "lock", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-open", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-laminated", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-laminated-open", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-open", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-simple", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-simple-open", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lockers", + "content": "", + "style": "outline", + "tags": "locker room,gym,storage", + "set_id": 1 + }, + { + "name": "log", + "content": "", + "style": "outline", + "tags": "*new*,tree,stump,stick,branch", + "set_id": 1 + }, + { + "name": "magic-wand", + "content": "", + "style": "outline", + "tags": "selection,wizard,games", + "set_id": 1 + }, + { + "name": "magnet", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnet-straight", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnifying-glass", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "magnifying-glass-minus", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom out,-", + "set_id": 1 + }, + { + "name": "magnifying-glass-plus", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom in,+", + "set_id": 1 + }, + { + "name": "mailbox", + "content": "", + "style": "outline", + "tags": "*new*,email,letters,messaging,post", + "set_id": 1 + }, + { + "name": "map-pin", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-area", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-line", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-plus", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,add,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-area", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-line", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-trifold", + "content": "", + "style": "outline", + "tags": "maps,places,locations,cartography,geography", + "set_id": 1 + }, + { + "name": "markdown-logo", + "content": "", + "style": "outline", + "tags": "*new*,markup,editor,.md", + "set_id": 1 + }, + { + "name": "marker-circle", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "martini", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,cocktails,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "mask-happy", + "content": "", + "style": "outline", + "tags": "theater,costume,smile,smiling,thalia", + "set_id": 1 + }, + { + "name": "mask-sad", + "content": "", + "style": "outline", + "tags": "theater,costume,cry,crying,melpomene", + "set_id": 1 + }, + { + "name": "mastodon-logo", + "content": "", + "style": "outline", + "tags": "*new*,fediverse,social media,decentralized", + "set_id": 1 + }, + { + "name": "math-operations", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,calculator,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "matrix-logo", + "content": "", + "style": "outline", + "tags": "*new*,matrix protocol,brands,logos", + "set_id": 1 + }, + { + "name": "medal", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,rosette", + "set_id": 1 + }, + { + "name": "medal-military", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,military", + "set_id": 1 + }, + { + "name": "medium-logo", + "content": "", + "style": "outline", + "tags": "logos,reading,writing,news,social media", + "set_id": 1 + }, + { + "name": "megaphone", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "megaphone-simple", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "member-of", + "content": "", + "style": "outline", + "tags": "*new*,∈,is element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "memory", + "content": "", + "style": "outline", + "tags": "*new*,ram,microchip,computer,circuit,electronics", + "set_id": 1 + }, + { + "name": "messenger-logo", + "content": "", + "style": "outline", + "tags": "logos,facebook,social media", + "set_id": 1 + }, + { + "name": "meta-logo", + "content": "", + "style": "outline", + "tags": "*updated*,facebook,logos,social media,logos", + "set_id": 1 + }, + { + "name": "meteor", + "content": "", + "style": "outline", + "tags": "*new*,astronomy,asteroid,fireball", + "set_id": 1 + }, + { + "name": "metronome", + "content": "", + "style": "outline", + "tags": "music,beat,tempo,bpm", + "set_id": 1 + }, + { + "name": "microphone", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio", + "set_id": 1 + }, + { + "name": "microphone-slash", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio,muted,disabled", + "set_id": 1 + }, + { + "name": "microphone-stage", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,performance,concert", + "set_id": 1 + }, + { + "name": "microscope", + "content": "", + "style": "outline", + "tags": "*new*,science,biology,experiment,magnify", + "set_id": 1 + }, + { + "name": "microsoft-excel-logo", + "content": "", + "style": "outline", + "tags": "tables,spreadsheets,tabular", + "set_id": 1 + }, + { + "name": "microsoft-outlook-logo", + "content": "", + "style": "outline", + "tags": "email,logos", + "set_id": 1 + }, + { + "name": "microsoft-powerpoint-logo", + "content": "", + "style": "outline", + "tags": "slides,slideshow,presentation", + "set_id": 1 + }, + { + "name": "microsoft-teams-logo", + "content": "", + "style": "outline", + "tags": "chat,video conference", + "set_id": 1 + }, + { + "name": "microsoft-word-logo", + "content": "", + "style": "outline", + "tags": "documents,word processor,doc,docx", + "set_id": 1 + }, + { + "name": "minus", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,line,horizontal,divider", + "set_id": 1 + }, + { + "name": "minus-circle", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,round", + "set_id": 1 + }, + { + "name": "minus-square", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "money", + "content": "", + "style": "outline", + "tags": "cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "money-wavy", + "content": "", + "style": "outline", + "tags": "*new*,cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "monitor", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays", + "set_id": 1 + }, + { + "name": "monitor-arrow-up", + "content": "", + "style": "outline", + "tags": "*new*,screen,screencast,screenshare,upload,video,movie", + "set_id": 1 + }, + { + "name": "monitor-play", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays,screencast,video,movie", + "set_id": 1 + }, + { + "name": "moon", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing", + "set_id": 1 + }, + { + "name": "moon-stars", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing,constellation", + "set_id": 1 + }, + { + "name": "moped", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "moped-front", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "mosque", + "content": "", + "style": "outline", + "tags": "islam,muslim,religion,worship", + "set_id": 1 + }, + { + "name": "motorcycle", + "content": "", + "style": "outline", + "tags": "vehicles,motorbike,transportation,travel", + "set_id": 1 + }, + { + "name": "mountains", + "content": "", + "style": "outline", + "tags": "*updated*,hills,outdoors,terrain,geology,adventure", + "set_id": 1 + }, + { + "name": "mouse", + "content": "", + "style": "outline", + "tags": "*updated*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-left-click", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-middle-click", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-right-click", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-scroll", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-simple", + "content": "", + "style": "outline", + "tags": "clicks,input", + "set_id": 1 + }, + { + "name": "music-note", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-note-simple", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-minus", + "content": "", + "style": "outline", + "tags": "*new*,songs,audio,playlist,albums,remove,subtract", + "set_id": 1 + }, + { + "name": "music-notes-plus", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums,add", + "set_id": 1 + }, + { + "name": "music-notes-simple", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "navigation-arrow", + "content": "", + "style": "outline", + "tags": "location,directions,compass,gps", + "set_id": 1 + }, + { + "name": "needle", + "content": "", + "style": "outline", + "tags": "sewing,thread,awl,tailor", + "set_id": 1 + }, + { + "name": "network", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan", + "set_id": 1 + }, + { + "name": "network-slash", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,error", + "set_id": 1 + }, + { + "name": "network-x", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,disabled", + "set_id": 1 + }, + { + "name": "newspaper", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "newspaper-clipping", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "not-equals", + "content": "", + "style": "outline", + "tags": "*new*,≠,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-member-of", + "content": "", + "style": "outline", + "tags": "*new*,∉,is not element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-subset-of", + "content": "", + "style": "outline", + "tags": "*new*,⊄,not subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-superset-of", + "content": "", + "style": "outline", + "tags": "*new*,⊉,not superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "notches", + "content": "", + "style": "outline", + "tags": "textarea,resize,drag handle,knurling", + "set_id": 1 + }, + { + "name": "note", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-blank", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-pencil", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "notebook", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,journal,diary,logs,logbook", + "set_id": 1 + }, + { + "name": "notepad", + "content": "", + "style": "outline", + "tags": "*updated*,logs,logbook,notes,note-taking,memorandum,journal,diary", + "set_id": 1 + }, + { + "name": "notification", + "content": "", + "style": "outline", + "tags": "badge,pip", + "set_id": 1 + }, + { + "name": "notion-logo", + "content": "", + "style": "outline", + "tags": "documentation,productivity,wiki,logos", + "set_id": 1 + }, + { + "name": "nuclear-plant", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "number-circle-eight", + "content": "", + "style": "outline", + "tags": "8,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-five", + "content": "", + "style": "outline", + "tags": "5,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-four", + "content": "", + "style": "outline", + "tags": "*updated*,4,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-nine", + "content": "", + "style": "outline", + "tags": "9,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-one", + "content": "", + "style": "outline", + "tags": "1,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-seven", + "content": "", + "style": "outline", + "tags": "7,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-six", + "content": "", + "style": "outline", + "tags": "6,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-three", + "content": "", + "style": "outline", + "tags": "3,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-two", + "content": "", + "style": "outline", + "tags": "2,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-zero", + "content": "", + "style": "outline", + "tags": "0,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-eight", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-five", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-four", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-nine", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-one", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-seven", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-six", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-eight", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-five", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-four", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-nine", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-one", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-seven", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-six", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-three", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-two", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-zero", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-three", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-two", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-zero", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "numpad", + "content": "", + "style": "outline", + "tags": "*new*,dialer,dialpad,call-center,telephone,landline,password,passcode", + "set_id": 1 + }, + { + "name": "nut", + "content": "", + "style": "outline", + "tags": "bolts,screws,machinery,tools,hexagon", + "set_id": 1 + }, + { + "name": "ny-times-logo", + "content": "", + "style": "outline", + "tags": "nyt,new york times,logos,reading,writing,news,newspaper", + "set_id": 1 + }, + { + "name": "octagon", + "content": "", + "style": "outline", + "tags": "8,shapes,polygons", + "set_id": 1 + }, + { + "name": "office-chair", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "onigiri", + "content": "", + "style": "outline", + "tags": "*new*,rice ball,japanese,food,restaurant", + "set_id": 1 + }, + { + "name": "open-ai-logo", + "content": "", + "style": "outline", + "tags": "*new*,artificial intelligence,ai,chatgpt,llm,logos", + "set_id": 1 + }, + { + "name": "option", + "content": "", + "style": "outline", + "tags": "keyboard,shortcut,modifier", + "set_id": 1 + }, + { + "name": "orange", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "orange-slice", + "content": "", + "style": "outline", + "tags": "food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "oven", + "content": "", + "style": "outline", + "tags": "*new*,stove,stovetop,food,cooking,cuisine,kitchen", + "set_id": 1 + }, + { + "name": "package", + "content": "", + "style": "outline", + "tags": "packages,boxes,delivery,mail,postal service,bundles,library,libraries,shipping", + "set_id": 1 + }, + { + "name": "paint-brush", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-broad", + "content": "", + "style": "outline", + "tags": "fill,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-household", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-bucket", + "content": "", + "style": "outline", + "tags": "*updated*,paintbucket,colors,color picker,fill,arts", + "set_id": 1 + }, + { + "name": "paint-roller", + "content": "", + "style": "outline", + "tags": "colors,color picker,fill,arts,theme", + "set_id": 1 + }, + { + "name": "palette", + "content": "", + "style": "outline", + "tags": "paint,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "panorama", + "content": "", + "style": "outline", + "tags": "*new*,image,picture,photography,landscape,360", + "set_id": 1 + }, + { + "name": "pants", + "content": "", + "style": "outline", + "tags": "clothing,clothes,jeans", + "set_id": 1 + }, + { + "name": "paper-plane", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-right", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-tilt", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paperclip", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "paperclip-horizontal", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "parachute", + "content": "", + "style": "outline", + "tags": "skydiving,safety", + "set_id": 1 + }, + { + "name": "paragraph", + "content": "", + "style": "outline", + "tags": "pilcrow", + "set_id": 1 + }, + { + "name": "parallelogram", + "content": "", + "style": "outline", + "tags": "shapes,bandcamp,logos", + "set_id": 1 + }, + { + "name": "park", + "content": "", + "style": "outline", + "tags": "bench,outdoors", + "set_id": 1 + }, + { + "name": "password", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "path", + "content": "", + "style": "outline", + "tags": "transit,travel,trail,gps,navigation,route,destination,vector", + "set_id": 1 + }, + { + "name": "patreon-logo", + "content": "", + "style": "outline", + "tags": "*updated*,crowdfunding,logos", + "set_id": 1 + }, + { + "name": "pause", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "pause-circle", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop,round", + "set_id": 1 + }, + { + "name": "paw-print", + "content": "", + "style": "outline", + "tags": "pets,pet store,pet shop,animals,cat,dog,veterinarian", + "set_id": 1 + }, + { + "name": "paypal-logo", + "content": "", + "style": "outline", + "tags": "payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "peace", + "content": "", + "style": "outline", + "tags": "love,hippies,peace sign,symbols", + "set_id": 1 + }, + { + "name": "pen", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pen-nib", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pen-nib-straight", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pencil", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-circle", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-line", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-ruler", + "content": "", + "style": "outline", + "tags": "*new*,drawing,drafting,construction,tools", + "set_id": 1 + }, + { + "name": "pencil-simple", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-line", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-slash", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pencil-slash", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pentagon", + "content": "", + "style": "outline", + "tags": "*new*,shapes,polygons,5", + "set_id": 1 + }, + { + "name": "pentagram", + "content": "", + "style": "outline", + "tags": "star,wicca,satan,satanism,religion,spirituality,evil,magic", + "set_id": 1 + }, + { + "name": "pepper", + "content": "", + "style": "outline", + "tags": "food,spicy,chile,vegetable", + "set_id": 1 + }, + { + "name": "percent", + "content": "", + "style": "outline", + "tags": "%,percentage,percentile,ratio,delta,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "person", + "content": "", + "style": "outline", + "tags": "walking,human,woman,man,body,transit,transportation,travel,commuter,user", + "set_id": 1 + }, + { + "name": "person-arms-spread", + "content": "", + "style": "outline", + "tags": "accessibility,vitruvian,stretch,sports", + "set_id": 1 + }, + { + "name": "person-simple", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-bike", + "content": "", + "style": "outline", + "tags": "pedestrian,biking,bicycle,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-circle", + "content": "", + "style": "outline", + "tags": "*new*,human,accessibility,a11y,vitruvius,vitruvian", + "set_id": 1 + }, + { + "name": "person-simple-hike", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,climbing,mountaineering,bouldering", + "set_id": 1 + }, + { + "name": "person-simple-run", + "content": "", + "style": "outline", + "tags": "pedestrian,running,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-ski", + "content": "", + "style": "outline", + "tags": "*new*,sports,skiing,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-snowboard", + "content": "", + "style": "outline", + "tags": "*new*,sports,snowboarding,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-swim", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,swimming,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-tai-chi", + "content": "", + "style": "outline", + "tags": "*new*,mindfulness,martial arts,meditation,sports,exercise,yoga", + "set_id": 1 + }, + { + "name": "person-simple-throw", + "content": "", + "style": "outline", + "tags": "pedestrian,tennis,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-walk", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "perspective", + "content": "", + "style": "outline", + "tags": "3d,skew,warp,trapezoid", + "set_id": 1 + }, + { + "name": "phone", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-call", + "content": "", + "style": "outline", + "tags": "calls,calling,ringing,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-disconnect", + "content": "", + "style": "outline", + "tags": "calls,hang up,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-incoming", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-list", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-outgoing", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-pause", + "content": "", + "style": "outline", + "tags": "*new*,calls,hold,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-plus", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk,conference,add", + "set_id": 1 + }, + { + "name": "phone-slash", + "content": "", + "style": "outline", + "tags": "calls,disabled,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-transfer", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-x", + "content": "", + "style": "outline", + "tags": "calls,missed,errors,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phosphor-logo", + "content": "", + "style": "outline", + "tags": "logos", + "set_id": 1 + }, + { + "name": "pi", + "content": "", + "style": "outline", + "tags": "π,symbol,mathematics,circle", + "set_id": 1 + }, + { + "name": "piano-keys", + "content": "", + "style": "outline", + "tags": "music,instrument,keyboard", + "set_id": 1 + }, + { + "name": "picnic-table", + "content": "", + "style": "outline", + "tags": "*new*,bench,park,outdoors", + "set_id": 1 + }, + { + "name": "picture-in-picture", + "content": "", + "style": "outline", + "tags": "pip,pop-out,minimize,maximize", + "set_id": 1 + }, + { + "name": "piggy-bank", + "content": "", + "style": "outline", + "tags": "savings,deposit,money,coins", + "set_id": 1 + }, + { + "name": "pill", + "content": "", + "style": "outline", + "tags": "capsule,medicine,rx,pharmacy,pharmacist,pharmaceuticals,prescription,drugs", + "set_id": 1 + }, + { + "name": "ping-pong", + "content": "", + "style": "outline", + "tags": "*new*,sports,paddle", + "set_id": 1 + }, + { + "name": "pint-glass", + "content": "", + "style": "outline", + "tags": "*new*,water,beverage,drinks,beverages,food,dining", + "set_id": 1 + }, + { + "name": "pinterest-logo", + "content": "", + "style": "outline", + "tags": "logos,vision board,mood board,social media", + "set_id": 1 + }, + { + "name": "pinwheel", + "content": "", + "style": "outline", + "tags": "toys,whirligig", + "set_id": 1 + }, + { + "name": "pipe", + "content": "", + "style": "outline", + "tags": "*new*,tube,plumber,plumbing,construction", + "set_id": 1 + }, + { + "name": "pipe-wrench", + "content": "", + "style": "outline", + "tags": "*new*,plumber,plumbing,tools,construction", + "set_id": 1 + }, + { + "name": "pix-logo", + "content": "", + "style": "outline", + "tags": "*new*,payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "pizza", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "placeholder", + "content": "", + "style": "outline", + "tags": "empty,notdef,tofu,rectangle slash,missing", + "set_id": 1 + }, + { + "name": "planet", + "content": "", + "style": "outline", + "tags": "saturn,world,globe,astronomy,space", + "set_id": 1 + }, + { + "name": "plant", + "content": "", + "style": "outline", + "tags": "sprout,vegan,farm,farming,garden,gardening", + "set_id": 1 + }, + { + "name": "play", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start", + "set_id": 1 + }, + { + "name": "play-circle", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,round", + "set_id": 1 + }, + { + "name": "play-pause", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "playlist", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,queue", + "set_id": 1 + }, + { + "name": "plug", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plug-charging", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,charge,charging", + "set_id": 1 + }, + { + "name": "plugs", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,disconnected", + "set_id": 1 + }, + { + "name": "plugs-connected", + "content": "", + "style": "outline", + "tags": "*updated*,outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plus", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "plus-circle", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,round,+", + "set_id": 1 + }, + { + "name": "plus-minus", + "content": "", + "style": "outline", + "tags": "plus or minus,plus/minus,add/subtract,addition,sum,subtraction,difference,mathematics,arithmetic,calculator,+,-,±", + "set_id": 1 + }, + { + "name": "plus-square", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "poker-chip", + "content": "", + "style": "outline", + "tags": "chips,tokens,cards,gambling,casino", + "set_id": 1 + }, + { + "name": "police-car", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,law enforcement", + "set_id": 1 + }, + { + "name": "polygon", + "content": "", + "style": "outline", + "tags": "shapes,drawing", + "set_id": 1 + }, + { + "name": "popcorn", + "content": "", + "style": "outline", + "tags": "food,movies,theater", + "set_id": 1 + }, + { + "name": "popsicle", + "content": "", + "style": "outline", + "tags": "*new*,ice cream,dessert,summer,food", + "set_id": 1 + }, + { + "name": "potted-plant", + "content": "", + "style": "outline", + "tags": "sprout,vegan,garden,gardening", + "set_id": 1 + }, + { + "name": "power", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,on,off,on/off,switch,power switch", + "set_id": 1 + }, + { + "name": "prescription", + "content": "", + "style": "outline", + "tags": "rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor", + "set_id": 1 + }, + { + "name": "presentation", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "presentation-chart", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,graphs,graphing,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "printer", + "content": "", + "style": "outline", + "tags": "printing", + "set_id": 1 + }, + { + "name": "prohibit", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "prohibit-inset", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "projector-screen", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,movies,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "projector-screen-chart", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "pulse", + "content": "", + "style": "outline", + "tags": "activity,heartbeat,medical,ecg,ekg,vitals,monitor,medicine", + "set_id": 1 + }, + { + "name": "push-pin", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-slash", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "push-pin-slash", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "puzzle-piece", + "content": "", + "style": "outline", + "tags": "board game,element,component,extension,plugin", + "set_id": 1 + }, + { + "name": "qr-code", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "question", + "content": "", + "style": "outline", + "tags": "information,help,support,questions", + "set_id": 1 + }, + { + "name": "question-mark", + "content": "", + "style": "outline", + "tags": "*new*,?,information,help,support,questions,punctuation,symbol", + "set_id": 1 + }, + { + "name": "queue", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,playlist", + "set_id": 1 + }, + { + "name": "quotes", + "content": "", + "style": "outline", + "tags": "quoations,quotation marks,double-quotes,writing,books", + "set_id": 1 + }, + { + "name": "rabbit", + "content": "", + "style": "outline", + "tags": "*new*,hare,fast,animal", + "set_id": 1 + }, + { + "name": "racquet", + "content": "", + "style": "outline", + "tags": "*new*,sports,tennis,squash,pickleball", + "set_id": 1 + }, + { + "name": "radical", + "content": "", + "style": "outline", + "tags": "√,radix,radicand,square root,squareroot,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "radio", + "content": "", + "style": "outline", + "tags": "broadcast,fm,am,xm,transmitter,receiver", + "set_id": 1 + }, + { + "name": "radio-button", + "content": "", + "style": "outline", + "tags": "input,checkbox,checked", + "set_id": 1 + }, + { + "name": "radioactive", + "content": "", + "style": "outline", + "tags": "radiation,danger,warning,nuclear,atomic", + "set_id": 1 + }, + { + "name": "rainbow", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,arc,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "rainbow-cloud", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,cloudy,partly cloudy,partly sunny,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "ranking", + "content": "", + "style": "outline", + "tags": "*new*,medal,rank,leaderboard,winner,sports", + "set_id": 1 + }, + { + "name": "read-cv-logo", + "content": "", + "style": "outline", + "tags": "resume,jobs,logos", + "set_id": 1 + }, + { + "name": "receipt", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense", + "set_id": 1 + }, + { + "name": "receipt-x", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense,cancel", + "set_id": 1 + }, + { + "name": "record", + "content": "", + "style": "outline", + "tags": "music,audio,recording,recorder,voice memo", + "set_id": 1 + }, + { + "name": "rectangle", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "rectangle-dashed", + "content": "", + "style": "outline", + "tags": "*new*,4,shapes,polygons,box,missing", + "set_id": 1 + }, + { + "name": "recycle", + "content": "", + "style": "outline", + "tags": "recycling,trash,environmental,green", + "set_id": 1 + }, + { + "name": "reddit-logo", + "content": "", + "style": "outline", + "tags": "logos,subreddit,snoo,social media", + "set_id": 1 + }, + { + "name": "repeat", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "repeat-once", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "replit-logo", + "content": "", + "style": "outline", + "tags": "*new*,logos,ide,editor,coding", + "set_id": 1 + }, + { + "name": "resize", + "content": "", + "style": "outline", + "tags": "*new*,maximize,expand,grow", + "set_id": 1 + }, + { + "name": "rewind", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "rewind-circle", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "road-horizon", + "content": "", + "style": "outline", + "tags": "trip,drive,road,travel,transportation,highway", + "set_id": 1 + }, + { + "name": "robot", + "content": "", + "style": "outline", + "tags": "automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "rocket", + "content": "", + "style": "outline", + "tags": "spaceship,launch,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rocket-launch", + "content": "", + "style": "outline", + "tags": "*updated*,spaceship,flying,blastoff,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rows", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "rows-plus-bottom", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rows-plus-top", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rss", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rss-simple", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rug", + "content": "", + "style": "outline", + "tags": "*updated*,tapestry,carpet", + "set_id": 1 + }, + { + "name": "ruler", + "content": "", + "style": "outline", + "tags": "measure,scale,distance", + "set_id": 1 + }, + { + "name": "sailboat", + "content": "", + "style": "outline", + "tags": "*new*,sailing,ship,vehicles,transportation,sports,places,locations", + "set_id": 1 + }, + { + "name": "scales", + "content": "", + "style": "outline", + "tags": "measure,balance,law,justice,government", + "set_id": 1 + }, + { + "name": "scan", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "scan-smiley", + "content": "", + "style": "outline", + "tags": "*new*,facial recognition,face unlock,scanner", + "set_id": 1 + }, + { + "name": "scissors", + "content": "", + "style": "outline", + "tags": "*updated*,cut,snip,clipboard", + "set_id": 1 + }, + { + "name": "scooter", + "content": "", + "style": "outline", + "tags": "vehicles,transportation,travel,transit", + "set_id": 1 + }, + { + "name": "screencast", + "content": "", + "style": "outline", + "tags": "apple,airplay,screencasting,screen share,television,tv", + "set_id": 1 + }, + { + "name": "screwdriver", + "content": "", + "style": "outline", + "tags": "*new*,tools,construction,flathead,drill", + "set_id": 1 + }, + { + "name": "scribble", + "content": "", + "style": "outline", + "tags": "*new*,doodles,squiggle,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scribble-loop", + "content": "", + "style": "outline", + "tags": "doodles,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scroll", + "content": "", + "style": "outline", + "tags": "*updated*,parchment,paper,script,spell,fantasy", + "set_id": 1 + }, + { + "name": "seal", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-check", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-percent", + "content": "", + "style": "outline", + "tags": "*new*,badge,discount,sale,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-question", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-warning", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,errors,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seat", + "content": "", + "style": "outline", + "tags": "*new*,chair,car seat,airplane seat,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "seatbelt", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,safety", + "set_id": 1 + }, + { + "name": "security-camera", + "content": "", + "style": "outline", + "tags": "*new*,cctv,surveillance,video,monitor,motion detector,safety", + "set_id": 1 + }, + { + "name": "selection", + "content": "", + "style": "outline", + "tags": "marquis,select,square dashed", + "set_id": 1 + }, + { + "name": "selection-all", + "content": "", + "style": "outline", + "tags": "marquis,select all", + "set_id": 1 + }, + { + "name": "selection-background", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-foreground", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-inverse", + "content": "", + "style": "outline", + "tags": "marquis,invert", + "set_id": 1 + }, + { + "name": "selection-plus", + "content": "", + "style": "outline", + "tags": "marquis,add", + "set_id": 1 + }, + { + "name": "selection-slash", + "content": "", + "style": "outline", + "tags": "marquis,unselect", + "set_id": 1 + }, + { + "name": "shapes", + "content": "", + "style": "outline", + "tags": "geometry,square,circle,triangle", + "set_id": 1 + }, + { + "name": "share", + "content": "", + "style": "outline", + "tags": "send to,export,arrows", + "set_id": 1 + }, + { + "name": "share-fat", + "content": "", + "style": "outline", + "tags": "export,send to", + "set_id": 1 + }, + { + "name": "share-network", + "content": "", + "style": "outline", + "tags": "send to,export", + "set_id": 1 + }, + { + "name": "shield", + "content": "", + "style": "outline", + "tags": "badge,security,secured,defense,defended,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-check", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-checkered", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-chevron", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-plus", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-slash", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,disabled", + "set_id": 1 + }, + { + "name": "shield-star", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-warning", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,errors", + "set_id": 1 + }, + { + "name": "shipping-container", + "content": "", + "style": "outline", + "tags": "*new*,shipping,transportation,places,locations", + "set_id": 1 + }, + { + "name": "shirt-folded", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "shooting-star", + "content": "", + "style": "outline", + "tags": "wish,comet,meteor", + "set_id": 1 + }, + { + "name": "shopping-bag", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-bag-open", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-simple", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shovel", + "content": "", + "style": "outline", + "tags": "*new*,tools,digging,construction", + "set_id": 1 + }, + { + "name": "shower", + "content": "", + "style": "outline", + "tags": "bath,bathtub,bathroom,faucet", + "set_id": 1 + }, + { + "name": "shrimp", + "content": "", + "style": "outline", + "tags": "food,seafood,prawn", + "set_id": 1 + }, + { + "name": "shuffle", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-angular", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-simple", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "sidebar", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sidebar-simple", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sigma", + "content": "", + "style": "outline", + "tags": "σ,symbol,mathematics,sum", + "set_id": 1 + }, + { + "name": "sign-in", + "content": "", + "style": "outline", + "tags": "*updated*,signin,login,log in,enter", + "set_id": 1 + }, + { + "name": "sign-out", + "content": "", + "style": "outline", + "tags": "*updated*,signout,logout,log out,exit", + "set_id": 1 + }, + { + "name": "signature", + "content": "", + "style": "outline", + "tags": "*updated*,sign,autograph,verify", + "set_id": 1 + }, + { + "name": "signpost", + "content": "", + "style": "outline", + "tags": "direction,traffic,road sign,transit,transportation", + "set_id": 1 + }, + { + "name": "sim-card", + "content": "", + "style": "outline", + "tags": "*updated*,cellular,cellphone,mobile", + "set_id": 1 + }, + { + "name": "siren", + "content": "", + "style": "outline", + "tags": "alarm,police,lights,warning", + "set_id": 1 + }, + { + "name": "sketch-logo", + "content": "", + "style": "outline", + "tags": "drawing,art,illustration,ui,interface,prototype,prototyping,gemstone,diamond", + "set_id": 1 + }, + { + "name": "skip-back", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-back-circle", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-forward", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skip-forward-circle", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skull", + "content": "", + "style": "outline", + "tags": "death,dead,kill", + "set_id": 1 + }, + { + "name": "skype-logo", + "content": "", + "style": "outline", + "tags": "*new*,chat,video conference", + "set_id": 1 + }, + { + "name": "slack-logo", + "content": "", + "style": "outline", + "tags": "logos,messaging", + "set_id": 1 + }, + { + "name": "sliders", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "sliders-horizontal", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "slideshow", + "content": "", + "style": "outline", + "tags": "pictures,images,photography,gallery,carousel", + "set_id": 1 + }, + { + "name": "smiley", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-angry", + "content": "", + "style": "outline", + "tags": "face,emoji,mad,frown", + "set_id": 1 + }, + { + "name": "smiley-blank", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,no face", + "set_id": 1 + }, + { + "name": "smiley-meh", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,neutral", + "set_id": 1 + }, + { + "name": "smiley-melting", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,embarrassment,sarcasm,shame,hot,heat", + "set_id": 1 + }, + { + "name": "smiley-nervous", + "content": "", + "style": "outline", + "tags": "*updated*,face,emoji,anxious,uncomfortable,uneasy,queasy,sick,ill", + "set_id": 1 + }, + { + "name": "smiley-sad", + "content": "", + "style": "outline", + "tags": "face,emoji,unhappy,frowning", + "set_id": 1 + }, + { + "name": "smiley-sticker", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-wink", + "content": "", + "style": "outline", + "tags": "face,emoji,winking,flirting,cute", + "set_id": 1 + }, + { + "name": "smiley-x-eyes", + "content": "", + "style": "outline", + "tags": "face,emoji,dead,killed,unconscious", + "set_id": 1 + }, + { + "name": "snapchat-logo", + "content": "", + "style": "outline", + "tags": "logos,messaging,social media", + "set_id": 1 + }, + { + "name": "sneaker", + "content": "", + "style": "outline", + "tags": "clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "sneaker-move", + "content": "", + "style": "outline", + "tags": "*updated*,clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "snowflake", + "content": "", + "style": "outline", + "tags": "meteorology,snowy,snowing,snowstorm", + "set_id": 1 + }, + { + "name": "soccer-ball", + "content": "", + "style": "outline", + "tags": "*updated*,sports,football,mls", + "set_id": 1 + }, + { + "name": "sock", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "solar-panel", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "solar-roof", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "sort-ascending", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,increasing,a to z,arrows,list", + "set_id": 1 + }, + { + "name": "sort-descending", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,decreasing,z to a,arrows,list", + "set_id": 1 + }, + { + "name": "soundcloud-logo", + "content": "", + "style": "outline", + "tags": "music,social media,logos", + "set_id": 1 + }, + { + "name": "spade", + "content": "", + "style": "outline", + "tags": "spades,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "sparkle", + "content": "", + "style": "outline", + "tags": "star,rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "speaker-hifi", + "content": "", + "style": "outline", + "tags": "music,audio,sound,stereo", + "set_id": 1 + }, + { + "name": "speaker-high", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-low", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-none", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-high", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-low", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-none", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-slash", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-simple-x", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speaker-slash", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-x", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speedometer", + "content": "", + "style": "outline", + "tags": "*new*,gauge,dashboard,meter,speed,odometer,performance", + "set_id": 1 + }, + { + "name": "sphere", + "content": "", + "style": "outline", + "tags": "*new*,circle,ball,3d,mesh,cad,model", + "set_id": 1 + }, + { + "name": "spinner", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-ball", + "content": "", + "style": "outline", + "tags": "*new*,loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-gap", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spiral", + "content": "", + "style": "outline", + "tags": "*updated*,spin,rotate,dizzy", + "set_id": 1 + }, + { + "name": "split-horizontal", + "content": "", + "style": "outline", + "tags": "resize,columns", + "set_id": 1 + }, + { + "name": "split-vertical", + "content": "", + "style": "outline", + "tags": "resize,rows", + "set_id": 1 + }, + { + "name": "spotify-logo", + "content": "", + "style": "outline", + "tags": "music,player,streaming", + "set_id": 1 + }, + { + "name": "spray-bottle", + "content": "", + "style": "outline", + "tags": "*new*,cleaner,cleaning", + "set_id": 1 + }, + { + "name": "square", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "square-half", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-half-bottom", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-logo", + "content": "", + "style": "outline", + "tags": "squareup,payment", + "set_id": 1 + }, + { + "name": "square-split-horizontal", + "content": "", + "style": "outline", + "tags": "shapes,polygons,columns", + "set_id": 1 + }, + { + "name": "square-split-vertical", + "content": "", + "style": "outline", + "tags": "shapes,polygons,rows", + "set_id": 1 + }, + { + "name": "squares-four", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,apps,applications,grid,table,microsoft,logos", + "set_id": 1 + }, + { + "name": "stack", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stack-minus", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,remove,delete", + "set_id": 1 + }, + { + "name": "stack-overflow-logo", + "content": "", + "style": "outline", + "tags": "logos,code", + "set_id": 1 + }, + { + "name": "stack-plus", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,add", + "set_id": 1 + }, + { + "name": "stack-simple", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stairs", + "content": "", + "style": "outline", + "tags": "staircase,steps,escalator,exit,signs", + "set_id": 1 + }, + { + "name": "stamp", + "content": "", + "style": "outline", + "tags": "clone,seal,official", + "set_id": 1 + }, + { + "name": "standard-definition", + "content": "", + "style": "outline", + "tags": "*new*,sd,resolution,video", + "set_id": 1 + }, + { + "name": "star", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-and-crescent", + "content": "", + "style": "outline", + "tags": "islam,muslim,moon,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "star-four", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-half", + "content": "", + "style": "outline", + "tags": "rate,ratings", + "set_id": 1 + }, + { + "name": "star-of-david", + "content": "", + "style": "outline", + "tags": "judaism,jewish,hexagram,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "steam-logo", + "content": "", + "style": "outline", + "tags": "*new*,gaming,games", + "set_id": 1 + }, + { + "name": "steering-wheel", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobiles,driving", + "set_id": 1 + }, + { + "name": "steps", + "content": "", + "style": "outline", + "tags": "stairs,staircase,exit,signs", + "set_id": 1 + }, + { + "name": "stethoscope", + "content": "", + "style": "outline", + "tags": "hospital,medical,medicine,injury,safety,emergency,doctor,heart", + "set_id": 1 + }, + { + "name": "sticker", + "content": "", + "style": "outline", + "tags": "stickers,sticker pack,labels", + "set_id": 1 + }, + { + "name": "stool", + "content": "", + "style": "outline", + "tags": "chair,seat,furniture", + "set_id": 1 + }, + { + "name": "stop", + "content": "", + "style": "outline", + "tags": "music,audio", + "set_id": 1 + }, + { + "name": "stop-circle", + "content": "", + "style": "outline", + "tags": "music,audio,round", + "set_id": 1 + }, + { + "name": "storefront", + "content": "", + "style": "outline", + "tags": "shops,shopping,markets,stores,buildings,places,locations", + "set_id": 1 + }, + { + "name": "strategy", + "content": "", + "style": "outline", + "tags": "sports,strategem,plan,tic-tac-toe", + "set_id": 1 + }, + { + "name": "stripe-logo", + "content": "", + "style": "outline", + "tags": "payment", + "set_id": 1 + }, + { + "name": "student", + "content": "", + "style": "outline", + "tags": "pupil,graduate,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "subset-of", + "content": "", + "style": "outline", + "tags": "*new*,⊆,subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subset-proper-of", + "content": "", + "style": "outline", + "tags": "*new*,⊂,proper subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subtitles", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "subtitles-slash", + "content": "", + "style": "outline", + "tags": "*new*,subtitles,television,tv,transcribed,transcription,accessibility,a11y,disabled", + "set_id": 1 + }, + { + "name": "subtract", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subtract-square", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subway", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,underground,train,tunnel,metro,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "suitcase", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "suitcase-rolling", + "content": "", + "style": "outline", + "tags": "suitcase,luggage,travel,transportation", + "set_id": 1 + }, + { + "name": "suitcase-simple", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "sun", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,lighten,brighten", + "set_id": 1 + }, + { + "name": "sun-dim", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,darken", + "set_id": 1 + }, + { + "name": "sun-horizon", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,sunrise,sunset", + "set_id": 1 + }, + { + "name": "sunglasses", + "content": "", + "style": "outline", + "tags": "vision,sun,spectacles", + "set_id": 1 + }, + { + "name": "superset-of", + "content": "", + "style": "outline", + "tags": "*new*,⊇,superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "superset-proper-of", + "content": "", + "style": "outline", + "tags": "*new*,⊃,proper superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "swap", + "content": "", + "style": "outline", + "tags": "layers,replace,exchange,reverse", + "set_id": 1 + }, + { + "name": "swatches", + "content": "", + "style": "outline", + "tags": "colors,color picker,samples,pantone", + "set_id": 1 + }, + { + "name": "swimming-pool", + "content": "", + "style": "outline", + "tags": "swim,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "sword", + "content": "", + "style": "outline", + "tags": "weapon,knife,dagger,gladius,video games,rpg,gaming,war", + "set_id": 1 + }, + { + "name": "synagogue", + "content": "", + "style": "outline", + "tags": "jewish,judaism,temple,religion,worship", + "set_id": 1 + }, + { + "name": "syringe", + "content": "", + "style": "outline", + "tags": "needle,hypodermic,vaccine,medicine,doctor,shot,hospital", + "set_id": 1 + }, + { + "name": "t-shirt", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "table", + "content": "", + "style": "outline", + "tags": "tables,tabular,speadsheets,excel,grid,form", + "set_id": 1 + }, + { + "name": "tabs", + "content": "", + "style": "outline", + "tags": "*updated*,browser,window,folders,files", + "set_id": 1 + }, + { + "name": "tag", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "tag-chevron", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale", + "set_id": 1 + }, + { + "name": "tag-simple", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "target", + "content": "", + "style": "outline", + "tags": "bullseye,radar,archery,accuracy,precision", + "set_id": 1 + }, + { + "name": "taxi", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,livery,limousine,uber", + "set_id": 1 + }, + { + "name": "tea-bag", + "content": "", + "style": "outline", + "tags": "*new*,drinks,beverages,sachet,caffeine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "telegram-logo", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "television", + "content": "", + "style": "outline", + "tags": "screen,tv,displays", + "set_id": 1 + }, + { + "name": "television-simple", + "content": "", + "style": "outline", + "tags": "*updated*,screen,tv,displays", + "set_id": 1 + }, + { + "name": "tennis-ball", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "tent", + "content": "", + "style": "outline", + "tags": "camping,outdoors,tarp", + "set_id": 1 + }, + { + "name": "terminal", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "terminal-window", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "test-tube", + "content": "", + "style": "outline", + "tags": "science,chemistry,experiment,vial", + "set_id": 1 + }, + { + "name": "text-a-underline", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "text-aa", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-align-center", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,centered", + "set_id": 1 + }, + { + "name": "text-align-justify", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,justified", + "set_id": 1 + }, + { + "name": "text-align-left", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush left", + "set_id": 1 + }, + { + "name": "text-align-right", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush right", + "set_id": 1 + }, + { + "name": "text-b", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,bold,boldface,emphasis", + "set_id": 1 + }, + { + "name": "text-columns", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,article", + "set_id": 1 + }, + { + "name": "text-h", + "content": "", + "style": "outline", + "tags": "heading,typography,print", + "set_id": 1 + }, + { + "name": "text-h-five", + "content": "", + "style": "outline", + "tags": "heading,h5,typography,print", + "set_id": 1 + }, + { + "name": "text-h-four", + "content": "", + "style": "outline", + "tags": "*updated*,heading,h4,typography,print", + "set_id": 1 + }, + { + "name": "text-h-one", + "content": "", + "style": "outline", + "tags": "heading,h1,typography,print", + "set_id": 1 + }, + { + "name": "text-h-six", + "content": "", + "style": "outline", + "tags": "heading,h6,typography,print", + "set_id": 1 + }, + { + "name": "text-h-three", + "content": "", + "style": "outline", + "tags": "heading,h3,typography,print", + "set_id": 1 + }, + { + "name": "text-h-two", + "content": "", + "style": "outline", + "tags": "heading,h2,typography,print", + "set_id": 1 + }, + { + "name": "text-indent", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,menu", + "set_id": 1 + }, + { + "name": "text-italic", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,slant,oblique,stress,emphasis,calligraphy", + "set_id": 1 + }, + { + "name": "text-outdent", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,unindent,dedent,menu", + "set_id": 1 + }, + { + "name": "text-strikethrough", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,struck,remove,delete,change", + "set_id": 1 + }, + { + "name": "text-subscript", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,power,exponent,calculator", + "set_id": 1 + }, + { + "name": "text-superscript", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,calculator", + "set_id": 1 + }, + { + "name": "text-t", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-t-slash", + "content": "", + "style": "outline", + "tags": "*new*,typography,typeface,print,font,formatting,clear", + "set_id": 1 + }, + { + "name": "text-underline", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "textbox", + "content": "", + "style": "outline", + "tags": "input,cursor,field", + "set_id": 1 + }, + { + "name": "thermometer", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "thermometer-cold", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit", + "set_id": 1 + }, + { + "name": "thermometer-hot", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,warm", + "set_id": 1 + }, + { + "name": "thermometer-simple", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "threads-logo", + "content": "", + "style": "outline", + "tags": "*new*,meta,instagram,social media", + "set_id": 1 + }, + { + "name": "three-d", + "content": "", + "style": "outline", + "tags": "*new*,3d,cad,model", + "set_id": 1 + }, + { + "name": "thumbs-down", + "content": "", + "style": "outline", + "tags": "dislike,hate,emoji,no", + "set_id": 1 + }, + { + "name": "thumbs-up", + "content": "", + "style": "outline", + "tags": "like,love,favorited,favorites,emoji,yes", + "set_id": 1 + }, + { + "name": "ticket", + "content": "", + "style": "outline", + "tags": "ticketstub,movie ticket,entry,admissions,events", + "set_id": 1 + }, + { + "name": "tidal-logo", + "content": "", + "style": "outline", + "tags": "music,logos", + "set_id": 1 + }, + { + "name": "tiktok-logo", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "tilde", + "content": "", + "style": "outline", + "tags": "*new*,~,∼,proportional,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "timer", + "content": "", + "style": "outline", + "tags": "clock,alarm,schedule,events,stopwatch,sports", + "set_id": 1 + }, + { + "name": "tip-jar", + "content": "", + "style": "outline", + "tags": "*new*,give,deposit,donation,savings,money", + "set_id": 1 + }, + { + "name": "tipi", + "content": "", + "style": "outline", + "tags": "teepee,lodge,tent,outdoors,camping,tarp", + "set_id": 1 + }, + { + "name": "tire", + "content": "", + "style": "outline", + "tags": "*new*,wheel,vehicles,transportation", + "set_id": 1 + }, + { + "name": "toggle-left", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toggle-right", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toilet", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toilet-paper", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toolbox", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "tooth", + "content": "", + "style": "outline", + "tags": "teeth,dentistry,medical,medicine,doctor,cavity", + "set_id": 1 + }, + { + "name": "tornado", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,twister,storm,wind,disaster", + "set_id": 1 + }, + { + "name": "tote", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "tote-simple", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "towel", + "content": "", + "style": "outline", + "tags": "*new*,clothing,linen,hotel,beach,pool,swimming,shower,bath", + "set_id": 1 + }, + { + "name": "tractor", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "trademark", + "content": "", + "style": "outline", + "tags": "tm,®,™,intellectual property", + "set_id": 1 + }, + { + "name": "trademark-registered", + "content": "", + "style": "outline", + "tags": "®,™,intellectual property", + "set_id": 1 + }, + { + "name": "traffic-cone", + "content": "", + "style": "outline", + "tags": "pylon,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-sign", + "content": "", + "style": "outline", + "tags": "road signs,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-signal", + "content": "", + "style": "outline", + "tags": "stop light,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "train", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-regional", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,freight,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-simple", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "tram", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,light rail,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "translate", + "content": "", + "style": "outline", + "tags": "translation,languages,internationalization,i18n,speech", + "set_id": 1 + }, + { + "name": "trash", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "trash-simple", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "tray", + "content": "", + "style": "outline", + "tags": "inbox,mailbox,bin", + "set_id": 1 + }, + { + "name": "tray-arrow-down", + "content": "", + "style": "outline", + "tags": "inbox,saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "tray-arrow-up", + "content": "", + "style": "outline", + "tags": "*new*,outbox,archival,unarchive,uploaded,uploading", + "set_id": 1 + }, + { + "name": "treasure-chest", + "content": "", + "style": "outline", + "tags": "*new*,loot,lootbox,inventory,rewards,gaming,pirate", + "set_id": 1 + }, + { + "name": "tree", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-evergreen", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,pine,conifer,green,environmental", + "set_id": 1 + }, + { + "name": "tree-palm", + "content": "", + "style": "outline", + "tags": "tropical,beach,plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-structure", + "content": "", + "style": "outline", + "tags": "data structures,family tree,genealogy,hierarchy,taxonomy,charts,flowchart", + "set_id": 1 + }, + { + "name": "tree-view", + "content": "", + "style": "outline", + "tags": "*new*,hierarchy", + "set_id": 1 + }, + { + "name": "trend-down", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,decrease,arrows", + "set_id": 1 + }, + { + "name": "trend-up", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,increase,arrows", + "set_id": 1 + }, + { + "name": "triangle", + "content": "", + "style": "outline", + "tags": "3,shapes,polygons", + "set_id": 1 + }, + { + "name": "triangle-dashed", + "content": "", + "style": "outline", + "tags": "*new*,3,shapes,polygons,missing", + "set_id": 1 + }, + { + "name": "trolley", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trolley-suitcase", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trophy", + "content": "", + "style": "outline", + "tags": "ribbons,medals,winning,victory,awards,prize", + "set_id": 1 + }, + { + "name": "truck", + "content": "", + "style": "outline", + "tags": "trucks,cars,vehicles,automobile,shipping,delivery", + "set_id": 1 + }, + { + "name": "truck-trailer", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,automobile,shipping,tractor,semi", + "set_id": 1 + }, + { + "name": "tumblr-logo", + "content": "", + "style": "outline", + "tags": "*new*,social media,logos", + "set_id": 1 + }, + { + "name": "twitch-logo", + "content": "", + "style": "outline", + "tags": "logos,streaming,livestream,gaming,video games,social media", + "set_id": 1 + }, + { + "name": "twitter-logo", + "content": "", + "style": "outline", + "tags": "logos,social media,tweets,birds", + "set_id": 1 + }, + { + "name": "umbrella", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "umbrella-simple", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "union", + "content": "", + "style": "outline", + "tags": "*new*,∪,union,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "unite", + "content": "", + "style": "outline", + "tags": "*updated*,round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "unite-square", + "content": "", + "style": "outline", + "tags": "join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "upload", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "upload-simple", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "usb", + "content": "", + "style": "outline", + "tags": "serial,port,plug,peripheral,device", + "set_id": 1 + }, + { + "name": "user", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-check", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-circle-check", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-dashed", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,pending,missing,removed", + "set_id": 1 + }, + { + "name": "user-circle-gear", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-circle-minus", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-circle-plus", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-focus", + "content": "", + "style": "outline", + "tags": "identification,biometrics,facial recognition,profile,person,account,autofocus", + "set_id": 1 + }, + { + "name": "user-gear", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-list", + "content": "", + "style": "outline", + "tags": "person,users,profiles,accounts,members,address book", + "set_id": 1 + }, + { + "name": "user-minus", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-plus", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-rectangle", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-sound", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,speech,speaking,voice", + "set_id": 1 + }, + { + "name": "user-square", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-switch", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,login,logout,signin,signout,settings,preferences", + "set_id": 1 + }, + { + "name": "users", + "content": "", + "style": "outline", + "tags": "user,group,team,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-four", + "content": "", + "style": "outline", + "tags": "user,group,team,department,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-three", + "content": "", + "style": "outline", + "tags": "user,group,team,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "van", + "content": "", + "style": "outline", + "tags": "westfalia,microbus,vanagon,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "vault", + "content": "", + "style": "outline", + "tags": "safe,bank,security,secured,authentication,authenticated,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "vector-three", + "content": "", + "style": "outline", + "tags": "*new*,3d,xyz,cartesian,coordinates,plane,volume,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vector-two", + "content": "", + "style": "outline", + "tags": "*new*,2d,xy,cartesian,coordinates,plane,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vibrate", + "content": "", + "style": "outline", + "tags": "audio,volume,viration,ringer,calls,silent,silenced", + "set_id": 1 + }, + { + "name": "video", + "content": "", + "style": "outline", + "tags": "training,course,education,tutorial", + "set_id": 1 + }, + { + "name": "video-camera", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "video-camera-slash", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording,disabled", + "set_id": 1 + }, + { + "name": "video-conference", + "content": "", + "style": "outline", + "tags": "*new*,video call,zoom,skype,discord,facetime,meeting", + "set_id": 1 + }, + { + "name": "vignette", + "content": "", + "style": "outline", + "tags": "photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "vinyl-record", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music,ep,lp", + "set_id": 1 + }, + { + "name": "virtual-reality", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,headset,metaverse", + "set_id": 1 + }, + { + "name": "virus", + "content": "", + "style": "outline", + "tags": "germs,disease,illness", + "set_id": 1 + }, + { + "name": "visor", + "content": "", + "style": "outline", + "tags": "*new*,goggles,vision", + "set_id": 1 + }, + { + "name": "voicemail", + "content": "", + "style": "outline", + "tags": "phonecalls,missed,recording,telephone,landline", + "set_id": 1 + }, + { + "name": "volleyball", + "content": "", + "style": "outline", + "tags": "sports", + "set_id": 1 + }, + { + "name": "wall", + "content": "", + "style": "outline", + "tags": "firewall,security,secured,blocks,bricks", + "set_id": 1 + }, + { + "name": "wallet", + "content": "", + "style": "outline", + "tags": "money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "warehouse", + "content": "", + "style": "outline", + "tags": "storage,industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "warning", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-circle", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,round", + "set_id": 1 + }, + { + "name": "warning-diamond", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-octagon", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,8,eight", + "set_id": 1 + }, + { + "name": "washing-machine", + "content": "", + "style": "outline", + "tags": "*new*,clothing,laundry,cleaning", + "set_id": 1 + }, + { + "name": "watch", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,clock,wristwatch,wearable", + "set_id": 1 + }, + { + "name": "wave-sawtooth", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-sine", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-square", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-triangle", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "waveform", + "content": "", + "style": "outline", + "tags": "*updated*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waveform-slash", + "content": "", + "style": "outline", + "tags": "*new*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waves", + "content": "", + "style": "outline", + "tags": "ocean,tides,surf", + "set_id": 1 + }, + { + "name": "webcam", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webcam-slash", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webhooks-logo", + "content": "", + "style": "outline", + "tags": "api", + "set_id": 1 + }, + { + "name": "wechat-logo", + "content": "", + "style": "outline", + "tags": "weixin,logos", + "set_id": 1 + }, + { + "name": "whatsapp-logo", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "wheelchair", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wheelchair-motion", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wifi-high", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-low", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-medium", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-none", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-slash", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disabled,disconnected", + "set_id": 1 + }, + { + "name": "wifi-x", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "wind", + "content": "", + "style": "outline", + "tags": "meteorology,windy,stormy,blustery,gusty,air", + "set_id": 1 + }, + { + "name": "windmill", + "content": "", + "style": "outline", + "tags": "*new*,turbine,energy,renewable,sustainability,countryside,landscape,green,power,buildings", + "set_id": 1 + }, + { + "name": "windows-logo", + "content": "", + "style": "outline", + "tags": "microsoft,computers", + "set_id": 1 + }, + { + "name": "wine", + "content": "", + "style": "outline", + "tags": "drinks,beverages,vineyard,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "wrench", + "content": "", + "style": "outline", + "tags": "settings,setup,preferences,tools,machinery,mechanical,repairs", + "set_id": 1 + }, + { + "name": "x", + "content": "", + "style": "outline", + "tags": "×,closed,cancelled,dismissed,times,multiply,mulitplication,product,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "x-circle", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed,round", + "set_id": 1 + }, + { + "name": "x-logo", + "content": "", + "style": "outline", + "tags": "*new*,twitter,logos,social media,tweets", + "set_id": 1 + }, + { + "name": "x-square", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed", + "set_id": 1 + }, + { + "name": "yarn", + "content": "", + "style": "outline", + "tags": "*new*,knitting,sewing", + "set_id": 1 + }, + { + "name": "yin-yang", + "content": "", + "style": "outline", + "tags": "symbol,good,evil,black,white", + "set_id": 1 + }, + { + "name": "youtube-logo", + "content": "", + "style": "outline", + "tags": "logos,google,videos,movies,social media", + "set_id": 1 + }, + { + "name": "acorn-thin", + "content": "", + "style": "outline", + "tags": "*new*,savings,nut,vegetable,veggies,food,groceries,market", + "set_id": 1 + }, + { + "name": "address-book-thin", + "content": "", + "style": "outline", + "tags": "contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "address-book-tabs-thin", + "content": "", + "style": "outline", + "tags": "*new*,contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "air-traffic-control-thin", + "content": "", + "style": "outline", + "tags": "airport,travel,transportation,buildings", + "set_id": 1 + }, + { + "name": "airplane-thin", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "airplane-in-flight-thin", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-landing-thin", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-takeoff-thin", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplane-taxiing-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-tilt-thin", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplay-thin", + "content": "", + "style": "outline", + "tags": "apple,screencasting,television,tv", + "set_id": 1 + }, + { + "name": "alarm-thin", + "content": "", + "style": "outline", + "tags": "times,timer,clock,schedule,events,watch", + "set_id": 1 + }, + { + "name": "alien-thin", + "content": "", + "style": "outline", + "tags": "ufo,space,flying saucer,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "align-bottom-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-bottom-simple-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-center-horizontal-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-horizontal-simple-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-simple-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-left-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-left-simple-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-right-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-right-simple-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-top-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "align-top-simple-thin", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "amazon-logo-thin", + "content": "", + "style": "outline", + "tags": "ecommerce,shopping,logos", + "set_id": 1 + }, + { + "name": "ambulance-thin", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,doctor,vehicles", + "set_id": 1 + }, + { + "name": "anchor-thin", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "anchor-simple-thin", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "android-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,google,mobile,phone,cellular,cellphone", + "set_id": 1 + }, + { + "name": "angle-thin", + "content": "", + "style": "outline", + "tags": "*new*,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "angular-logo-thin", + "content": "", + "style": "outline", + "tags": "framework,javascript,google,web", + "set_id": 1 + }, + { + "name": "aperture-thin", + "content": "", + "style": "outline", + "tags": "photography,cameras,pictures,lens", + "set_id": 1 + }, + { + "name": "app-store-logo-thin", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "app-window-thin", + "content": "", + "style": "outline", + "tags": "windows,software,programs,applications", + "set_id": 1 + }, + { + "name": "apple-logo-thin", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "apple-podcasts-logo-thin", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "approximate-equals-thin", + "content": "", + "style": "outline", + "tags": "*new*,≈,is approximately equal to,congruent,equality,equivalent,equivalence,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "archive-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "armchair-thin", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "arrow-arc-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-arc-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply-all", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply,re", + "set_id": 1 + }, + { + "name": "arrow-bend-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,forward,fwd", + "set_id": 1 + }, + { + "name": "arrow-circle-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-clockwise-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-counter-clockwise-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-fat-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,caps lock,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,shift,outlined", + "set_id": 1 + }, + { + "name": "arrow-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,bottom", + "set_id": 1 + }, + { + "name": "arrow-line-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,top", + "set_id": 1 + }, + { + "name": "arrow-line-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-in-thin", + "content": "", + "style": "outline", + "tags": "import,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-out-thin", + "content": "", + "style": "outline", + "tags": "export,external,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-u-down-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-down-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-down-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-up-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-left-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-right-thin", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-clockwise-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,sync,synchronize,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-counter-clockwise-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-down-up-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-horizontal-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,left,right", + "set_id": 1 + }, + { + "name": "arrows-in-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-cardinal-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-line-horizontal-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-line-vertical-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize", + "set_id": 1 + }, + { + "name": "arrows-left-right-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-merge-thin", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,join,combine", + "set_id": 1 + }, + { + "name": "arrows-out-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,grow", + "set_id": 1 + }, + { + "name": "arrows-out-cardinal-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,pan,move,grow", + "set_id": 1 + }, + { + "name": "arrows-out-line-horizontal-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-line-vertical-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize", + "set_id": 1 + }, + { + "name": "arrows-split-thin", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,fork", + "set_id": 1 + }, + { + "name": "arrows-vertical-thin", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,up,down", + "set_id": 1 + }, + { + "name": "article-thin", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-medium-thin", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-ny-times-thin", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,news,newspaper,nyt,new york times", + "set_id": 1 + }, + { + "name": "asclepius-thin", + "content": "", + "style": "outline", + "tags": "*new*,caduceus,staff,mythology,rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor,hospital,snake,mercury,hermes", + "set_id": 1 + }, + { + "name": "asterisk-thin", + "content": "", + "style": "outline", + "tags": "star,wildcard,bullet point,6,emergency", + "set_id": 1 + }, + { + "name": "asterisk-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,star,wildcard,bullet point,5,emergency", + "set_id": 1 + }, + { + "name": "at-thin", + "content": "", + "style": "outline", + "tags": "@,address,email,at symbol,commercial at,arobase", + "set_id": 1 + }, + { + "name": "atom-thin", + "content": "", + "style": "outline", + "tags": "atomic,nucleus,nuclear,reactor,science,physics,electron,automation,react", + "set_id": 1 + }, + { + "name": "avocado-thin", + "content": "", + "style": "outline", + "tags": "*new*,food,vegetable,veggie,fruit,groceries,market", + "set_id": 1 + }, + { + "name": "axe-thin", + "content": "", + "style": "outline", + "tags": "*new*,tools,carpentry,forestry,construction", + "set_id": 1 + }, + { + "name": "baby-thin", + "content": "", + "style": "outline", + "tags": "infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "baby-carriage-thin", + "content": "", + "style": "outline", + "tags": "*new*,pram,stroller,infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "backpack-thin", + "content": "", + "style": "outline", + "tags": "knapsack,camping,school,bag", + "set_id": 1 + }, + { + "name": "backspace-thin", + "content": "", + "style": "outline", + "tags": "keyboard,remove,delete", + "set_id": 1 + }, + { + "name": "bag-thin", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "bag-simple-thin", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "balloon-thin", + "content": "", + "style": "outline", + "tags": "helium,birthday,party", + "set_id": 1 + }, + { + "name": "bandaids-thin", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,first aid,injury", + "set_id": 1 + }, + { + "name": "bank-thin", + "content": "", + "style": "outline", + "tags": "banking,checking,money,savings,deposit,withdraw,places,locations", + "set_id": 1 + }, + { + "name": "barbell-thin", + "content": "", + "style": "outline", + "tags": "gym,weights,dumbbells,strength training,workout,exercises,fitness", + "set_id": 1 + }, + { + "name": "barcode-thin", + "content": "", + "style": "outline", + "tags": "upc,qr,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "barn-thin", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,buildings,farming,agriculture", + "set_id": 1 + }, + { + "name": "barricade-thin", + "content": "", + "style": "outline", + "tags": "construction,safety,gate", + "set_id": 1 + }, + { + "name": "baseball-thin", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "baseball-cap-thin", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sports,hat", + "set_id": 1 + }, + { + "name": "baseball-helmet-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,mlb", + "set_id": 1 + }, + { + "name": "basket-thin", + "content": "", + "style": "outline", + "tags": "ecommerce,market,cart,buying,shopping,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "basketball-thin", + "content": "", + "style": "outline", + "tags": "sports,nba", + "set_id": 1 + }, + { + "name": "bathtub-thin", + "content": "", + "style": "outline", + "tags": "bath,shower,bathroom,faucet", + "set_id": 1 + }, + { + "name": "battery-charging-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-charging-vertical-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-empty-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-full-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,filled", + "set_id": 1 + }, + { + "name": "battery-high-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-low-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-medium-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-vertical-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-empty-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-vertical-full-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-high-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-low-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-medium-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-warning-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "battery-warning-vertical-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "beach-ball-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,ocean,party", + "set_id": 1 + }, + { + "name": "beanie-thin", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,sports,hat,winter", + "set_id": 1 + }, + { + "name": "bed-thin", + "content": "", + "style": "outline", + "tags": "hotels,accommodations,sleeping,places,locations,medical,hospital", + "set_id": 1 + }, + { + "name": "beer-bottle-thin", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "beer-stein-thin", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "behance-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,illustration,ui,interface", + "set_id": 1 + }, + { + "name": "bell-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-ringing-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-ringing-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-slash-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,silent,silenced,disabled", + "set_id": 1 + }, + { + "name": "bell-simple-z-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "bell-slash-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,silent,silenced,ringer,calls,disabled", + "set_id": 1 + }, + { + "name": "bell-z-thin", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "belt-thin", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "bezier-curve-thin", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "bicycle-thin", + "content": "", + "style": "outline", + "tags": "bikers,bicycling,cyclists,transit,transportation,commuter,exercises,fitness", + "set_id": 1 + }, + { + "name": "binary-thin", + "content": "", + "style": "outline", + "tags": "*new*,digital,0,1,programming,coding,executable", + "set_id": 1 + }, + { + "name": "binoculars-thin", + "content": "", + "style": "outline", + "tags": "telescope,glasses,search,find,explore", + "set_id": 1 + }, + { + "name": "biohazard-thin", + "content": "", + "style": "outline", + "tags": "*new*,contamination,quarantine,toxic,poison,danger,caution", + "set_id": 1 + }, + { + "name": "bird-thin", + "content": "", + "style": "outline", + "tags": "*updated*,animals,pets", + "set_id": 1 + }, + { + "name": "blueprint-thin", + "content": "", + "style": "outline", + "tags": "*new*,architecture,layout,floorplan,building,construction", + "set_id": 1 + }, + { + "name": "bluetooth-thin", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-connected-thin", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-slash-thin", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,disabled", + "set_id": 1 + }, + { + "name": "bluetooth-x-thin", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "boat-thin", + "content": "", + "style": "outline", + "tags": "ferry,ship,cruise,vehicles,public transit,transportation,commuter,traveling,sailing,places,locations", + "set_id": 1 + }, + { + "name": "bomb-thin", + "content": "", + "style": "outline", + "tags": "*new*,gaming,grenade,explosive,war,weapon,fuse", + "set_id": 1 + }, + { + "name": "bone-thin", + "content": "", + "style": "outline", + "tags": "dogbone", + "set_id": 1 + }, + { + "name": "book-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-bookmark-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library,favorites,favorited", + "set_id": 1 + }, + { + "name": "book-open-thin", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-text-thin", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-user-thin", + "content": "", + "style": "outline", + "tags": "*new*,reading,reader,easy read,library,places,locations", + "set_id": 1 + }, + { + "name": "bookmark-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmark-simple-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-simple-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "books-thin", + "content": "", + "style": "outline", + "tags": "reading,reader,bookshelf,library,places,locations", + "set_id": 1 + }, + { + "name": "boot-thin", + "content": "", + "style": "outline", + "tags": "hiking,shoes,sports,exercise", + "set_id": 1 + }, + { + "name": "boules-thin", + "content": "", + "style": "outline", + "tags": "*new*,balls,sports,pétanque,raffa,bocce,boule lyonnaise,lawn bowls", + "set_id": 1 + }, + { + "name": "bounding-box-thin", + "content": "", + "style": "outline", + "tags": "polygon,shapes,outline,corners,rectangle", + "set_id": 1 + }, + { + "name": "bowl-food-thin", + "content": "", + "style": "outline", + "tags": "ramen,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowl-steam-thin", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowling-ball-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,alley", + "set_id": 1 + }, + { + "name": "box-arrow-down-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "box-arrow-up-thin", + "content": "", + "style": "outline", + "tags": "*new*,unarchive,archival,upload", + "set_id": 1 + }, + { + "name": "boxing-glove-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,combat,martial arts,fight,gym", + "set_id": 1 + }, + { + "name": "brackets-angle-thin", + "content": "", + "style": "outline", + "tags": "code,angle brackets,angle braces", + "set_id": 1 + }, + { + "name": "brackets-curly-thin", + "content": "", + "style": "outline", + "tags": "code,curly brackets,curly braces", + "set_id": 1 + }, + { + "name": "brackets-round-thin", + "content": "", + "style": "outline", + "tags": "code,parentheses,round brackets,round braces", + "set_id": 1 + }, + { + "name": "brackets-square-thin", + "content": "", + "style": "outline", + "tags": "code,square brackets,square braces,array", + "set_id": 1 + }, + { + "name": "brain-thin", + "content": "", + "style": "outline", + "tags": "mind,mental", + "set_id": 1 + }, + { + "name": "brandy-thin", + "content": "", + "style": "outline", + "tags": "drinks,beverages,whiskey,cocktail,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "bread-thin", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,bakery,sandwich,gluten,loaf,toast,slice", + "set_id": 1 + }, + { + "name": "bridge-thin", + "content": "", + "style": "outline", + "tags": "travel,transportation,infrastucture", + "set_id": 1 + }, + { + "name": "briefcase-thin", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "briefcase-metal-thin", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "broadcast-thin", + "content": "", + "style": "outline", + "tags": "radio,hotspot,wifi,emit", + "set_id": 1 + }, + { + "name": "broom-thin", + "content": "", + "style": "outline", + "tags": "sweeping,cleaning", + "set_id": 1 + }, + { + "name": "browser-thin", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "browsers-thin", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "bug-thin", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-beetle-thin", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-droid-thin", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,android,google", + "set_id": 1 + }, + { + "name": "building-thin", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "building-apartment-thin", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,buildings", + "set_id": 1 + }, + { + "name": "building-office-thin", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "buildings-thin", + "content": "", + "style": "outline", + "tags": "places,locations,company,business", + "set_id": 1 + }, + { + "name": "bulldozer-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,construction,earth mover,dig,digger", + "set_id": 1 + }, + { + "name": "bus-thin", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "butterfly-thin", + "content": "", + "style": "outline", + "tags": "animals,insects,moth", + "set_id": 1 + }, + { + "name": "cable-car-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,gondola,skiing,mountains,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "cactus-thin", + "content": "", + "style": "outline", + "tags": "*updated*,plants,cacti,desert,western", + "set_id": 1 + }, + { + "name": "cake-thin", + "content": "", + "style": "outline", + "tags": "dessert,birthday,celebration,event", + "set_id": 1 + }, + { + "name": "calculator-thin", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "calendar-thin", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,12", + "set_id": 1 + }, + { + "name": "calendar-blank-thin", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,none", + "set_id": 1 + }, + { + "name": "calendar-check-thin", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,todo,checklist", + "set_id": 1 + }, + { + "name": "calendar-dot-thin", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,today", + "set_id": 1 + }, + { + "name": "calendar-dots-thin", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule", + "set_id": 1 + }, + { + "name": "calendar-heart-thin", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-minus-thin", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete", + "set_id": 1 + }, + { + "name": "calendar-plus-thin", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,add", + "set_id": 1 + }, + { + "name": "calendar-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete,cancel. unavailable", + "set_id": 1 + }, + { + "name": "calendar-star-thin", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-x-thin", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,closed,cancelled", + "set_id": 1 + }, + { + "name": "call-bell-thin", + "content": "", + "style": "outline", + "tags": "service bell,reception,attendant,concierge bell", + "set_id": 1 + }, + { + "name": "camera-thin", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens", + "set_id": 1 + }, + { + "name": "camera-plus-thin", + "content": "", + "style": "outline", + "tags": "photography,pictures,album,add", + "set_id": 1 + }, + { + "name": "camera-rotate-thin", + "content": "", + "style": "outline", + "tags": "photography,pictures,orientation,portrait,landscape,selfie,flip", + "set_id": 1 + }, + { + "name": "camera-slash-thin", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens,disabled", + "set_id": 1 + }, + { + "name": "campfire-thin", + "content": "", + "style": "outline", + "tags": "camping,flame,bonfire,outdoors", + "set_id": 1 + }, + { + "name": "car-thin", + "content": "", + "style": "outline", + "tags": "*updated*,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-battery-thin", + "content": "", + "style": "outline", + "tags": "*new*,charged,charger,charging,power,voltage,electricity", + "set_id": 1 + }, + { + "name": "car-profile-thin", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-simple-thin", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "cardholder-thin", + "content": "", + "style": "outline", + "tags": "wallet,money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cards-thin", + "content": "", + "style": "outline", + "tags": "card,slides,slideshow,windows,website,webpage,layers", + "set_id": 1 + }, + { + "name": "cards-three-thin", + "content": "", + "style": "outline", + "tags": "*new*,card,slides,slideshow,windows,website,webpage,layers,stack", + "set_id": 1 + }, + { + "name": "caret-circle-double-down-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-left-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-right-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-up-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-down-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-left-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-right-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-down-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-down-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-left-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-right-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-up-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-down-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-left-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-down-thin", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-left-thin", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-right-thin", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-up-thin", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-right-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-down-thin", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "carrot-thin", + "content": "", + "style": "outline", + "tags": "food,vegetable,veggie,groceries,market", + "set_id": 1 + }, + { + "name": "cash-register-thin", + "content": "", + "style": "outline", + "tags": "*new*,retail,point-of-sale,pos,transaction,sales,till", + "set_id": 1 + }, + { + "name": "cassette-tape-thin", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music", + "set_id": 1 + }, + { + "name": "castle-turret-thin", + "content": "", + "style": "outline", + "tags": "*updated*,chess,rook", + "set_id": 1 + }, + { + "name": "cat-thin", + "content": "", + "style": "outline", + "tags": "pets,animals,kitty,kitten", + "set_id": 1 + }, + { + "name": "cell-signal-full-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-high-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-low-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-medium-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-none-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-slash-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,disconnected,disabled,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-x-thin", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,disconnected,errors,service", + "set_id": 1 + }, + { + "name": "cell-tower-thin", + "content": "", + "style": "outline", + "tags": "*new*,wireless,cellular,broadcast,phone,mobile,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "certificate-thin", + "content": "", + "style": "outline", + "tags": "*updated*,awards,certification,degree,diploma", + "set_id": 1 + }, + { + "name": "chair-thin", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "chalkboard-thin", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-teacher-thin", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,education,school,college,university", + "set_id": 1 + }, + { + "name": "champagne-thin", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,wine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "charging-station-thin", + "content": "", + "style": "outline", + "tags": "ev,charge,fuel,pump", + "set_id": 1 + }, + { + "name": "chart-bar-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-bar-horizontal-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-donut-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-line-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-down-thin", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-up-thin", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-pie-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-pie-slice-thin", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-polar-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-scatter-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "chat-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-dots-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-text-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-dots-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-text-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-dots-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-dots-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-text-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-text-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-circle-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chats-teardrop-thin", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "check-thin", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-circle-thin", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,round,ok,done", + "set_id": 1 + }, + { + "name": "check-fat-thin", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-square-thin", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "check-square-offset-thin", + "content": "", + "style": "outline", + "tags": "*updated*,todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "checkerboard-thin", + "content": "", + "style": "outline", + "tags": "*new*,crossword", + "set_id": 1 + }, + { + "name": "checks-thin", + "content": "", + "style": "outline", + "tags": "*updated*,todo,task,to-do,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "cheers-thin", + "content": "", + "style": "outline", + "tags": "*new*,glass,drinks,beverages,champagne,toast,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "cheese-thin", + "content": "", + "style": "outline", + "tags": "*new*,dairy,wedge,food,dining", + "set_id": 1 + }, + { + "name": "chef-hat-thin", + "content": "", + "style": "outline", + "tags": "*new*,cooking,cuisine,kitchen,clothes,clothing", + "set_id": 1 + }, + { + "name": "cherries-thin", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,cherry,groceries,market", + "set_id": 1 + }, + { + "name": "church-thin", + "content": "", + "style": "outline", + "tags": "christ,christianity,cathedral,religion,worship", + "set_id": 1 + }, + { + "name": "cigarette-thin", + "content": "", + "style": "outline", + "tags": "*new*,smoking,tobacco", + "set_id": 1 + }, + { + "name": "cigarette-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,non-smoking,tobacco", + "set_id": 1 + }, + { + "name": "circle-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-dashed-thin", + "content": "", + "style": "outline", + "tags": "missing,round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-half-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-half-tilt-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-notch-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,loading,loader,spinner,waiting,progress", + "set_id": 1 + }, + { + "name": "circles-four-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,4", + "set_id": 1 + }, + { + "name": "circles-three-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,asana", + "set_id": 1 + }, + { + "name": "circles-three-plus-thin", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,+", + "set_id": 1 + }, + { + "name": "circuitry-thin", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit,electronics,motherboard", + "set_id": 1 + }, + { + "name": "city-thin", + "content": "", + "style": "outline", + "tags": "*new*,skyline,skyscrapers,places,locations,buildings", + "set_id": 1 + }, + { + "name": "clipboard-thin", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clipboard-text-thin", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clock-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-afternoon-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-clockwise-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,restore,fast forward,update", + "set_id": 1 + }, + { + "name": "clock-countdown-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-counter-clockwise-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,backup,rewind,history", + "set_id": 1 + }, + { + "name": "clock-user-thin", + "content": "", + "style": "outline", + "tags": "*new*,times,timer,shift,schedule,events,watch", + "set_id": 1 + }, + { + "name": "closed-captioning-thin", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "cloud-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,meteorology,cloudy,overcast", + "set_id": 1 + }, + { + "name": "cloud-arrow-down-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,download", + "set_id": 1 + }, + { + "name": "cloud-arrow-up-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,upload", + "set_id": 1 + }, + { + "name": "cloud-check-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,synchronized", + "set_id": 1 + }, + { + "name": "cloud-fog-thin", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,foggy,mist,haze", + "set_id": 1 + }, + { + "name": "cloud-lightning-thin", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,stormy,thunderstorm", + "set_id": 1 + }, + { + "name": "cloud-moon-thin", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,night,evening", + "set_id": 1 + }, + { + "name": "cloud-rain-thin", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,rainy,raining,stormy,rainstorm", + "set_id": 1 + }, + { + "name": "cloud-slash-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,disabled", + "set_id": 1 + }, + { + "name": "cloud-snow-thin", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,snowy,snowing,stormy,snowstorm", + "set_id": 1 + }, + { + "name": "cloud-sun-thin", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,partly sunny", + "set_id": 1 + }, + { + "name": "cloud-warning-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "cloud-x-thin", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "clover-thin", + "content": "", + "style": "outline", + "tags": "*new*,four leaf clover,plants,luck,lucky,irish", + "set_id": 1 + }, + { + "name": "club-thin", + "content": "", + "style": "outline", + "tags": "clubs,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "coat-hanger-thin", + "content": "", + "style": "outline", + "tags": "clothing,clothes,closet", + "set_id": 1 + }, + { + "name": "coda-logo-thin", + "content": "", + "style": "outline", + "tags": "project management,productivity,documentation,wiki,logos", + "set_id": 1 + }, + { + "name": "code-thin", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-block-thin", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-simple-thin", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "codepen-logo-thin", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "codesandbox-logo-thin", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "coffee-thin", + "content": "", + "style": "outline", + "tags": "tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coffee-bean-thin", + "content": "", + "style": "outline", + "tags": "*new*,tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coin-thin", + "content": "", + "style": "outline", + "tags": "coins,cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coin-vertical-thin", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coins-thin", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "columns-thin", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "columns-plus-left-thin", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "columns-plus-right-thin", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,append,insert", + "set_id": 1 + }, + { + "name": "command-thin", + "content": "", + "style": "outline", + "tags": "apple,keyboard,shortcut,modifier,looped square,bowen knot,saint john's arms", + "set_id": 1 + }, + { + "name": "compass-thin", + "content": "", + "style": "outline", + "tags": "navigation,directions,maps,safari,apple", + "set_id": 1 + }, + { + "name": "compass-rose-thin", + "content": "", + "style": "outline", + "tags": "*new*,navigation,directions,maps,cardinal,cartography", + "set_id": 1 + }, + { + "name": "compass-tool-thin", + "content": "", + "style": "outline", + "tags": "drawing,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "computer-tower-thin", + "content": "", + "style": "outline", + "tags": "desktop,pc,imac", + "set_id": 1 + }, + { + "name": "confetti-thin", + "content": "", + "style": "outline", + "tags": "tada,party,emoji", + "set_id": 1 + }, + { + "name": "contactless-payment-thin", + "content": "", + "style": "outline", + "tags": "purchase,credit card,nfc", + "set_id": 1 + }, + { + "name": "control-thin", + "content": "", + "style": "outline", + "tags": "ctrl,key,keyboard,shortcut,caret", + "set_id": 1 + }, + { + "name": "cookie-thin", + "content": "", + "style": "outline", + "tags": "privacy,dessert,food,dining", + "set_id": 1 + }, + { + "name": "cooking-pot-thin", + "content": "", + "style": "outline", + "tags": "stew,kitchen,steaming,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "copy-thin", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copy-simple-thin", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copyleft-thin", + "content": "", + "style": "outline", + "tags": "🄯,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "copyright-thin", + "content": "", + "style": "outline", + "tags": "©,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "corners-in-thin", + "content": "", + "style": "outline", + "tags": "*updated*,collapse,windowed,minimized", + "set_id": 1 + }, + { + "name": "corners-out-thin", + "content": "", + "style": "outline", + "tags": "*updated*,expand,fullscreen,maximized", + "set_id": 1 + }, + { + "name": "couch-thin", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "court-basketball-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,nba", + "set_id": 1 + }, + { + "name": "cow-thin", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,beef,bull,milk,dairy", + "set_id": 1 + }, + { + "name": "cowboy-hat-thin", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,stetson", + "set_id": 1 + }, + { + "name": "cpu-thin", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "crane-thin", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "crane-tower-thin", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "credit-card-thin", + "content": "", + "style": "outline", + "tags": "debit,visa,mastercard,money,payment,paying,purchase,swipe", + "set_id": 1 + }, + { + "name": "cricket-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,ball,bat", + "set_id": 1 + }, + { + "name": "crop-thin", + "content": "", + "style": "outline", + "tags": "photography,clip,screenshots", + "set_id": 1 + }, + { + "name": "cross-thin", + "content": "", + "style": "outline", + "tags": "dagger,crucifix,christ,christianity,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "crosshair-thin", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crosshair-simple-thin", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crown-thin", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-cross-thin", + "content": "", + "style": "outline", + "tags": "*new*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "cube-thin", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks", + "set_id": 1 + }, + { + "name": "cube-focus-thin", + "content": "", + "style": "outline", + "tags": "augmented reality,ar,virual reality,vr,3d,scan", + "set_id": 1 + }, + { + "name": "cube-transparent-thin", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks,necker", + "set_id": 1 + }, + { + "name": "currency-btc-thin", + "content": "", + "style": "outline", + "tags": "money,btc,bitcoin,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-circle-dollar-thin", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-cny-thin", + "content": "", + "style": "outline", + "tags": "money,yuan,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-thin", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-simple-thin", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eth-thin", + "content": "", + "style": "outline", + "tags": "money,ethereum,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eur-thin", + "content": "", + "style": "outline", + "tags": "money,euros,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-gbp-thin", + "content": "", + "style": "outline", + "tags": "money,pounds sterling,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-inr-thin", + "content": "", + "style": "outline", + "tags": "money,rupees,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-jpy-thin", + "content": "", + "style": "outline", + "tags": "money,yen,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-krw-thin", + "content": "", + "style": "outline", + "tags": "money,won,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-kzt-thin", + "content": "", + "style": "outline", + "tags": "money,kazakhstan,tenge,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-ngn-thin", + "content": "", + "style": "outline", + "tags": "money,nigeria,naira,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-rub-thin", + "content": "", + "style": "outline", + "tags": "money,rubles,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cursor-thin", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse,click", + "set_id": 1 + }, + { + "name": "cursor-click-thin", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse", + "set_id": 1 + }, + { + "name": "cursor-text-thin", + "content": "", + "style": "outline", + "tags": "i-beam,input,select", + "set_id": 1 + }, + { + "name": "cylinder-thin", + "content": "", + "style": "outline", + "tags": "shapes,tube", + "set_id": 1 + }, + { + "name": "database-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "desk-thin", + "content": "", + "style": "outline", + "tags": "*new*,furniture,workspace,table", + "set_id": 1 + }, + { + "name": "desktop-thin", + "content": "", + "style": "outline", + "tags": "computer,pc,imac,tower", + "set_id": 1 + }, + { + "name": "desktop-tower-thin", + "content": "", + "style": "outline", + "tags": "*updated*,computer,pc,imac", + "set_id": 1 + }, + { + "name": "detective-thin", + "content": "", + "style": "outline", + "tags": "incognito,police,law enforcement,spy,secret", + "set_id": 1 + }, + { + "name": "dev-to-logo-thin", + "content": "", + "style": "outline", + "tags": "reading,writing,social media,logos", + "set_id": 1 + }, + { + "name": "device-mobile-thin", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-camera-thin", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-speaker-thin", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-rotate-thin", + "content": "", + "style": "outline", + "tags": "*new*,orientation,landscape,portrait,spin,flip", + "set_id": 1 + }, + { + "name": "device-tablet-thin", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-camera-thin", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-speaker-thin", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "devices-thin", + "content": "", + "style": "outline", + "tags": "responsive,cellphone,cellular,tablet,destop", + "set_id": 1 + }, + { + "name": "diamond-thin", + "content": "", + "style": "outline", + "tags": "rectangle,shapes,polygons,diamonds,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "diamonds-four-thin", + "content": "", + "style": "outline", + "tags": "shapes,grid,component", + "set_id": 1 + }, + { + "name": "dice-five-thin", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,5", + "set_id": 1 + }, + { + "name": "dice-four-thin", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,4", + "set_id": 1 + }, + { + "name": "dice-one-thin", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,1", + "set_id": 1 + }, + { + "name": "dice-six-thin", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,6", + "set_id": 1 + }, + { + "name": "dice-three-thin", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,3", + "set_id": 1 + }, + { + "name": "dice-two-thin", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,2", + "set_id": 1 + }, + { + "name": "disc-thin", + "content": "", + "style": "outline", + "tags": "cd-rom,compact disk,album,record", + "set_id": 1 + }, + { + "name": "disco-ball-thin", + "content": "", + "style": "outline", + "tags": "*new*,danging,club,70s", + "set_id": 1 + }, + { + "name": "discord-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging,chat", + "set_id": 1 + }, + { + "name": "divide-thin", + "content": "", + "style": "outline", + "tags": "division,divisor,dividend,quotient,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "dna-thin", + "content": "", + "style": "outline", + "tags": "double helix,gene,genetics", + "set_id": 1 + }, + { + "name": "dog-thin", + "content": "", + "style": "outline", + "tags": "pets,animals,puppy", + "set_id": 1 + }, + { + "name": "door-thin", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "door-open-thin", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "dot-thin", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dot-outline-thin", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dots-nine-thin", + "content": "", + "style": "outline", + "tags": "grid,circles,shapes,polygons,9", + "set_id": 1 + }, + { + "name": "dots-six-thin", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-six-vertical-thin", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-three-thin", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-thin", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-vertical-thin", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-thin", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-vertical-thin", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-vertical-thin", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "download-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk", + "set_id": 1 + }, + { + "name": "download-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk,import", + "set_id": 1 + }, + { + "name": "dress-thin", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "dresser-thin", + "content": "", + "style": "outline", + "tags": "*new*,furniture,bedroom,storage,drawers,wardrobe", + "set_id": 1 + }, + { + "name": "dribbble-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,round,basketball,sports,design", + "set_id": 1 + }, + { + "name": "drone-thin", + "content": "", + "style": "outline", + "tags": "*new*,aerial,uav,photography,remote", + "set_id": 1 + }, + { + "name": "drop-thin", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,raining,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-half-thin", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-half-bottom-thin", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-simple-thin", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur,disabled", + "set_id": 1 + }, + { + "name": "dropbox-logo-thin", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "ear-thin", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound", + "set_id": 1 + }, + { + "name": "ear-slash-thin", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound,mute,accessible", + "set_id": 1 + }, + { + "name": "egg-thin", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch", + "set_id": 1 + }, + { + "name": "egg-crack-thin", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch,break", + "set_id": 1 + }, + { + "name": "eject-thin", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "eject-simple-thin", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "elevator-thin", + "content": "", + "style": "outline", + "tags": "lift", + "set_id": 1 + }, + { + "name": "empty-thin", + "content": "", + "style": "outline", + "tags": "*new*,∅,empty set,member,mathematics,arithmetic,calculator,null", + "set_id": 1 + }, + { + "name": "engine-thin", + "content": "", + "style": "outline", + "tags": "*updated*,motor,repair,vehicles,automobile", + "set_id": 1 + }, + { + "name": "envelope-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-open-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-open-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "equalizer-thin", + "content": "", + "style": "outline", + "tags": "music,audio,meter,volume,spectrum,eq,deezer", + "set_id": 1 + }, + { + "name": "equals-thin", + "content": "", + "style": "outline", + "tags": "=,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "eraser-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,undo,deleted", + "set_id": 1 + }, + { + "name": "escalator-down-thin", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "escalator-up-thin", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "exam-thin", + "content": "", + "style": "outline", + "tags": "text,examination,paper,school,grade", + "set_id": 1 + }, + { + "name": "exclamation-mark-thin", + "content": "", + "style": "outline", + "tags": "*new*,!,alert,warning,caution,interjection,punctuation,symbol", + "set_id": 1 + }, + { + "name": "exclude-thin", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "exclude-square-thin", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "export-thin", + "content": "", + "style": "outline", + "tags": "share,send to,arrows", + "set_id": 1 + }, + { + "name": "eye-thin", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view", + "set_id": 1 + }, + { + "name": "eye-closed-thin", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,private", + "set_id": 1 + }, + { + "name": "eye-slash-thin", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,eyelashes,disabled,private", + "set_id": 1 + }, + { + "name": "eyedropper-thin", + "content": "", + "style": "outline", + "tags": "colors,color picker,sample,arts", + "set_id": 1 + }, + { + "name": "eyedropper-sample-thin", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "eyeglasses-thin", + "content": "", + "style": "outline", + "tags": "vision,spectacles", + "set_id": 1 + }, + { + "name": "eyes-thin", + "content": "", + "style": "outline", + "tags": "*new*,look,glance", + "set_id": 1 + }, + { + "name": "face-mask-thin", + "content": "", + "style": "outline", + "tags": "ppe,facemask,covid-19,coronavirus,flu,cold", + "set_id": 1 + }, + { + "name": "facebook-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "factory-thin", + "content": "", + "style": "outline", + "tags": "industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "faders-thin", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "faders-horizontal-thin", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "fallout-shelter-thin", + "content": "", + "style": "outline", + "tags": "*new*,radiation,radioactive,nuclear,bunker,contamination,quarantine,toxic,danger,caution", + "set_id": 1 + }, + { + "name": "fan-thin", + "content": "", + "style": "outline", + "tags": "desk fan,air conditioning", + "set_id": 1 + }, + { + "name": "farm-thin", + "content": "", + "style": "outline", + "tags": "*new*,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "fast-forward-thin", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "fast-forward-circle-thin", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "feather-thin", + "content": "", + "style": "outline", + "tags": "bird", + "set_id": 1 + }, + { + "name": "fediverse-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,social media,decentralized", + "set_id": 1 + }, + { + "name": "figma-logo-thin", + "content": "", + "style": "outline", + "tags": "*updated*,logos,drawing,art,illustration,ui,interface,prototype,prototyping", + "set_id": 1 + }, + { + "name": "file-thin", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,page", + "set_id": 1 + }, + { + "name": "file-archive-thin", + "content": "", + "style": "outline", + "tags": "documents,zip,compression", + "set_id": 1 + }, + { + "name": "file-arrow-down-thin", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,download,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-arrow-up-thin", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,upload,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-audio-thin", + "content": "", + "style": "outline", + "tags": "documents,music,sound", + "set_id": 1 + }, + { + "name": "file-c-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents,code", + "set_id": 1 + }, + { + "name": "file-c-sharp-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c#", + "set_id": 1 + }, + { + "name": "file-cloud-thin", + "content": "", + "style": "outline", + "tags": "documents,sync", + "set_id": 1 + }, + { + "name": "file-code-thin", + "content": "", + "style": "outline", + "tags": "documents", + "set_id": 1 + }, + { + "name": "file-cpp-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c++", + "set_id": 1 + }, + { + "name": "file-css-thin", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-csv-thin", + "content": "", + "style": "outline", + "tags": "documents,data", + "set_id": 1 + }, + { + "name": "file-dashed-thin", + "content": "", + "style": "outline", + "tags": "documents,files,browse,draft,open,dotted", + "set_id": 1 + }, + { + "name": "file-doc-thin", + "content": "", + "style": "outline", + "tags": "documents,word,microsoft", + "set_id": 1 + }, + { + "name": "file-html-thin", + "content": "", + "style": "outline", + "tags": "*updated*,documents,code", + "set_id": 1 + }, + { + "name": "file-image-thin", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ini-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-jpg-thin", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph,jpeg", + "set_id": 1 + }, + { + "name": "file-js-thin", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-jsx-thin", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-lock-thin", + "content": "", + "style": "outline", + "tags": "documents,secure,locked,private", + "set_id": 1 + }, + { + "name": "file-magnifying-glass-thin", + "content": "", + "style": "outline", + "tags": "documents,files,search,find,locate,browse,missing", + "set_id": 1 + }, + { + "name": "file-md-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents,notes,markdown", + "set_id": 1 + }, + { + "name": "file-minus-thin", + "content": "", + "style": "outline", + "tags": "documents,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "file-pdf-thin", + "content": "", + "style": "outline", + "tags": "documents,files,acrobat", + "set_id": 1 + }, + { + "name": "file-plus-thin", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "file-png-thin", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ppt-thin", + "content": "", + "style": "outline", + "tags": "documents,powerpoint,microsoft", + "set_id": 1 + }, + { + "name": "file-py-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,python", + "set_id": 1 + }, + { + "name": "file-rs-thin", + "content": "", + "style": "outline", + "tags": "documents,code,rust", + "set_id": 1 + }, + { + "name": "file-sql-thin", + "content": "", + "style": "outline", + "tags": "documents,database", + "set_id": 1 + }, + { + "name": "file-svg-thin", + "content": "", + "style": "outline", + "tags": "documents,images,vector", + "set_id": 1 + }, + { + "name": "file-text-thin", + "content": "", + "style": "outline", + "tags": "documents,files,save,write", + "set_id": 1 + }, + { + "name": "file-ts-thin", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-tsx-thin", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-txt-thin", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-video-thin", + "content": "", + "style": "outline", + "tags": "documents,movie", + "set_id": 1 + }, + { + "name": "file-vue-thin", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-x-thin", + "content": "", + "style": "outline", + "tags": "documents,files,cancelled,deleted,removed,errors", + "set_id": 1 + }, + { + "name": "file-xls-thin", + "content": "", + "style": "outline", + "tags": "documents,excel,microsoft", + "set_id": 1 + }, + { + "name": "file-zip-thin", + "content": "", + "style": "outline", + "tags": "documents,archive,compression", + "set_id": 1 + }, + { + "name": "files-thin", + "content": "", + "style": "outline", + "tags": "documents,open,library", + "set_id": 1 + }, + { + "name": "film-reel-thin", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "film-script-thin", + "content": "", + "style": "outline", + "tags": "screenplay,movie", + "set_id": 1 + }, + { + "name": "film-slate-thin", + "content": "", + "style": "outline", + "tags": "*updated*,clapper,movie", + "set_id": 1 + }, + { + "name": "film-strip-thin", + "content": "", + "style": "outline", + "tags": "camera,photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "fingerprint-thin", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "fingerprint-simple-thin", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "finn-the-human-thin", + "content": "", + "style": "outline", + "tags": "adventure time,cartoons,television,tv,character", + "set_id": 1 + }, + { + "name": "fire-thin", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-extinguisher-thin", + "content": "", + "style": "outline", + "tags": "safety,prevention,emergency,hazard,danger,caution", + "set_id": 1 + }, + { + "name": "fire-simple-thin", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-truck-thin", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,firefighter", + "set_id": 1 + }, + { + "name": "first-aid-thin", + "content": "", + "style": "outline", + "tags": "hospital,cross,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "first-aid-kit-thin", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "fish-thin", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "fish-simple-thin", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "flag-thin", + "content": "", + "style": "outline", + "tags": "country,countries,finished,completed,flags", + "set_id": 1 + }, + { + "name": "flag-banner-thin", + "content": "", + "style": "outline", + "tags": "ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-banner-fold-thin", + "content": "", + "style": "outline", + "tags": "*new*,ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-checkered-thin", + "content": "", + "style": "outline", + "tags": "flags,race,racing,finish line", + "set_id": 1 + }, + { + "name": "flag-pennant-thin", + "content": "", + "style": "outline", + "tags": "flags,race,sports,team", + "set_id": 1 + }, + { + "name": "flame-thin", + "content": "", + "style": "outline", + "tags": "fire,burning,match,lighter", + "set_id": 1 + }, + { + "name": "flashlight-thin", + "content": "", + "style": "outline", + "tags": "torch,find,search,locate", + "set_id": 1 + }, + { + "name": "flask-thin", + "content": "", + "style": "outline", + "tags": "beaker,science,chemistry,experiment,erlenmeyer", + "set_id": 1 + }, + { + "name": "flip-horizontal-thin", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "flip-vertical-thin", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "floppy-disk-thin", + "content": "", + "style": "outline", + "tags": "diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "floppy-disk-back-thin", + "content": "", + "style": "outline", + "tags": "*updated*,diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "flow-arrow-thin", + "content": "", + "style": "outline", + "tags": "*updated*,flowchart,arrowhead", + "set_id": 1 + }, + { + "name": "flower-thin", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flower-lotus-thin", + "content": "", + "style": "outline", + "tags": "plants,green,environmental,spirituality", + "set_id": 1 + }, + { + "name": "flower-tulip-thin", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flying-saucer-thin", + "content": "", + "style": "outline", + "tags": "ufo,space,aliens,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "folder-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-dashed-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-lock-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-minus-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-open-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,load", + "set_id": 1 + }, + { + "name": "folder-plus-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-simple-dashed-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-simple-lock-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-simple-minus-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-simple-plus-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-star-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-simple-user-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folder-star-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-user-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folders-thin", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,copy,copied,duplicated", + "set_id": 1 + }, + { + "name": "football-thin", + "content": "", + "style": "outline", + "tags": "sports,american football,nfl", + "set_id": 1 + }, + { + "name": "football-helmet-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,american football,nfl", + "set_id": 1 + }, + { + "name": "footprints-thin", + "content": "", + "style": "outline", + "tags": "path,trail,walk,route,hike,hiking", + "set_id": 1 + }, + { + "name": "fork-knife-thin", + "content": "", + "style": "outline", + "tags": "food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "four-k-thin", + "content": "", + "style": "outline", + "tags": "*new*,uhd,resolution,video", + "set_id": 1 + }, + { + "name": "frame-corners-thin", + "content": "", + "style": "outline", + "tags": "expand,fullscreen,maximized,resize,windowed,capture", + "set_id": 1 + }, + { + "name": "framer-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,interface,ui,motion,prototype,prototyping", + "set_id": 1 + }, + { + "name": "function-thin", + "content": "", + "style": "outline", + "tags": "mathematics,arithmetic,f-stop", + "set_id": 1 + }, + { + "name": "funnel-thin", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-thin", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-x-thin", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-x-thin", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "game-controller-thin", + "content": "", + "style": "outline", + "tags": "gaming,video games,nintendo switch,sony playstation,microsoft xbox", + "set_id": 1 + }, + { + "name": "garage-thin", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,buildings,transportation", + "set_id": 1 + }, + { + "name": "gas-can-thin", + "content": "", + "style": "outline", + "tags": "jerrycan,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gas-pump-thin", + "content": "", + "style": "outline", + "tags": "gas station,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gauge-thin", + "content": "", + "style": "outline", + "tags": "dashboard,meter,speed,speedometer,odometer,performance", + "set_id": 1 + }, + { + "name": "gavel-thin", + "content": "", + "style": "outline", + "tags": "judge,justice,legal,law,court,hammer,government", + "set_id": 1 + }, + { + "name": "gear-thin", + "content": "", + "style": "outline", + "tags": "8,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-fine-thin", + "content": "", + "style": "outline", + "tags": "setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-six-thin", + "content": "", + "style": "outline", + "tags": "6,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gender-female-thin", + "content": "", + "style": "outline", + "tags": "woman,feminine,venus", + "set_id": 1 + }, + { + "name": "gender-intersex-thin", + "content": "", + "style": "outline", + "tags": "transgender,non-binary", + "set_id": 1 + }, + { + "name": "gender-male-thin", + "content": "", + "style": "outline", + "tags": "man,masculine,mars", + "set_id": 1 + }, + { + "name": "gender-neuter-thin", + "content": "", + "style": "outline", + "tags": "agender,non-binary,asexual", + "set_id": 1 + }, + { + "name": "gender-nonbinary-thin", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "gender-transgender-thin", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "ghost-thin", + "content": "", + "style": "outline", + "tags": "pac-man,spirit,scary,halloween", + "set_id": 1 + }, + { + "name": "gif-thin", + "content": "", + "style": "outline", + "tags": "gifs,.gif,giphy", + "set_id": 1 + }, + { + "name": "gift-thin", + "content": "", + "style": "outline", + "tags": "presents,holiday,birthday", + "set_id": 1 + }, + { + "name": "git-branch-thin", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "git-commit-thin", + "content": "", + "style": "outline", + "tags": "github,vcs,source control,version control,versioning,commits", + "set_id": 1 + }, + { + "name": "git-diff-thin", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,difference,compare", + "set_id": 1 + }, + { + "name": "git-fork-thin", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-merge-thin", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-pull-request-thin", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,merge request", + "set_id": 1 + }, + { + "name": "github-logo-thin", + "content": "", + "style": "outline", + "tags": "octocat,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-thin", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-simple-thin", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "globe-thin", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-hemisphere-east-thin", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,europe,africa,asia,australia", + "set_id": 1 + }, + { + "name": "globe-hemisphere-west-thin", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,north america,south america", + "set_id": 1 + }, + { + "name": "globe-simple-thin", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-simple-x-thin", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-stand-thin", + "content": "", + "style": "outline", + "tags": "world,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-x-thin", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "goggles-thin", + "content": "", + "style": "outline", + "tags": "swim,swimming,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "golf-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,pga,tee,ball", + "set_id": 1 + }, + { + "name": "goodreads-logo-thin", + "content": "", + "style": "outline", + "tags": "*updated*,reading,books,social media,logos", + "set_id": 1 + }, + { + "name": "google-cardboard-logo-thin", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,logos", + "set_id": 1 + }, + { + "name": "google-chrome-logo-thin", + "content": "", + "style": "outline", + "tags": "web browsers,internet", + "set_id": 1 + }, + { + "name": "google-drive-logo-thin", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "google-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,search engine,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-photos-logo-thin", + "content": "", + "style": "outline", + "tags": "album,pictures,photography", + "set_id": 1 + }, + { + "name": "google-play-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,games,apps,applications,play store,app store,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-podcasts-logo-thin", + "content": "", + "style": "outline", + "tags": "audio", + "set_id": 1 + }, + { + "name": "gps-thin", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-fix-thin", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation,disabled", + "set_id": 1 + }, + { + "name": "gradient-thin", + "content": "", + "style": "outline", + "tags": "fade,ombre,opacity", + "set_id": 1 + }, + { + "name": "graduation-cap-thin", + "content": "", + "style": "outline", + "tags": "classroom,teacher,education,school,college,university,degree,graduate,hat", + "set_id": 1 + }, + { + "name": "grains-thin", + "content": "", + "style": "outline", + "tags": "wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "grains-slash-thin", + "content": "", + "style": "outline", + "tags": "gluten-free,wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "graph-thin", + "content": "", + "style": "outline", + "tags": "nodes,tree", + "set_id": 1 + }, + { + "name": "graphics-card-thin", + "content": "", + "style": "outline", + "tags": "*new*,graphics card,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "greater-than-thin", + "content": "", + "style": "outline", + "tags": "*new*,>,greater than,gt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "greater-than-or-equal-thin", + "content": "", + "style": "outline", + "tags": "*new*,≥,greater than or equal,gte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "grid-four-thin", + "content": "", + "style": "outline", + "tags": "4,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "grid-nine-thin", + "content": "", + "style": "outline", + "tags": "9,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "guitar-thin", + "content": "", + "style": "outline", + "tags": "music,instrument", + "set_id": 1 + }, + { + "name": "hair-dryer-thin", + "content": "", + "style": "outline", + "tags": "*new*,blow dryer,beauty,grooming,salon", + "set_id": 1 + }, + { + "name": "hamburger-thin", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "hammer-thin", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "hand-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,backhand", + "set_id": 1 + }, + { + "name": "hand-arrow-down-thin", + "content": "", + "style": "outline", + "tags": "*new*,take,receive,remove,withdraw,emoji", + "set_id": 1 + }, + { + "name": "hand-arrow-up-thin", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,deposit,donation,emoji", + "set_id": 1 + }, + { + "name": "hand-coins-thin", + "content": "", + "style": "outline", + "tags": "donation,payment,money,paying,purchase", + "set_id": 1 + }, + { + "name": "hand-deposit-thin", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,donation,atm,emoji", + "set_id": 1 + }, + { + "name": "hand-eye-thin", + "content": "", + "style": "outline", + "tags": "*updated*,emoji,hamsa,evil eye", + "set_id": 1 + }, + { + "name": "hand-fist-thin", + "content": "", + "style": "outline", + "tags": "emoji,power,protest,blm", + "set_id": 1 + }, + { + "name": "hand-grabbing-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,drag,hold", + "set_id": 1 + }, + { + "name": "hand-heart-thin", + "content": "", + "style": "outline", + "tags": "donation,care,emoji", + "set_id": 1 + }, + { + "name": "hand-palm-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,palm,stop,wait,hamsa,5", + "set_id": 1 + }, + { + "name": "hand-peace-thin", + "content": "", + "style": "outline", + "tags": "*new*,emoji,victory", + "set_id": 1 + }, + { + "name": "hand-pointing-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,fingers,clicks,mouse", + "set_id": 1 + }, + { + "name": "hand-soap-thin", + "content": "", + "style": "outline", + "tags": "dispenser,pump,sanitizer,disinfectant,lotion,bottle", + "set_id": 1 + }, + { + "name": "hand-swipe-left-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-swipe-right-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-tap-thin", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-waving-thin", + "content": "", + "style": "outline", + "tags": "emoji,palm,wave,hello,goodbye", + "set_id": 1 + }, + { + "name": "hand-withdraw-thin", + "content": "", + "style": "outline", + "tags": "*new*,take,remove,withdrawal,atm,emoji", + "set_id": 1 + }, + { + "name": "handbag-thin", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "handbag-simple-thin", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "hands-clapping-thin", + "content": "", + "style": "outline", + "tags": "emoji,clap,applause", + "set_id": 1 + }, + { + "name": "hands-praying-thin", + "content": "", + "style": "outline", + "tags": "emoji,religion,worship,prayer,thanks,thank you", + "set_id": 1 + }, + { + "name": "handshake-thin", + "content": "", + "style": "outline", + "tags": "emoji,deal,agreement", + "set_id": 1 + }, + { + "name": "hard-drive-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-drives-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-hat-thin", + "content": "", + "style": "outline", + "tags": "*new*,safety,construction,industry,helmet,ppe", + "set_id": 1 + }, + { + "name": "hash-thin", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "hash-straight-thin", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "head-circuit-thin", + "content": "", + "style": "outline", + "tags": "*new*,automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "headlights-thin", + "content": "", + "style": "outline", + "tags": "brights,high beams", + "set_id": 1 + }, + { + "name": "headphones-thin", + "content": "", + "style": "outline", + "tags": "music,audio,listening", + "set_id": 1 + }, + { + "name": "headset-thin", + "content": "", + "style": "outline", + "tags": "music,audio,listening,gaming,voice chat,microphone,headphones,support,customer-service,call-center", + "set_id": 1 + }, + { + "name": "heart-thin", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-break-thin", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heart-half-thin", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited", + "set_id": 1 + }, + { + "name": "heart-straight-thin", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-straight-break-thin", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heartbeat-thin", + "content": "", + "style": "outline", + "tags": "wellness,healthy,ecg,ekg,vitals,monitor", + "set_id": 1 + }, + { + "name": "hexagon-thin", + "content": "", + "style": "outline", + "tags": "6,shapes,polygons", + "set_id": 1 + }, + { + "name": "high-definition-thin", + "content": "", + "style": "outline", + "tags": "*new*,hd,resolution,video", + "set_id": 1 + }, + { + "name": "high-heel-thin", + "content": "", + "style": "outline", + "tags": "*updated*,pumps,clothes,clothing,shoes", + "set_id": 1 + }, + { + "name": "highlighter-thin", + "content": "", + "style": "outline", + "tags": "*new*,marker,write,writing,editing", + "set_id": 1 + }, + { + "name": "highlighter-circle-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "hockey-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,nhl,stick,puck", + "set_id": 1 + }, + { + "name": "hoodie-thin", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sweatshirt", + "set_id": 1 + }, + { + "name": "horse-thin", + "content": "", + "style": "outline", + "tags": "animals,equestrian,chess,knight,sports", + "set_id": 1 + }, + { + "name": "hospital-thin", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,medical,medicine,emergency,doctor,buildings", + "set_id": 1 + }, + { + "name": "hourglass-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-high-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-low-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-medium-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-high-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-low-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-medium-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "house-thin", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-line-thin", + "content": "", + "style": "outline", + "tags": "*updated*,homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-simple-thin", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "hurricane-thin", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,cyclone,storm,disaster,wind", + "set_id": 1 + }, + { + "name": "ice-cream-thin", + "content": "", + "style": "outline", + "tags": "food,dessert,cone", + "set_id": 1 + }, + { + "name": "identification-badge-thin", + "content": "", + "style": "outline", + "tags": "license,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "identification-card-thin", + "content": "", + "style": "outline", + "tags": "license,badge,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "image-thin", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "image-broken-thin", + "content": "", + "style": "outline", + "tags": "*new*,pictures,photographs,photography,wallpapers,gallery,landscape,missing,error,404", + "set_id": 1 + }, + { + "name": "image-square-thin", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "images-thin", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "images-square-thin", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "infinity-thin", + "content": "", + "style": "outline", + "tags": "infinite,lemniscate,figure-eight,mathematics,arithmetic,calculator,∞", + "set_id": 1 + }, + { + "name": "info-thin", + "content": "", + "style": "outline", + "tags": "information,help,support", + "set_id": 1 + }, + { + "name": "instagram-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,social media,photography,camera", + "set_id": 1 + }, + { + "name": "intersect-thin", + "content": "", + "style": "outline", + "tags": "round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "intersect-square-thin", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection", + "set_id": 1 + }, + { + "name": "intersect-three-thin", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection,gender,pronouns", + "set_id": 1 + }, + { + "name": "intersection-thin", + "content": "", + "style": "outline", + "tags": "*new*,∩,intersection,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "invoice-thin", + "content": "", + "style": "outline", + "tags": "*new*,receipt,expense,bill", + "set_id": 1 + }, + { + "name": "island-thin", + "content": "", + "style": "outline", + "tags": "*new*,geography,beach,ocean,tropical,palm,vacation,trip,locations,places", + "set_id": 1 + }, + { + "name": "jar-thin", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jar-label-thin", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jeep-thin", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,automobile,suv,cars,trucks,wrangler,off-road,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "joystick-thin", + "content": "", + "style": "outline", + "tags": "*new*,gaming,game controller,video games,arcade game,atari", + "set_id": 1 + }, + { + "name": "kanban-thin", + "content": "", + "style": "outline", + "tags": "scheduling,tasks,project management,process,lean,agile", + "set_id": 1 + }, + { + "name": "key-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "key-return-thin", + "content": "", + "style": "outline", + "tags": "keyboard,enter", + "set_id": 1 + }, + { + "name": "keyboard-thin", + "content": "", + "style": "outline", + "tags": "typing,type,keys,input", + "set_id": 1 + }, + { + "name": "keyhole-thin", + "content": "", + "style": "outline", + "tags": "lock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "knife-thin", + "content": "", + "style": "outline", + "tags": "tools,food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "ladder-thin", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "ladder-simple-thin", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "lamp-thin", + "content": "", + "style": "outline", + "tags": "light,furniture,appliances", + "set_id": 1 + }, + { + "name": "lamp-pendant-thin", + "content": "", + "style": "outline", + "tags": "*new*,light,furniture,appliances", + "set_id": 1 + }, + { + "name": "laptop-thin", + "content": "", + "style": "outline", + "tags": "computer,notebook,pc,macbook", + "set_id": 1 + }, + { + "name": "lasso-thin", + "content": "", + "style": "outline", + "tags": "*new*,select,selection,loop,rope,cowboy", + "set_id": 1 + }, + { + "name": "lastfm-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,scrobble,music,social media", + "set_id": 1 + }, + { + "name": "layout-thin", + "content": "", + "style": "outline", + "tags": "wireframe,sidebar,ui,interface", + "set_id": 1 + }, + { + "name": "leaf-thin", + "content": "", + "style": "outline", + "tags": "plants,trees,branches,leaves,nodes,green,environmental", + "set_id": 1 + }, + { + "name": "lectern-thin", + "content": "", + "style": "outline", + "tags": "*new*,lecture,podium,pulpit,stand,speech,presentation,keynote", + "set_id": 1 + }, + { + "name": "lego-thin", + "content": "", + "style": "outline", + "tags": "*new*,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "lego-smiley-thin", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "less-than-thin", + "content": "", + "style": "outline", + "tags": "*new*,<,less than,lt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "less-than-or-equal-thin", + "content": "", + "style": "outline", + "tags": "*new*,≤,less than or equal,lte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "letter-circle-h-thin", + "content": "", + "style": "outline", + "tags": "*new*,hospital,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-p-thin", + "content": "", + "style": "outline", + "tags": "*new*,parking lot,valet,vehicles,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-v-thin", + "content": "", + "style": "outline", + "tags": "*new*,vegan,letter,glyph,character", + "set_id": 1 + }, + { + "name": "lifebuoy-thin", + "content": "", + "style": "outline", + "tags": "lifebelt,lifesaver,safety,help,support,nautical,boats,ships", + "set_id": 1 + }, + { + "name": "lightbulb-thin", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lightbulb-filament-thin", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lighthouse-thin", + "content": "", + "style": "outline", + "tags": "buildings,nautical,navigation,boats,ships,safety", + "set_id": 1 + }, + { + "name": "lightning-thin", + "content": "", + "style": "outline", + "tags": "meteorology,stormy,thunderstorm,thunderbolt,charged,charger,charging,power,electricity,flash", + "set_id": 1 + }, + { + "name": "lightning-a-thin", + "content": "", + "style": "outline", + "tags": "flash,auto", + "set_id": 1 + }, + { + "name": "lightning-slash-thin", + "content": "", + "style": "outline", + "tags": "thunderbolt,charged,charger,charging,power,electricity,disabled,flash", + "set_id": 1 + }, + { + "name": "line-segment-thin", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-segments-thin", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-vertical-thin", + "content": "", + "style": "outline", + "tags": "*new*,bar,pipe,|,divider. symbol", + "set_id": 1 + }, + { + "name": "link-thin", + "content": "", + "style": "outline", + "tags": "*updated*,anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-break-thin", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-thin", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-break-thin", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-thin", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-break-thin", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "linkedin-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,jobs,employment,social media", + "set_id": 1 + }, + { + "name": "linktree-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,social media,links", + "set_id": 1 + }, + { + "name": "linux-logo-thin", + "content": "", + "style": "outline", + "tags": "penguin,computer,animals", + "set_id": 1 + }, + { + "name": "list-thin", + "content": "", + "style": "outline", + "tags": "*updated*,hamburger menu,overflow menu,sidebar,3,ul,ol,unordered list,ordered list,checklist,lines", + "set_id": 1 + }, + { + "name": "list-bullets-thin", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,bulleted list,checklist", + "set_id": 1 + }, + { + "name": "list-checks-thin", + "content": "", + "style": "outline", + "tags": "*updated*,checklist,todo", + "set_id": 1 + }, + { + "name": "list-dashes-thin", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,dashed list,checklist", + "set_id": 1 + }, + { + "name": "list-heart-thin", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "list-magnifying-glass-thin", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "list-numbers-thin", + "content": "", + "style": "outline", + "tags": "*updated*,ol,ordered list,numbered list,checklist", + "set_id": 1 + }, + { + "name": "list-plus-thin", + "content": "", + "style": "outline", + "tags": "*updated*,ul,ol,unordered list,ordered list,checklist,add,+", + "set_id": 1 + }, + { + "name": "list-star-thin", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "lock-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-open-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-laminated-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-laminated-open-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-open-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-simple-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-simple-open-thin", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lockers-thin", + "content": "", + "style": "outline", + "tags": "locker room,gym,storage", + "set_id": 1 + }, + { + "name": "log-thin", + "content": "", + "style": "outline", + "tags": "*new*,tree,stump,stick,branch", + "set_id": 1 + }, + { + "name": "magic-wand-thin", + "content": "", + "style": "outline", + "tags": "selection,wizard,games", + "set_id": 1 + }, + { + "name": "magnet-thin", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnet-straight-thin", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnifying-glass-thin", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "magnifying-glass-minus-thin", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom out,-", + "set_id": 1 + }, + { + "name": "magnifying-glass-plus-thin", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom in,+", + "set_id": 1 + }, + { + "name": "mailbox-thin", + "content": "", + "style": "outline", + "tags": "*new*,email,letters,messaging,post", + "set_id": 1 + }, + { + "name": "map-pin-thin", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-area-thin", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-line-thin", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-plus-thin", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,add,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-thin", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-area-thin", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-line-thin", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-trifold-thin", + "content": "", + "style": "outline", + "tags": "maps,places,locations,cartography,geography", + "set_id": 1 + }, + { + "name": "markdown-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,markup,editor,.md", + "set_id": 1 + }, + { + "name": "marker-circle-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "martini-thin", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,cocktails,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "mask-happy-thin", + "content": "", + "style": "outline", + "tags": "theater,costume,smile,smiling,thalia", + "set_id": 1 + }, + { + "name": "mask-sad-thin", + "content": "", + "style": "outline", + "tags": "theater,costume,cry,crying,melpomene", + "set_id": 1 + }, + { + "name": "mastodon-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,fediverse,social media,decentralized", + "set_id": 1 + }, + { + "name": "math-operations-thin", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,calculator,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "matrix-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,matrix protocol,brands,logos", + "set_id": 1 + }, + { + "name": "medal-thin", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,rosette", + "set_id": 1 + }, + { + "name": "medal-military-thin", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,military", + "set_id": 1 + }, + { + "name": "medium-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,reading,writing,news,social media", + "set_id": 1 + }, + { + "name": "megaphone-thin", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "megaphone-simple-thin", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "member-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,∈,is element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "memory-thin", + "content": "", + "style": "outline", + "tags": "*new*,ram,microchip,computer,circuit,electronics", + "set_id": 1 + }, + { + "name": "messenger-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,facebook,social media", + "set_id": 1 + }, + { + "name": "meta-logo-thin", + "content": "", + "style": "outline", + "tags": "*updated*,facebook,logos,social media,logos", + "set_id": 1 + }, + { + "name": "meteor-thin", + "content": "", + "style": "outline", + "tags": "*new*,astronomy,asteroid,fireball", + "set_id": 1 + }, + { + "name": "metronome-thin", + "content": "", + "style": "outline", + "tags": "music,beat,tempo,bpm", + "set_id": 1 + }, + { + "name": "microphone-thin", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio", + "set_id": 1 + }, + { + "name": "microphone-slash-thin", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio,muted,disabled", + "set_id": 1 + }, + { + "name": "microphone-stage-thin", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,performance,concert", + "set_id": 1 + }, + { + "name": "microscope-thin", + "content": "", + "style": "outline", + "tags": "*new*,science,biology,experiment,magnify", + "set_id": 1 + }, + { + "name": "microsoft-excel-logo-thin", + "content": "", + "style": "outline", + "tags": "tables,spreadsheets,tabular", + "set_id": 1 + }, + { + "name": "microsoft-outlook-logo-thin", + "content": "", + "style": "outline", + "tags": "email,logos", + "set_id": 1 + }, + { + "name": "microsoft-powerpoint-logo-thin", + "content": "", + "style": "outline", + "tags": "slides,slideshow,presentation", + "set_id": 1 + }, + { + "name": "microsoft-teams-logo-thin", + "content": "", + "style": "outline", + "tags": "chat,video conference", + "set_id": 1 + }, + { + "name": "microsoft-word-logo-thin", + "content": "", + "style": "outline", + "tags": "documents,word processor,doc,docx", + "set_id": 1 + }, + { + "name": "minus-thin", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,line,horizontal,divider", + "set_id": 1 + }, + { + "name": "minus-circle-thin", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,round", + "set_id": 1 + }, + { + "name": "minus-square-thin", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "money-thin", + "content": "", + "style": "outline", + "tags": "cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "money-wavy-thin", + "content": "", + "style": "outline", + "tags": "*new*,cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "monitor-thin", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays", + "set_id": 1 + }, + { + "name": "monitor-arrow-up-thin", + "content": "", + "style": "outline", + "tags": "*new*,screen,screencast,screenshare,upload,video,movie", + "set_id": 1 + }, + { + "name": "monitor-play-thin", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays,screencast,video,movie", + "set_id": 1 + }, + { + "name": "moon-thin", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing", + "set_id": 1 + }, + { + "name": "moon-stars-thin", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing,constellation", + "set_id": 1 + }, + { + "name": "moped-thin", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "moped-front-thin", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "mosque-thin", + "content": "", + "style": "outline", + "tags": "islam,muslim,religion,worship", + "set_id": 1 + }, + { + "name": "motorcycle-thin", + "content": "", + "style": "outline", + "tags": "vehicles,motorbike,transportation,travel", + "set_id": 1 + }, + { + "name": "mountains-thin", + "content": "", + "style": "outline", + "tags": "*updated*,hills,outdoors,terrain,geology,adventure", + "set_id": 1 + }, + { + "name": "mouse-thin", + "content": "", + "style": "outline", + "tags": "*updated*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-left-click-thin", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-middle-click-thin", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-right-click-thin", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-scroll-thin", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-simple-thin", + "content": "", + "style": "outline", + "tags": "clicks,input", + "set_id": 1 + }, + { + "name": "music-note-thin", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-note-simple-thin", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-thin", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-minus-thin", + "content": "", + "style": "outline", + "tags": "*new*,songs,audio,playlist,albums,remove,subtract", + "set_id": 1 + }, + { + "name": "music-notes-plus-thin", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums,add", + "set_id": 1 + }, + { + "name": "music-notes-simple-thin", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "navigation-arrow-thin", + "content": "", + "style": "outline", + "tags": "location,directions,compass,gps", + "set_id": 1 + }, + { + "name": "needle-thin", + "content": "", + "style": "outline", + "tags": "sewing,thread,awl,tailor", + "set_id": 1 + }, + { + "name": "network-thin", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan", + "set_id": 1 + }, + { + "name": "network-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,error", + "set_id": 1 + }, + { + "name": "network-x-thin", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,disabled", + "set_id": 1 + }, + { + "name": "newspaper-thin", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "newspaper-clipping-thin", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "not-equals-thin", + "content": "", + "style": "outline", + "tags": "*new*,≠,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-member-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,∉,is not element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-subset-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,⊄,not subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-superset-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,⊉,not superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "notches-thin", + "content": "", + "style": "outline", + "tags": "textarea,resize,drag handle,knurling", + "set_id": 1 + }, + { + "name": "note-thin", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-blank-thin", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-pencil-thin", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "notebook-thin", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,journal,diary,logs,logbook", + "set_id": 1 + }, + { + "name": "notepad-thin", + "content": "", + "style": "outline", + "tags": "*updated*,logs,logbook,notes,note-taking,memorandum,journal,diary", + "set_id": 1 + }, + { + "name": "notification-thin", + "content": "", + "style": "outline", + "tags": "badge,pip", + "set_id": 1 + }, + { + "name": "notion-logo-thin", + "content": "", + "style": "outline", + "tags": "documentation,productivity,wiki,logos", + "set_id": 1 + }, + { + "name": "nuclear-plant-thin", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "number-circle-eight-thin", + "content": "", + "style": "outline", + "tags": "8,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-five-thin", + "content": "", + "style": "outline", + "tags": "5,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-four-thin", + "content": "", + "style": "outline", + "tags": "*updated*,4,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-nine-thin", + "content": "", + "style": "outline", + "tags": "9,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-one-thin", + "content": "", + "style": "outline", + "tags": "1,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-seven-thin", + "content": "", + "style": "outline", + "tags": "7,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-six-thin", + "content": "", + "style": "outline", + "tags": "6,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-three-thin", + "content": "", + "style": "outline", + "tags": "3,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-two-thin", + "content": "", + "style": "outline", + "tags": "2,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-zero-thin", + "content": "", + "style": "outline", + "tags": "0,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-eight-thin", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-five-thin", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-four-thin", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-nine-thin", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-one-thin", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-seven-thin", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-six-thin", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-eight-thin", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-five-thin", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-four-thin", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-nine-thin", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-one-thin", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-seven-thin", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-six-thin", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-three-thin", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-two-thin", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-zero-thin", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-three-thin", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-two-thin", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-zero-thin", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "numpad-thin", + "content": "", + "style": "outline", + "tags": "*new*,dialer,dialpad,call-center,telephone,landline,password,passcode", + "set_id": 1 + }, + { + "name": "nut-thin", + "content": "", + "style": "outline", + "tags": "bolts,screws,machinery,tools,hexagon", + "set_id": 1 + }, + { + "name": "ny-times-logo-thin", + "content": "", + "style": "outline", + "tags": "nyt,new york times,logos,reading,writing,news,newspaper", + "set_id": 1 + }, + { + "name": "octagon-thin", + "content": "", + "style": "outline", + "tags": "8,shapes,polygons", + "set_id": 1 + }, + { + "name": "office-chair-thin", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "onigiri-thin", + "content": "", + "style": "outline", + "tags": "*new*,rice ball,japanese,food,restaurant", + "set_id": 1 + }, + { + "name": "open-ai-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,artificial intelligence,ai,chatgpt,llm,logos", + "set_id": 1 + }, + { + "name": "option-thin", + "content": "", + "style": "outline", + "tags": "keyboard,shortcut,modifier", + "set_id": 1 + }, + { + "name": "orange-thin", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "orange-slice-thin", + "content": "", + "style": "outline", + "tags": "food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "oven-thin", + "content": "", + "style": "outline", + "tags": "*new*,stove,stovetop,food,cooking,cuisine,kitchen", + "set_id": 1 + }, + { + "name": "package-thin", + "content": "", + "style": "outline", + "tags": "packages,boxes,delivery,mail,postal service,bundles,library,libraries,shipping", + "set_id": 1 + }, + { + "name": "paint-brush-thin", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-broad-thin", + "content": "", + "style": "outline", + "tags": "fill,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-household-thin", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-bucket-thin", + "content": "", + "style": "outline", + "tags": "*updated*,paintbucket,colors,color picker,fill,arts", + "set_id": 1 + }, + { + "name": "paint-roller-thin", + "content": "", + "style": "outline", + "tags": "colors,color picker,fill,arts,theme", + "set_id": 1 + }, + { + "name": "palette-thin", + "content": "", + "style": "outline", + "tags": "paint,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "panorama-thin", + "content": "", + "style": "outline", + "tags": "*new*,image,picture,photography,landscape,360", + "set_id": 1 + }, + { + "name": "pants-thin", + "content": "", + "style": "outline", + "tags": "clothing,clothes,jeans", + "set_id": 1 + }, + { + "name": "paper-plane-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-right-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-tilt-thin", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paperclip-thin", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "paperclip-horizontal-thin", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "parachute-thin", + "content": "", + "style": "outline", + "tags": "skydiving,safety", + "set_id": 1 + }, + { + "name": "paragraph-thin", + "content": "", + "style": "outline", + "tags": "pilcrow", + "set_id": 1 + }, + { + "name": "parallelogram-thin", + "content": "", + "style": "outline", + "tags": "shapes,bandcamp,logos", + "set_id": 1 + }, + { + "name": "park-thin", + "content": "", + "style": "outline", + "tags": "bench,outdoors", + "set_id": 1 + }, + { + "name": "password-thin", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "path-thin", + "content": "", + "style": "outline", + "tags": "transit,travel,trail,gps,navigation,route,destination,vector", + "set_id": 1 + }, + { + "name": "patreon-logo-thin", + "content": "", + "style": "outline", + "tags": "*updated*,crowdfunding,logos", + "set_id": 1 + }, + { + "name": "pause-thin", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "pause-circle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop,round", + "set_id": 1 + }, + { + "name": "paw-print-thin", + "content": "", + "style": "outline", + "tags": "pets,pet store,pet shop,animals,cat,dog,veterinarian", + "set_id": 1 + }, + { + "name": "paypal-logo-thin", + "content": "", + "style": "outline", + "tags": "payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "peace-thin", + "content": "", + "style": "outline", + "tags": "love,hippies,peace sign,symbols", + "set_id": 1 + }, + { + "name": "pen-thin", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pen-nib-thin", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pen-nib-straight-thin", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pencil-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-circle-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-line-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-ruler-thin", + "content": "", + "style": "outline", + "tags": "*new*,drawing,drafting,construction,tools", + "set_id": 1 + }, + { + "name": "pencil-simple-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-line-thin", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-slash-thin", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pencil-slash-thin", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pentagon-thin", + "content": "", + "style": "outline", + "tags": "*new*,shapes,polygons,5", + "set_id": 1 + }, + { + "name": "pentagram-thin", + "content": "", + "style": "outline", + "tags": "star,wicca,satan,satanism,religion,spirituality,evil,magic", + "set_id": 1 + }, + { + "name": "pepper-thin", + "content": "", + "style": "outline", + "tags": "food,spicy,chile,vegetable", + "set_id": 1 + }, + { + "name": "percent-thin", + "content": "", + "style": "outline", + "tags": "%,percentage,percentile,ratio,delta,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "person-thin", + "content": "", + "style": "outline", + "tags": "walking,human,woman,man,body,transit,transportation,travel,commuter,user", + "set_id": 1 + }, + { + "name": "person-arms-spread-thin", + "content": "", + "style": "outline", + "tags": "accessibility,vitruvian,stretch,sports", + "set_id": 1 + }, + { + "name": "person-simple-thin", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-bike-thin", + "content": "", + "style": "outline", + "tags": "pedestrian,biking,bicycle,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-circle-thin", + "content": "", + "style": "outline", + "tags": "*new*,human,accessibility,a11y,vitruvius,vitruvian", + "set_id": 1 + }, + { + "name": "person-simple-hike-thin", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,climbing,mountaineering,bouldering", + "set_id": 1 + }, + { + "name": "person-simple-run-thin", + "content": "", + "style": "outline", + "tags": "pedestrian,running,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-ski-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,skiing,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-snowboard-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,snowboarding,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-swim-thin", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,swimming,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-tai-chi-thin", + "content": "", + "style": "outline", + "tags": "*new*,mindfulness,martial arts,meditation,sports,exercise,yoga", + "set_id": 1 + }, + { + "name": "person-simple-throw-thin", + "content": "", + "style": "outline", + "tags": "pedestrian,tennis,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-walk-thin", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "perspective-thin", + "content": "", + "style": "outline", + "tags": "3d,skew,warp,trapezoid", + "set_id": 1 + }, + { + "name": "phone-thin", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-call-thin", + "content": "", + "style": "outline", + "tags": "calls,calling,ringing,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-disconnect-thin", + "content": "", + "style": "outline", + "tags": "calls,hang up,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-incoming-thin", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-list-thin", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-outgoing-thin", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-pause-thin", + "content": "", + "style": "outline", + "tags": "*new*,calls,hold,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-plus-thin", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk,conference,add", + "set_id": 1 + }, + { + "name": "phone-slash-thin", + "content": "", + "style": "outline", + "tags": "calls,disabled,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-transfer-thin", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-x-thin", + "content": "", + "style": "outline", + "tags": "calls,missed,errors,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phosphor-logo-thin", + "content": "", + "style": "outline", + "tags": "logos", + "set_id": 1 + }, + { + "name": "pi-thin", + "content": "", + "style": "outline", + "tags": "π,symbol,mathematics,circle", + "set_id": 1 + }, + { + "name": "piano-keys-thin", + "content": "", + "style": "outline", + "tags": "music,instrument,keyboard", + "set_id": 1 + }, + { + "name": "picnic-table-thin", + "content": "", + "style": "outline", + "tags": "*new*,bench,park,outdoors", + "set_id": 1 + }, + { + "name": "picture-in-picture-thin", + "content": "", + "style": "outline", + "tags": "pip,pop-out,minimize,maximize", + "set_id": 1 + }, + { + "name": "piggy-bank-thin", + "content": "", + "style": "outline", + "tags": "savings,deposit,money,coins", + "set_id": 1 + }, + { + "name": "pill-thin", + "content": "", + "style": "outline", + "tags": "capsule,medicine,rx,pharmacy,pharmacist,pharmaceuticals,prescription,drugs", + "set_id": 1 + }, + { + "name": "ping-pong-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,paddle", + "set_id": 1 + }, + { + "name": "pint-glass-thin", + "content": "", + "style": "outline", + "tags": "*new*,water,beverage,drinks,beverages,food,dining", + "set_id": 1 + }, + { + "name": "pinterest-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,vision board,mood board,social media", + "set_id": 1 + }, + { + "name": "pinwheel-thin", + "content": "", + "style": "outline", + "tags": "toys,whirligig", + "set_id": 1 + }, + { + "name": "pipe-thin", + "content": "", + "style": "outline", + "tags": "*new*,tube,plumber,plumbing,construction", + "set_id": 1 + }, + { + "name": "pipe-wrench-thin", + "content": "", + "style": "outline", + "tags": "*new*,plumber,plumbing,tools,construction", + "set_id": 1 + }, + { + "name": "pix-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "pizza-thin", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "placeholder-thin", + "content": "", + "style": "outline", + "tags": "empty,notdef,tofu,rectangle slash,missing", + "set_id": 1 + }, + { + "name": "planet-thin", + "content": "", + "style": "outline", + "tags": "saturn,world,globe,astronomy,space", + "set_id": 1 + }, + { + "name": "plant-thin", + "content": "", + "style": "outline", + "tags": "sprout,vegan,farm,farming,garden,gardening", + "set_id": 1 + }, + { + "name": "play-thin", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start", + "set_id": 1 + }, + { + "name": "play-circle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,round", + "set_id": 1 + }, + { + "name": "play-pause-thin", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "playlist-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,queue", + "set_id": 1 + }, + { + "name": "plug-thin", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plug-charging-thin", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,charge,charging", + "set_id": 1 + }, + { + "name": "plugs-thin", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,disconnected", + "set_id": 1 + }, + { + "name": "plugs-connected-thin", + "content": "", + "style": "outline", + "tags": "*updated*,outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plus-thin", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "plus-circle-thin", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,round,+", + "set_id": 1 + }, + { + "name": "plus-minus-thin", + "content": "", + "style": "outline", + "tags": "plus or minus,plus/minus,add/subtract,addition,sum,subtraction,difference,mathematics,arithmetic,calculator,+,-,±", + "set_id": 1 + }, + { + "name": "plus-square-thin", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "poker-chip-thin", + "content": "", + "style": "outline", + "tags": "chips,tokens,cards,gambling,casino", + "set_id": 1 + }, + { + "name": "police-car-thin", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,law enforcement", + "set_id": 1 + }, + { + "name": "polygon-thin", + "content": "", + "style": "outline", + "tags": "shapes,drawing", + "set_id": 1 + }, + { + "name": "popcorn-thin", + "content": "", + "style": "outline", + "tags": "food,movies,theater", + "set_id": 1 + }, + { + "name": "popsicle-thin", + "content": "", + "style": "outline", + "tags": "*new*,ice cream,dessert,summer,food", + "set_id": 1 + }, + { + "name": "potted-plant-thin", + "content": "", + "style": "outline", + "tags": "sprout,vegan,garden,gardening", + "set_id": 1 + }, + { + "name": "power-thin", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,on,off,on/off,switch,power switch", + "set_id": 1 + }, + { + "name": "prescription-thin", + "content": "", + "style": "outline", + "tags": "rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor", + "set_id": 1 + }, + { + "name": "presentation-thin", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "presentation-chart-thin", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,graphs,graphing,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "printer-thin", + "content": "", + "style": "outline", + "tags": "printing", + "set_id": 1 + }, + { + "name": "prohibit-thin", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "prohibit-inset-thin", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "projector-screen-thin", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,movies,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "projector-screen-chart-thin", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "pulse-thin", + "content": "", + "style": "outline", + "tags": "activity,heartbeat,medical,ecg,ekg,vitals,monitor,medicine", + "set_id": 1 + }, + { + "name": "push-pin-thin", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-thin", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-slash-thin", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "push-pin-slash-thin", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "puzzle-piece-thin", + "content": "", + "style": "outline", + "tags": "board game,element,component,extension,plugin", + "set_id": 1 + }, + { + "name": "qr-code-thin", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "question-thin", + "content": "", + "style": "outline", + "tags": "information,help,support,questions", + "set_id": 1 + }, + { + "name": "question-mark-thin", + "content": "", + "style": "outline", + "tags": "*new*,?,information,help,support,questions,punctuation,symbol", + "set_id": 1 + }, + { + "name": "queue-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,playlist", + "set_id": 1 + }, + { + "name": "quotes-thin", + "content": "", + "style": "outline", + "tags": "quoations,quotation marks,double-quotes,writing,books", + "set_id": 1 + }, + { + "name": "rabbit-thin", + "content": "", + "style": "outline", + "tags": "*new*,hare,fast,animal", + "set_id": 1 + }, + { + "name": "racquet-thin", + "content": "", + "style": "outline", + "tags": "*new*,sports,tennis,squash,pickleball", + "set_id": 1 + }, + { + "name": "radical-thin", + "content": "", + "style": "outline", + "tags": "√,radix,radicand,square root,squareroot,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "radio-thin", + "content": "", + "style": "outline", + "tags": "broadcast,fm,am,xm,transmitter,receiver", + "set_id": 1 + }, + { + "name": "radio-button-thin", + "content": "", + "style": "outline", + "tags": "input,checkbox,checked", + "set_id": 1 + }, + { + "name": "radioactive-thin", + "content": "", + "style": "outline", + "tags": "radiation,danger,warning,nuclear,atomic", + "set_id": 1 + }, + { + "name": "rainbow-thin", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,arc,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "rainbow-cloud-thin", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,cloudy,partly cloudy,partly sunny,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "ranking-thin", + "content": "", + "style": "outline", + "tags": "*new*,medal,rank,leaderboard,winner,sports", + "set_id": 1 + }, + { + "name": "read-cv-logo-thin", + "content": "", + "style": "outline", + "tags": "resume,jobs,logos", + "set_id": 1 + }, + { + "name": "receipt-thin", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense", + "set_id": 1 + }, + { + "name": "receipt-x-thin", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense,cancel", + "set_id": 1 + }, + { + "name": "record-thin", + "content": "", + "style": "outline", + "tags": "music,audio,recording,recorder,voice memo", + "set_id": 1 + }, + { + "name": "rectangle-thin", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "rectangle-dashed-thin", + "content": "", + "style": "outline", + "tags": "*new*,4,shapes,polygons,box,missing", + "set_id": 1 + }, + { + "name": "recycle-thin", + "content": "", + "style": "outline", + "tags": "recycling,trash,environmental,green", + "set_id": 1 + }, + { + "name": "reddit-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,subreddit,snoo,social media", + "set_id": 1 + }, + { + "name": "repeat-thin", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "repeat-once-thin", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "replit-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,logos,ide,editor,coding", + "set_id": 1 + }, + { + "name": "resize-thin", + "content": "", + "style": "outline", + "tags": "*new*,maximize,expand,grow", + "set_id": 1 + }, + { + "name": "rewind-thin", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "rewind-circle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "road-horizon-thin", + "content": "", + "style": "outline", + "tags": "trip,drive,road,travel,transportation,highway", + "set_id": 1 + }, + { + "name": "robot-thin", + "content": "", + "style": "outline", + "tags": "automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "rocket-thin", + "content": "", + "style": "outline", + "tags": "spaceship,launch,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rocket-launch-thin", + "content": "", + "style": "outline", + "tags": "*updated*,spaceship,flying,blastoff,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rows-thin", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "rows-plus-bottom-thin", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rows-plus-top-thin", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rss-thin", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rss-simple-thin", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rug-thin", + "content": "", + "style": "outline", + "tags": "*updated*,tapestry,carpet", + "set_id": 1 + }, + { + "name": "ruler-thin", + "content": "", + "style": "outline", + "tags": "measure,scale,distance", + "set_id": 1 + }, + { + "name": "sailboat-thin", + "content": "", + "style": "outline", + "tags": "*new*,sailing,ship,vehicles,transportation,sports,places,locations", + "set_id": 1 + }, + { + "name": "scales-thin", + "content": "", + "style": "outline", + "tags": "measure,balance,law,justice,government", + "set_id": 1 + }, + { + "name": "scan-thin", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "scan-smiley-thin", + "content": "", + "style": "outline", + "tags": "*new*,facial recognition,face unlock,scanner", + "set_id": 1 + }, + { + "name": "scissors-thin", + "content": "", + "style": "outline", + "tags": "*updated*,cut,snip,clipboard", + "set_id": 1 + }, + { + "name": "scooter-thin", + "content": "", + "style": "outline", + "tags": "vehicles,transportation,travel,transit", + "set_id": 1 + }, + { + "name": "screencast-thin", + "content": "", + "style": "outline", + "tags": "apple,airplay,screencasting,screen share,television,tv", + "set_id": 1 + }, + { + "name": "screwdriver-thin", + "content": "", + "style": "outline", + "tags": "*new*,tools,construction,flathead,drill", + "set_id": 1 + }, + { + "name": "scribble-thin", + "content": "", + "style": "outline", + "tags": "*new*,doodles,squiggle,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scribble-loop-thin", + "content": "", + "style": "outline", + "tags": "doodles,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scroll-thin", + "content": "", + "style": "outline", + "tags": "*updated*,parchment,paper,script,spell,fantasy", + "set_id": 1 + }, + { + "name": "seal-thin", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-check-thin", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-percent-thin", + "content": "", + "style": "outline", + "tags": "*new*,badge,discount,sale,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-question-thin", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-warning-thin", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,errors,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seat-thin", + "content": "", + "style": "outline", + "tags": "*new*,chair,car seat,airplane seat,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "seatbelt-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,safety", + "set_id": 1 + }, + { + "name": "security-camera-thin", + "content": "", + "style": "outline", + "tags": "*new*,cctv,surveillance,video,monitor,motion detector,safety", + "set_id": 1 + }, + { + "name": "selection-thin", + "content": "", + "style": "outline", + "tags": "marquis,select,square dashed", + "set_id": 1 + }, + { + "name": "selection-all-thin", + "content": "", + "style": "outline", + "tags": "marquis,select all", + "set_id": 1 + }, + { + "name": "selection-background-thin", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-foreground-thin", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-inverse-thin", + "content": "", + "style": "outline", + "tags": "marquis,invert", + "set_id": 1 + }, + { + "name": "selection-plus-thin", + "content": "", + "style": "outline", + "tags": "marquis,add", + "set_id": 1 + }, + { + "name": "selection-slash-thin", + "content": "", + "style": "outline", + "tags": "marquis,unselect", + "set_id": 1 + }, + { + "name": "shapes-thin", + "content": "", + "style": "outline", + "tags": "geometry,square,circle,triangle", + "set_id": 1 + }, + { + "name": "share-thin", + "content": "", + "style": "outline", + "tags": "send to,export,arrows", + "set_id": 1 + }, + { + "name": "share-fat-thin", + "content": "", + "style": "outline", + "tags": "export,send to", + "set_id": 1 + }, + { + "name": "share-network-thin", + "content": "", + "style": "outline", + "tags": "send to,export", + "set_id": 1 + }, + { + "name": "shield-thin", + "content": "", + "style": "outline", + "tags": "badge,security,secured,defense,defended,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-check-thin", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-checkered-thin", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-chevron-thin", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-plus-thin", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-slash-thin", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,disabled", + "set_id": 1 + }, + { + "name": "shield-star-thin", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-warning-thin", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,errors", + "set_id": 1 + }, + { + "name": "shipping-container-thin", + "content": "", + "style": "outline", + "tags": "*new*,shipping,transportation,places,locations", + "set_id": 1 + }, + { + "name": "shirt-folded-thin", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "shooting-star-thin", + "content": "", + "style": "outline", + "tags": "wish,comet,meteor", + "set_id": 1 + }, + { + "name": "shopping-bag-thin", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-bag-open-thin", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-thin", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-simple-thin", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shovel-thin", + "content": "", + "style": "outline", + "tags": "*new*,tools,digging,construction", + "set_id": 1 + }, + { + "name": "shower-thin", + "content": "", + "style": "outline", + "tags": "bath,bathtub,bathroom,faucet", + "set_id": 1 + }, + { + "name": "shrimp-thin", + "content": "", + "style": "outline", + "tags": "food,seafood,prawn", + "set_id": 1 + }, + { + "name": "shuffle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-angular-thin", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-simple-thin", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "sidebar-thin", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sidebar-simple-thin", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sigma-thin", + "content": "", + "style": "outline", + "tags": "σ,symbol,mathematics,sum", + "set_id": 1 + }, + { + "name": "sign-in-thin", + "content": "", + "style": "outline", + "tags": "*updated*,signin,login,log in,enter", + "set_id": 1 + }, + { + "name": "sign-out-thin", + "content": "", + "style": "outline", + "tags": "*updated*,signout,logout,log out,exit", + "set_id": 1 + }, + { + "name": "signature-thin", + "content": "", + "style": "outline", + "tags": "*updated*,sign,autograph,verify", + "set_id": 1 + }, + { + "name": "signpost-thin", + "content": "", + "style": "outline", + "tags": "direction,traffic,road sign,transit,transportation", + "set_id": 1 + }, + { + "name": "sim-card-thin", + "content": "", + "style": "outline", + "tags": "*updated*,cellular,cellphone,mobile", + "set_id": 1 + }, + { + "name": "siren-thin", + "content": "", + "style": "outline", + "tags": "alarm,police,lights,warning", + "set_id": 1 + }, + { + "name": "sketch-logo-thin", + "content": "", + "style": "outline", + "tags": "drawing,art,illustration,ui,interface,prototype,prototyping,gemstone,diamond", + "set_id": 1 + }, + { + "name": "skip-back-thin", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-back-circle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-forward-thin", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skip-forward-circle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skull-thin", + "content": "", + "style": "outline", + "tags": "death,dead,kill", + "set_id": 1 + }, + { + "name": "skype-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,chat,video conference", + "set_id": 1 + }, + { + "name": "slack-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,messaging", + "set_id": 1 + }, + { + "name": "sliders-thin", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "sliders-horizontal-thin", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "slideshow-thin", + "content": "", + "style": "outline", + "tags": "pictures,images,photography,gallery,carousel", + "set_id": 1 + }, + { + "name": "smiley-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-angry-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,mad,frown", + "set_id": 1 + }, + { + "name": "smiley-blank-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,no face", + "set_id": 1 + }, + { + "name": "smiley-meh-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,neutral", + "set_id": 1 + }, + { + "name": "smiley-melting-thin", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,embarrassment,sarcasm,shame,hot,heat", + "set_id": 1 + }, + { + "name": "smiley-nervous-thin", + "content": "", + "style": "outline", + "tags": "*updated*,face,emoji,anxious,uncomfortable,uneasy,queasy,sick,ill", + "set_id": 1 + }, + { + "name": "smiley-sad-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,unhappy,frowning", + "set_id": 1 + }, + { + "name": "smiley-sticker-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-wink-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,winking,flirting,cute", + "set_id": 1 + }, + { + "name": "smiley-x-eyes-thin", + "content": "", + "style": "outline", + "tags": "face,emoji,dead,killed,unconscious", + "set_id": 1 + }, + { + "name": "snapchat-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,messaging,social media", + "set_id": 1 + }, + { + "name": "sneaker-thin", + "content": "", + "style": "outline", + "tags": "clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "sneaker-move-thin", + "content": "", + "style": "outline", + "tags": "*updated*,clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "snowflake-thin", + "content": "", + "style": "outline", + "tags": "meteorology,snowy,snowing,snowstorm", + "set_id": 1 + }, + { + "name": "soccer-ball-thin", + "content": "", + "style": "outline", + "tags": "*updated*,sports,football,mls", + "set_id": 1 + }, + { + "name": "sock-thin", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "solar-panel-thin", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "solar-roof-thin", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "sort-ascending-thin", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,increasing,a to z,arrows,list", + "set_id": 1 + }, + { + "name": "sort-descending-thin", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,decreasing,z to a,arrows,list", + "set_id": 1 + }, + { + "name": "soundcloud-logo-thin", + "content": "", + "style": "outline", + "tags": "music,social media,logos", + "set_id": 1 + }, + { + "name": "spade-thin", + "content": "", + "style": "outline", + "tags": "spades,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "sparkle-thin", + "content": "", + "style": "outline", + "tags": "star,rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "speaker-hifi-thin", + "content": "", + "style": "outline", + "tags": "music,audio,sound,stereo", + "set_id": 1 + }, + { + "name": "speaker-high-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-low-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-none-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-high-thin", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-low-thin", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-none-thin", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-slash-thin", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-simple-x-thin", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speaker-slash-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-x-thin", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speedometer-thin", + "content": "", + "style": "outline", + "tags": "*new*,gauge,dashboard,meter,speed,odometer,performance", + "set_id": 1 + }, + { + "name": "sphere-thin", + "content": "", + "style": "outline", + "tags": "*new*,circle,ball,3d,mesh,cad,model", + "set_id": 1 + }, + { + "name": "spinner-thin", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-ball-thin", + "content": "", + "style": "outline", + "tags": "*new*,loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-gap-thin", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spiral-thin", + "content": "", + "style": "outline", + "tags": "*updated*,spin,rotate,dizzy", + "set_id": 1 + }, + { + "name": "split-horizontal-thin", + "content": "", + "style": "outline", + "tags": "resize,columns", + "set_id": 1 + }, + { + "name": "split-vertical-thin", + "content": "", + "style": "outline", + "tags": "resize,rows", + "set_id": 1 + }, + { + "name": "spotify-logo-thin", + "content": "", + "style": "outline", + "tags": "music,player,streaming", + "set_id": 1 + }, + { + "name": "spray-bottle-thin", + "content": "", + "style": "outline", + "tags": "*new*,cleaner,cleaning", + "set_id": 1 + }, + { + "name": "square-thin", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "square-half-thin", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-half-bottom-thin", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-logo-thin", + "content": "", + "style": "outline", + "tags": "squareup,payment", + "set_id": 1 + }, + { + "name": "square-split-horizontal-thin", + "content": "", + "style": "outline", + "tags": "shapes,polygons,columns", + "set_id": 1 + }, + { + "name": "square-split-vertical-thin", + "content": "", + "style": "outline", + "tags": "shapes,polygons,rows", + "set_id": 1 + }, + { + "name": "squares-four-thin", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,apps,applications,grid,table,microsoft,logos", + "set_id": 1 + }, + { + "name": "stack-thin", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stack-minus-thin", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,remove,delete", + "set_id": 1 + }, + { + "name": "stack-overflow-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,code", + "set_id": 1 + }, + { + "name": "stack-plus-thin", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,add", + "set_id": 1 + }, + { + "name": "stack-simple-thin", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stairs-thin", + "content": "", + "style": "outline", + "tags": "staircase,steps,escalator,exit,signs", + "set_id": 1 + }, + { + "name": "stamp-thin", + "content": "", + "style": "outline", + "tags": "clone,seal,official", + "set_id": 1 + }, + { + "name": "standard-definition-thin", + "content": "", + "style": "outline", + "tags": "*new*,sd,resolution,video", + "set_id": 1 + }, + { + "name": "star-thin", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-and-crescent-thin", + "content": "", + "style": "outline", + "tags": "islam,muslim,moon,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "star-four-thin", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-half-thin", + "content": "", + "style": "outline", + "tags": "rate,ratings", + "set_id": 1 + }, + { + "name": "star-of-david-thin", + "content": "", + "style": "outline", + "tags": "judaism,jewish,hexagram,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "steam-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,gaming,games", + "set_id": 1 + }, + { + "name": "steering-wheel-thin", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobiles,driving", + "set_id": 1 + }, + { + "name": "steps-thin", + "content": "", + "style": "outline", + "tags": "stairs,staircase,exit,signs", + "set_id": 1 + }, + { + "name": "stethoscope-thin", + "content": "", + "style": "outline", + "tags": "hospital,medical,medicine,injury,safety,emergency,doctor,heart", + "set_id": 1 + }, + { + "name": "sticker-thin", + "content": "", + "style": "outline", + "tags": "stickers,sticker pack,labels", + "set_id": 1 + }, + { + "name": "stool-thin", + "content": "", + "style": "outline", + "tags": "chair,seat,furniture", + "set_id": 1 + }, + { + "name": "stop-thin", + "content": "", + "style": "outline", + "tags": "music,audio", + "set_id": 1 + }, + { + "name": "stop-circle-thin", + "content": "", + "style": "outline", + "tags": "music,audio,round", + "set_id": 1 + }, + { + "name": "storefront-thin", + "content": "", + "style": "outline", + "tags": "shops,shopping,markets,stores,buildings,places,locations", + "set_id": 1 + }, + { + "name": "strategy-thin", + "content": "", + "style": "outline", + "tags": "sports,strategem,plan,tic-tac-toe", + "set_id": 1 + }, + { + "name": "stripe-logo-thin", + "content": "", + "style": "outline", + "tags": "payment", + "set_id": 1 + }, + { + "name": "student-thin", + "content": "", + "style": "outline", + "tags": "pupil,graduate,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "subset-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,⊆,subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subset-proper-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,⊂,proper subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subtitles-thin", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "subtitles-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,subtitles,television,tv,transcribed,transcription,accessibility,a11y,disabled", + "set_id": 1 + }, + { + "name": "subtract-thin", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subtract-square-thin", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subway-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,underground,train,tunnel,metro,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "suitcase-thin", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "suitcase-rolling-thin", + "content": "", + "style": "outline", + "tags": "suitcase,luggage,travel,transportation", + "set_id": 1 + }, + { + "name": "suitcase-simple-thin", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "sun-thin", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,lighten,brighten", + "set_id": 1 + }, + { + "name": "sun-dim-thin", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,darken", + "set_id": 1 + }, + { + "name": "sun-horizon-thin", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,sunrise,sunset", + "set_id": 1 + }, + { + "name": "sunglasses-thin", + "content": "", + "style": "outline", + "tags": "vision,sun,spectacles", + "set_id": 1 + }, + { + "name": "superset-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,⊇,superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "superset-proper-of-thin", + "content": "", + "style": "outline", + "tags": "*new*,⊃,proper superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "swap-thin", + "content": "", + "style": "outline", + "tags": "layers,replace,exchange,reverse", + "set_id": 1 + }, + { + "name": "swatches-thin", + "content": "", + "style": "outline", + "tags": "colors,color picker,samples,pantone", + "set_id": 1 + }, + { + "name": "swimming-pool-thin", + "content": "", + "style": "outline", + "tags": "swim,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "sword-thin", + "content": "", + "style": "outline", + "tags": "weapon,knife,dagger,gladius,video games,rpg,gaming,war", + "set_id": 1 + }, + { + "name": "synagogue-thin", + "content": "", + "style": "outline", + "tags": "jewish,judaism,temple,religion,worship", + "set_id": 1 + }, + { + "name": "syringe-thin", + "content": "", + "style": "outline", + "tags": "needle,hypodermic,vaccine,medicine,doctor,shot,hospital", + "set_id": 1 + }, + { + "name": "t-shirt-thin", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "table-thin", + "content": "", + "style": "outline", + "tags": "tables,tabular,speadsheets,excel,grid,form", + "set_id": 1 + }, + { + "name": "tabs-thin", + "content": "", + "style": "outline", + "tags": "*updated*,browser,window,folders,files", + "set_id": 1 + }, + { + "name": "tag-thin", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "tag-chevron-thin", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale", + "set_id": 1 + }, + { + "name": "tag-simple-thin", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "target-thin", + "content": "", + "style": "outline", + "tags": "bullseye,radar,archery,accuracy,precision", + "set_id": 1 + }, + { + "name": "taxi-thin", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,livery,limousine,uber", + "set_id": 1 + }, + { + "name": "tea-bag-thin", + "content": "", + "style": "outline", + "tags": "*new*,drinks,beverages,sachet,caffeine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "telegram-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "television-thin", + "content": "", + "style": "outline", + "tags": "screen,tv,displays", + "set_id": 1 + }, + { + "name": "television-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,screen,tv,displays", + "set_id": 1 + }, + { + "name": "tennis-ball-thin", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "tent-thin", + "content": "", + "style": "outline", + "tags": "camping,outdoors,tarp", + "set_id": 1 + }, + { + "name": "terminal-thin", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "terminal-window-thin", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "test-tube-thin", + "content": "", + "style": "outline", + "tags": "science,chemistry,experiment,vial", + "set_id": 1 + }, + { + "name": "text-a-underline-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "text-aa-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-align-center-thin", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,centered", + "set_id": 1 + }, + { + "name": "text-align-justify-thin", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,justified", + "set_id": 1 + }, + { + "name": "text-align-left-thin", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush left", + "set_id": 1 + }, + { + "name": "text-align-right-thin", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush right", + "set_id": 1 + }, + { + "name": "text-b-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,bold,boldface,emphasis", + "set_id": 1 + }, + { + "name": "text-columns-thin", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,article", + "set_id": 1 + }, + { + "name": "text-h-thin", + "content": "", + "style": "outline", + "tags": "heading,typography,print", + "set_id": 1 + }, + { + "name": "text-h-five-thin", + "content": "", + "style": "outline", + "tags": "heading,h5,typography,print", + "set_id": 1 + }, + { + "name": "text-h-four-thin", + "content": "", + "style": "outline", + "tags": "*updated*,heading,h4,typography,print", + "set_id": 1 + }, + { + "name": "text-h-one-thin", + "content": "", + "style": "outline", + "tags": "heading,h1,typography,print", + "set_id": 1 + }, + { + "name": "text-h-six-thin", + "content": "", + "style": "outline", + "tags": "heading,h6,typography,print", + "set_id": 1 + }, + { + "name": "text-h-three-thin", + "content": "", + "style": "outline", + "tags": "heading,h3,typography,print", + "set_id": 1 + }, + { + "name": "text-h-two-thin", + "content": "", + "style": "outline", + "tags": "heading,h2,typography,print", + "set_id": 1 + }, + { + "name": "text-indent-thin", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,menu", + "set_id": 1 + }, + { + "name": "text-italic-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,slant,oblique,stress,emphasis,calligraphy", + "set_id": 1 + }, + { + "name": "text-outdent-thin", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,unindent,dedent,menu", + "set_id": 1 + }, + { + "name": "text-strikethrough-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,struck,remove,delete,change", + "set_id": 1 + }, + { + "name": "text-subscript-thin", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,power,exponent,calculator", + "set_id": 1 + }, + { + "name": "text-superscript-thin", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,calculator", + "set_id": 1 + }, + { + "name": "text-t-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-t-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,typography,typeface,print,font,formatting,clear", + "set_id": 1 + }, + { + "name": "text-underline-thin", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "textbox-thin", + "content": "", + "style": "outline", + "tags": "input,cursor,field", + "set_id": 1 + }, + { + "name": "thermometer-thin", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "thermometer-cold-thin", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit", + "set_id": 1 + }, + { + "name": "thermometer-hot-thin", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,warm", + "set_id": 1 + }, + { + "name": "thermometer-simple-thin", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "threads-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,meta,instagram,social media", + "set_id": 1 + }, + { + "name": "three-d-thin", + "content": "", + "style": "outline", + "tags": "*new*,3d,cad,model", + "set_id": 1 + }, + { + "name": "thumbs-down-thin", + "content": "", + "style": "outline", + "tags": "dislike,hate,emoji,no", + "set_id": 1 + }, + { + "name": "thumbs-up-thin", + "content": "", + "style": "outline", + "tags": "like,love,favorited,favorites,emoji,yes", + "set_id": 1 + }, + { + "name": "ticket-thin", + "content": "", + "style": "outline", + "tags": "ticketstub,movie ticket,entry,admissions,events", + "set_id": 1 + }, + { + "name": "tidal-logo-thin", + "content": "", + "style": "outline", + "tags": "music,logos", + "set_id": 1 + }, + { + "name": "tiktok-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "tilde-thin", + "content": "", + "style": "outline", + "tags": "*new*,~,∼,proportional,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "timer-thin", + "content": "", + "style": "outline", + "tags": "clock,alarm,schedule,events,stopwatch,sports", + "set_id": 1 + }, + { + "name": "tip-jar-thin", + "content": "", + "style": "outline", + "tags": "*new*,give,deposit,donation,savings,money", + "set_id": 1 + }, + { + "name": "tipi-thin", + "content": "", + "style": "outline", + "tags": "teepee,lodge,tent,outdoors,camping,tarp", + "set_id": 1 + }, + { + "name": "tire-thin", + "content": "", + "style": "outline", + "tags": "*new*,wheel,vehicles,transportation", + "set_id": 1 + }, + { + "name": "toggle-left-thin", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toggle-right-thin", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toilet-thin", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toilet-paper-thin", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toolbox-thin", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "tooth-thin", + "content": "", + "style": "outline", + "tags": "teeth,dentistry,medical,medicine,doctor,cavity", + "set_id": 1 + }, + { + "name": "tornado-thin", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,twister,storm,wind,disaster", + "set_id": 1 + }, + { + "name": "tote-thin", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "tote-simple-thin", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "towel-thin", + "content": "", + "style": "outline", + "tags": "*new*,clothing,linen,hotel,beach,pool,swimming,shower,bath", + "set_id": 1 + }, + { + "name": "tractor-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "trademark-thin", + "content": "", + "style": "outline", + "tags": "tm,®,™,intellectual property", + "set_id": 1 + }, + { + "name": "trademark-registered-thin", + "content": "", + "style": "outline", + "tags": "®,™,intellectual property", + "set_id": 1 + }, + { + "name": "traffic-cone-thin", + "content": "", + "style": "outline", + "tags": "pylon,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-sign-thin", + "content": "", + "style": "outline", + "tags": "road signs,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-signal-thin", + "content": "", + "style": "outline", + "tags": "stop light,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "train-thin", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-regional-thin", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,freight,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-simple-thin", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "tram-thin", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,light rail,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "translate-thin", + "content": "", + "style": "outline", + "tags": "translation,languages,internationalization,i18n,speech", + "set_id": 1 + }, + { + "name": "trash-thin", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "trash-simple-thin", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "tray-thin", + "content": "", + "style": "outline", + "tags": "inbox,mailbox,bin", + "set_id": 1 + }, + { + "name": "tray-arrow-down-thin", + "content": "", + "style": "outline", + "tags": "inbox,saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "tray-arrow-up-thin", + "content": "", + "style": "outline", + "tags": "*new*,outbox,archival,unarchive,uploaded,uploading", + "set_id": 1 + }, + { + "name": "treasure-chest-thin", + "content": "", + "style": "outline", + "tags": "*new*,loot,lootbox,inventory,rewards,gaming,pirate", + "set_id": 1 + }, + { + "name": "tree-thin", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-evergreen-thin", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,pine,conifer,green,environmental", + "set_id": 1 + }, + { + "name": "tree-palm-thin", + "content": "", + "style": "outline", + "tags": "tropical,beach,plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-structure-thin", + "content": "", + "style": "outline", + "tags": "data structures,family tree,genealogy,hierarchy,taxonomy,charts,flowchart", + "set_id": 1 + }, + { + "name": "tree-view-thin", + "content": "", + "style": "outline", + "tags": "*new*,hierarchy", + "set_id": 1 + }, + { + "name": "trend-down-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,decrease,arrows", + "set_id": 1 + }, + { + "name": "trend-up-thin", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,increase,arrows", + "set_id": 1 + }, + { + "name": "triangle-thin", + "content": "", + "style": "outline", + "tags": "3,shapes,polygons", + "set_id": 1 + }, + { + "name": "triangle-dashed-thin", + "content": "", + "style": "outline", + "tags": "*new*,3,shapes,polygons,missing", + "set_id": 1 + }, + { + "name": "trolley-thin", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trolley-suitcase-thin", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trophy-thin", + "content": "", + "style": "outline", + "tags": "ribbons,medals,winning,victory,awards,prize", + "set_id": 1 + }, + { + "name": "truck-thin", + "content": "", + "style": "outline", + "tags": "trucks,cars,vehicles,automobile,shipping,delivery", + "set_id": 1 + }, + { + "name": "truck-trailer-thin", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,automobile,shipping,tractor,semi", + "set_id": 1 + }, + { + "name": "tumblr-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,social media,logos", + "set_id": 1 + }, + { + "name": "twitch-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,streaming,livestream,gaming,video games,social media", + "set_id": 1 + }, + { + "name": "twitter-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,social media,tweets,birds", + "set_id": 1 + }, + { + "name": "umbrella-thin", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "umbrella-simple-thin", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "union-thin", + "content": "", + "style": "outline", + "tags": "*new*,∪,union,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "unite-thin", + "content": "", + "style": "outline", + "tags": "*updated*,round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "unite-square-thin", + "content": "", + "style": "outline", + "tags": "join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "upload-thin", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "upload-simple-thin", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "usb-thin", + "content": "", + "style": "outline", + "tags": "serial,port,plug,peripheral,device", + "set_id": 1 + }, + { + "name": "user-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-check-thin", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-circle-check-thin", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-dashed-thin", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,pending,missing,removed", + "set_id": 1 + }, + { + "name": "user-circle-gear-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-circle-minus-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-circle-plus-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-focus-thin", + "content": "", + "style": "outline", + "tags": "identification,biometrics,facial recognition,profile,person,account,autofocus", + "set_id": 1 + }, + { + "name": "user-gear-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-list-thin", + "content": "", + "style": "outline", + "tags": "person,users,profiles,accounts,members,address book", + "set_id": 1 + }, + { + "name": "user-minus-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-plus-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-rectangle-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-sound-thin", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,speech,speaking,voice", + "set_id": 1 + }, + { + "name": "user-square-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-switch-thin", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,login,logout,signin,signout,settings,preferences", + "set_id": 1 + }, + { + "name": "users-thin", + "content": "", + "style": "outline", + "tags": "user,group,team,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-four-thin", + "content": "", + "style": "outline", + "tags": "user,group,team,department,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-three-thin", + "content": "", + "style": "outline", + "tags": "user,group,team,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "van-thin", + "content": "", + "style": "outline", + "tags": "westfalia,microbus,vanagon,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "vault-thin", + "content": "", + "style": "outline", + "tags": "safe,bank,security,secured,authentication,authenticated,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "vector-three-thin", + "content": "", + "style": "outline", + "tags": "*new*,3d,xyz,cartesian,coordinates,plane,volume,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vector-two-thin", + "content": "", + "style": "outline", + "tags": "*new*,2d,xy,cartesian,coordinates,plane,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vibrate-thin", + "content": "", + "style": "outline", + "tags": "audio,volume,viration,ringer,calls,silent,silenced", + "set_id": 1 + }, + { + "name": "video-thin", + "content": "", + "style": "outline", + "tags": "training,course,education,tutorial", + "set_id": 1 + }, + { + "name": "video-camera-thin", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "video-camera-slash-thin", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording,disabled", + "set_id": 1 + }, + { + "name": "video-conference-thin", + "content": "", + "style": "outline", + "tags": "*new*,video call,zoom,skype,discord,facetime,meeting", + "set_id": 1 + }, + { + "name": "vignette-thin", + "content": "", + "style": "outline", + "tags": "photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "vinyl-record-thin", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music,ep,lp", + "set_id": 1 + }, + { + "name": "virtual-reality-thin", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,headset,metaverse", + "set_id": 1 + }, + { + "name": "virus-thin", + "content": "", + "style": "outline", + "tags": "germs,disease,illness", + "set_id": 1 + }, + { + "name": "visor-thin", + "content": "", + "style": "outline", + "tags": "*new*,goggles,vision", + "set_id": 1 + }, + { + "name": "voicemail-thin", + "content": "", + "style": "outline", + "tags": "phonecalls,missed,recording,telephone,landline", + "set_id": 1 + }, + { + "name": "volleyball-thin", + "content": "", + "style": "outline", + "tags": "sports", + "set_id": 1 + }, + { + "name": "wall-thin", + "content": "", + "style": "outline", + "tags": "firewall,security,secured,blocks,bricks", + "set_id": 1 + }, + { + "name": "wallet-thin", + "content": "", + "style": "outline", + "tags": "money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "warehouse-thin", + "content": "", + "style": "outline", + "tags": "storage,industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "warning-thin", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-circle-thin", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,round", + "set_id": 1 + }, + { + "name": "warning-diamond-thin", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-octagon-thin", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,8,eight", + "set_id": 1 + }, + { + "name": "washing-machine-thin", + "content": "", + "style": "outline", + "tags": "*new*,clothing,laundry,cleaning", + "set_id": 1 + }, + { + "name": "watch-thin", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,clock,wristwatch,wearable", + "set_id": 1 + }, + { + "name": "wave-sawtooth-thin", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-sine-thin", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-square-thin", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-triangle-thin", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "waveform-thin", + "content": "", + "style": "outline", + "tags": "*updated*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waveform-slash-thin", + "content": "", + "style": "outline", + "tags": "*new*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waves-thin", + "content": "", + "style": "outline", + "tags": "ocean,tides,surf", + "set_id": 1 + }, + { + "name": "webcam-thin", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webcam-slash-thin", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webhooks-logo-thin", + "content": "", + "style": "outline", + "tags": "api", + "set_id": 1 + }, + { + "name": "wechat-logo-thin", + "content": "", + "style": "outline", + "tags": "weixin,logos", + "set_id": 1 + }, + { + "name": "whatsapp-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "wheelchair-thin", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wheelchair-motion-thin", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wifi-high-thin", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-low-thin", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-medium-thin", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-none-thin", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-slash-thin", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disabled,disconnected", + "set_id": 1 + }, + { + "name": "wifi-x-thin", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "wind-thin", + "content": "", + "style": "outline", + "tags": "meteorology,windy,stormy,blustery,gusty,air", + "set_id": 1 + }, + { + "name": "windmill-thin", + "content": "", + "style": "outline", + "tags": "*new*,turbine,energy,renewable,sustainability,countryside,landscape,green,power,buildings", + "set_id": 1 + }, + { + "name": "windows-logo-thin", + "content": "", + "style": "outline", + "tags": "microsoft,computers", + "set_id": 1 + }, + { + "name": "wine-thin", + "content": "", + "style": "outline", + "tags": "drinks,beverages,vineyard,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "wrench-thin", + "content": "", + "style": "outline", + "tags": "settings,setup,preferences,tools,machinery,mechanical,repairs", + "set_id": 1 + }, + { + "name": "x-thin", + "content": "", + "style": "outline", + "tags": "×,closed,cancelled,dismissed,times,multiply,mulitplication,product,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "x-circle-thin", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed,round", + "set_id": 1 + }, + { + "name": "x-logo-thin", + "content": "", + "style": "outline", + "tags": "*new*,twitter,logos,social media,tweets", + "set_id": 1 + }, + { + "name": "x-square-thin", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed", + "set_id": 1 + }, + { + "name": "yarn-thin", + "content": "", + "style": "outline", + "tags": "*new*,knitting,sewing", + "set_id": 1 + }, + { + "name": "yin-yang-thin", + "content": "", + "style": "outline", + "tags": "symbol,good,evil,black,white", + "set_id": 1 + }, + { + "name": "youtube-logo-thin", + "content": "", + "style": "outline", + "tags": "logos,google,videos,movies,social media", + "set_id": 1 + }, + { + "name": "acorn-light", + "content": "", + "style": "outline", + "tags": "*new*,savings,nut,vegetable,veggies,food,groceries,market", + "set_id": 1 + }, + { + "name": "address-book-light", + "content": "", + "style": "outline", + "tags": "contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "address-book-tabs-light", + "content": "", + "style": "outline", + "tags": "*new*,contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "air-traffic-control-light", + "content": "", + "style": "outline", + "tags": "airport,travel,transportation,buildings", + "set_id": 1 + }, + { + "name": "airplane-light", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "airplane-in-flight-light", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-landing-light", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-takeoff-light", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplane-taxiing-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-tilt-light", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplay-light", + "content": "", + "style": "outline", + "tags": "apple,screencasting,television,tv", + "set_id": 1 + }, + { + "name": "alarm-light", + "content": "", + "style": "outline", + "tags": "times,timer,clock,schedule,events,watch", + "set_id": 1 + }, + { + "name": "alien-light", + "content": "", + "style": "outline", + "tags": "ufo,space,flying saucer,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "align-bottom-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-bottom-simple-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-center-horizontal-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-horizontal-simple-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-simple-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-left-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-left-simple-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-right-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-right-simple-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-top-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "align-top-simple-light", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "amazon-logo-light", + "content": "", + "style": "outline", + "tags": "ecommerce,shopping,logos", + "set_id": 1 + }, + { + "name": "ambulance-light", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,doctor,vehicles", + "set_id": 1 + }, + { + "name": "anchor-light", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "anchor-simple-light", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "android-logo-light", + "content": "", + "style": "outline", + "tags": "logos,google,mobile,phone,cellular,cellphone", + "set_id": 1 + }, + { + "name": "angle-light", + "content": "", + "style": "outline", + "tags": "*new*,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "angular-logo-light", + "content": "", + "style": "outline", + "tags": "framework,javascript,google,web", + "set_id": 1 + }, + { + "name": "aperture-light", + "content": "", + "style": "outline", + "tags": "photography,cameras,pictures,lens", + "set_id": 1 + }, + { + "name": "app-store-logo-light", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "app-window-light", + "content": "", + "style": "outline", + "tags": "windows,software,programs,applications", + "set_id": 1 + }, + { + "name": "apple-logo-light", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "apple-podcasts-logo-light", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "approximate-equals-light", + "content": "", + "style": "outline", + "tags": "*new*,≈,is approximately equal to,congruent,equality,equivalent,equivalence,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "archive-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "armchair-light", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "arrow-arc-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-arc-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply-all", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply,re", + "set_id": 1 + }, + { + "name": "arrow-bend-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,forward,fwd", + "set_id": 1 + }, + { + "name": "arrow-circle-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-clockwise-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-counter-clockwise-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-fat-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,caps lock,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,shift,outlined", + "set_id": 1 + }, + { + "name": "arrow-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,bottom", + "set_id": 1 + }, + { + "name": "arrow-line-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,top", + "set_id": 1 + }, + { + "name": "arrow-line-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-in-light", + "content": "", + "style": "outline", + "tags": "import,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-out-light", + "content": "", + "style": "outline", + "tags": "export,external,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-u-down-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-down-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-down-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-up-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-left-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-right-light", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-clockwise-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,sync,synchronize,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-counter-clockwise-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-down-up-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-horizontal-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,left,right", + "set_id": 1 + }, + { + "name": "arrows-in-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-cardinal-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-line-horizontal-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-line-vertical-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize", + "set_id": 1 + }, + { + "name": "arrows-left-right-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-merge-light", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,join,combine", + "set_id": 1 + }, + { + "name": "arrows-out-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,grow", + "set_id": 1 + }, + { + "name": "arrows-out-cardinal-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,pan,move,grow", + "set_id": 1 + }, + { + "name": "arrows-out-line-horizontal-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-line-vertical-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize", + "set_id": 1 + }, + { + "name": "arrows-split-light", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,fork", + "set_id": 1 + }, + { + "name": "arrows-vertical-light", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,up,down", + "set_id": 1 + }, + { + "name": "article-light", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-medium-light", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-ny-times-light", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,news,newspaper,nyt,new york times", + "set_id": 1 + }, + { + "name": "asclepius-light", + "content": "", + "style": "outline", + "tags": "*new*,caduceus,staff,mythology,rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor,hospital,snake,mercury,hermes", + "set_id": 1 + }, + { + "name": "asterisk-light", + "content": "", + "style": "outline", + "tags": "star,wildcard,bullet point,6,emergency", + "set_id": 1 + }, + { + "name": "asterisk-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,star,wildcard,bullet point,5,emergency", + "set_id": 1 + }, + { + "name": "at-light", + "content": "", + "style": "outline", + "tags": "@,address,email,at symbol,commercial at,arobase", + "set_id": 1 + }, + { + "name": "atom-light", + "content": "", + "style": "outline", + "tags": "atomic,nucleus,nuclear,reactor,science,physics,electron,automation,react", + "set_id": 1 + }, + { + "name": "avocado-light", + "content": "", + "style": "outline", + "tags": "*new*,food,vegetable,veggie,fruit,groceries,market", + "set_id": 1 + }, + { + "name": "axe-light", + "content": "", + "style": "outline", + "tags": "*new*,tools,carpentry,forestry,construction", + "set_id": 1 + }, + { + "name": "baby-light", + "content": "", + "style": "outline", + "tags": "infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "baby-carriage-light", + "content": "", + "style": "outline", + "tags": "*new*,pram,stroller,infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "backpack-light", + "content": "", + "style": "outline", + "tags": "knapsack,camping,school,bag", + "set_id": 1 + }, + { + "name": "backspace-light", + "content": "", + "style": "outline", + "tags": "keyboard,remove,delete", + "set_id": 1 + }, + { + "name": "bag-light", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "bag-simple-light", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "balloon-light", + "content": "", + "style": "outline", + "tags": "helium,birthday,party", + "set_id": 1 + }, + { + "name": "bandaids-light", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,first aid,injury", + "set_id": 1 + }, + { + "name": "bank-light", + "content": "", + "style": "outline", + "tags": "banking,checking,money,savings,deposit,withdraw,places,locations", + "set_id": 1 + }, + { + "name": "barbell-light", + "content": "", + "style": "outline", + "tags": "gym,weights,dumbbells,strength training,workout,exercises,fitness", + "set_id": 1 + }, + { + "name": "barcode-light", + "content": "", + "style": "outline", + "tags": "upc,qr,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "barn-light", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,buildings,farming,agriculture", + "set_id": 1 + }, + { + "name": "barricade-light", + "content": "", + "style": "outline", + "tags": "construction,safety,gate", + "set_id": 1 + }, + { + "name": "baseball-light", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "baseball-cap-light", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sports,hat", + "set_id": 1 + }, + { + "name": "baseball-helmet-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,mlb", + "set_id": 1 + }, + { + "name": "basket-light", + "content": "", + "style": "outline", + "tags": "ecommerce,market,cart,buying,shopping,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "basketball-light", + "content": "", + "style": "outline", + "tags": "sports,nba", + "set_id": 1 + }, + { + "name": "bathtub-light", + "content": "", + "style": "outline", + "tags": "bath,shower,bathroom,faucet", + "set_id": 1 + }, + { + "name": "battery-charging-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-charging-vertical-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-empty-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-full-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,filled", + "set_id": 1 + }, + { + "name": "battery-high-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-low-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-medium-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-vertical-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-empty-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-vertical-full-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-high-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-low-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-medium-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-warning-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "battery-warning-vertical-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "beach-ball-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,ocean,party", + "set_id": 1 + }, + { + "name": "beanie-light", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,sports,hat,winter", + "set_id": 1 + }, + { + "name": "bed-light", + "content": "", + "style": "outline", + "tags": "hotels,accommodations,sleeping,places,locations,medical,hospital", + "set_id": 1 + }, + { + "name": "beer-bottle-light", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "beer-stein-light", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "behance-logo-light", + "content": "", + "style": "outline", + "tags": "logos,illustration,ui,interface", + "set_id": 1 + }, + { + "name": "bell-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-ringing-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-ringing-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-slash-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,silent,silenced,disabled", + "set_id": 1 + }, + { + "name": "bell-simple-z-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "bell-slash-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,silent,silenced,ringer,calls,disabled", + "set_id": 1 + }, + { + "name": "bell-z-light", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "belt-light", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "bezier-curve-light", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "bicycle-light", + "content": "", + "style": "outline", + "tags": "bikers,bicycling,cyclists,transit,transportation,commuter,exercises,fitness", + "set_id": 1 + }, + { + "name": "binary-light", + "content": "", + "style": "outline", + "tags": "*new*,digital,0,1,programming,coding,executable", + "set_id": 1 + }, + { + "name": "binoculars-light", + "content": "", + "style": "outline", + "tags": "telescope,glasses,search,find,explore", + "set_id": 1 + }, + { + "name": "biohazard-light", + "content": "", + "style": "outline", + "tags": "*new*,contamination,quarantine,toxic,poison,danger,caution", + "set_id": 1 + }, + { + "name": "bird-light", + "content": "", + "style": "outline", + "tags": "*updated*,animals,pets", + "set_id": 1 + }, + { + "name": "blueprint-light", + "content": "", + "style": "outline", + "tags": "*new*,architecture,layout,floorplan,building,construction", + "set_id": 1 + }, + { + "name": "bluetooth-light", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-connected-light", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-slash-light", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,disabled", + "set_id": 1 + }, + { + "name": "bluetooth-x-light", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "boat-light", + "content": "", + "style": "outline", + "tags": "ferry,ship,cruise,vehicles,public transit,transportation,commuter,traveling,sailing,places,locations", + "set_id": 1 + }, + { + "name": "bomb-light", + "content": "", + "style": "outline", + "tags": "*new*,gaming,grenade,explosive,war,weapon,fuse", + "set_id": 1 + }, + { + "name": "bone-light", + "content": "", + "style": "outline", + "tags": "dogbone", + "set_id": 1 + }, + { + "name": "book-light", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-bookmark-light", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library,favorites,favorited", + "set_id": 1 + }, + { + "name": "book-open-light", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-text-light", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-user-light", + "content": "", + "style": "outline", + "tags": "*new*,reading,reader,easy read,library,places,locations", + "set_id": 1 + }, + { + "name": "bookmark-light", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmark-simple-light", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-light", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-simple-light", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "books-light", + "content": "", + "style": "outline", + "tags": "reading,reader,bookshelf,library,places,locations", + "set_id": 1 + }, + { + "name": "boot-light", + "content": "", + "style": "outline", + "tags": "hiking,shoes,sports,exercise", + "set_id": 1 + }, + { + "name": "boules-light", + "content": "", + "style": "outline", + "tags": "*new*,balls,sports,pétanque,raffa,bocce,boule lyonnaise,lawn bowls", + "set_id": 1 + }, + { + "name": "bounding-box-light", + "content": "", + "style": "outline", + "tags": "polygon,shapes,outline,corners,rectangle", + "set_id": 1 + }, + { + "name": "bowl-food-light", + "content": "", + "style": "outline", + "tags": "ramen,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowl-steam-light", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowling-ball-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,alley", + "set_id": 1 + }, + { + "name": "box-arrow-down-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "box-arrow-up-light", + "content": "", + "style": "outline", + "tags": "*new*,unarchive,archival,upload", + "set_id": 1 + }, + { + "name": "boxing-glove-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,combat,martial arts,fight,gym", + "set_id": 1 + }, + { + "name": "brackets-angle-light", + "content": "", + "style": "outline", + "tags": "code,angle brackets,angle braces", + "set_id": 1 + }, + { + "name": "brackets-curly-light", + "content": "", + "style": "outline", + "tags": "code,curly brackets,curly braces", + "set_id": 1 + }, + { + "name": "brackets-round-light", + "content": "", + "style": "outline", + "tags": "code,parentheses,round brackets,round braces", + "set_id": 1 + }, + { + "name": "brackets-square-light", + "content": "", + "style": "outline", + "tags": "code,square brackets,square braces,array", + "set_id": 1 + }, + { + "name": "brain-light", + "content": "", + "style": "outline", + "tags": "mind,mental", + "set_id": 1 + }, + { + "name": "brandy-light", + "content": "", + "style": "outline", + "tags": "drinks,beverages,whiskey,cocktail,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "bread-light", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,bakery,sandwich,gluten,loaf,toast,slice", + "set_id": 1 + }, + { + "name": "bridge-light", + "content": "", + "style": "outline", + "tags": "travel,transportation,infrastucture", + "set_id": 1 + }, + { + "name": "briefcase-light", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "briefcase-metal-light", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "broadcast-light", + "content": "", + "style": "outline", + "tags": "radio,hotspot,wifi,emit", + "set_id": 1 + }, + { + "name": "broom-light", + "content": "", + "style": "outline", + "tags": "sweeping,cleaning", + "set_id": 1 + }, + { + "name": "browser-light", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "browsers-light", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "bug-light", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-beetle-light", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-droid-light", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,android,google", + "set_id": 1 + }, + { + "name": "building-light", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "building-apartment-light", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,buildings", + "set_id": 1 + }, + { + "name": "building-office-light", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "buildings-light", + "content": "", + "style": "outline", + "tags": "places,locations,company,business", + "set_id": 1 + }, + { + "name": "bulldozer-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,construction,earth mover,dig,digger", + "set_id": 1 + }, + { + "name": "bus-light", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "butterfly-light", + "content": "", + "style": "outline", + "tags": "animals,insects,moth", + "set_id": 1 + }, + { + "name": "cable-car-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,gondola,skiing,mountains,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "cactus-light", + "content": "", + "style": "outline", + "tags": "*updated*,plants,cacti,desert,western", + "set_id": 1 + }, + { + "name": "cake-light", + "content": "", + "style": "outline", + "tags": "dessert,birthday,celebration,event", + "set_id": 1 + }, + { + "name": "calculator-light", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "calendar-light", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,12", + "set_id": 1 + }, + { + "name": "calendar-blank-light", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,none", + "set_id": 1 + }, + { + "name": "calendar-check-light", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,todo,checklist", + "set_id": 1 + }, + { + "name": "calendar-dot-light", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,today", + "set_id": 1 + }, + { + "name": "calendar-dots-light", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule", + "set_id": 1 + }, + { + "name": "calendar-heart-light", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-minus-light", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete", + "set_id": 1 + }, + { + "name": "calendar-plus-light", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,add", + "set_id": 1 + }, + { + "name": "calendar-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete,cancel. unavailable", + "set_id": 1 + }, + { + "name": "calendar-star-light", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-x-light", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,closed,cancelled", + "set_id": 1 + }, + { + "name": "call-bell-light", + "content": "", + "style": "outline", + "tags": "service bell,reception,attendant,concierge bell", + "set_id": 1 + }, + { + "name": "camera-light", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens", + "set_id": 1 + }, + { + "name": "camera-plus-light", + "content": "", + "style": "outline", + "tags": "photography,pictures,album,add", + "set_id": 1 + }, + { + "name": "camera-rotate-light", + "content": "", + "style": "outline", + "tags": "photography,pictures,orientation,portrait,landscape,selfie,flip", + "set_id": 1 + }, + { + "name": "camera-slash-light", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens,disabled", + "set_id": 1 + }, + { + "name": "campfire-light", + "content": "", + "style": "outline", + "tags": "camping,flame,bonfire,outdoors", + "set_id": 1 + }, + { + "name": "car-light", + "content": "", + "style": "outline", + "tags": "*updated*,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-battery-light", + "content": "", + "style": "outline", + "tags": "*new*,charged,charger,charging,power,voltage,electricity", + "set_id": 1 + }, + { + "name": "car-profile-light", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-simple-light", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "cardholder-light", + "content": "", + "style": "outline", + "tags": "wallet,money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cards-light", + "content": "", + "style": "outline", + "tags": "card,slides,slideshow,windows,website,webpage,layers", + "set_id": 1 + }, + { + "name": "cards-three-light", + "content": "", + "style": "outline", + "tags": "*new*,card,slides,slideshow,windows,website,webpage,layers,stack", + "set_id": 1 + }, + { + "name": "caret-circle-double-down-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-left-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-right-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-up-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-down-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-left-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-right-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-down-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-down-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-left-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-right-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-up-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-down-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-left-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-down-light", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-left-light", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-right-light", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-up-light", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-right-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-down-light", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "carrot-light", + "content": "", + "style": "outline", + "tags": "food,vegetable,veggie,groceries,market", + "set_id": 1 + }, + { + "name": "cash-register-light", + "content": "", + "style": "outline", + "tags": "*new*,retail,point-of-sale,pos,transaction,sales,till", + "set_id": 1 + }, + { + "name": "cassette-tape-light", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music", + "set_id": 1 + }, + { + "name": "castle-turret-light", + "content": "", + "style": "outline", + "tags": "*updated*,chess,rook", + "set_id": 1 + }, + { + "name": "cat-light", + "content": "", + "style": "outline", + "tags": "pets,animals,kitty,kitten", + "set_id": 1 + }, + { + "name": "cell-signal-full-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-high-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-low-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-medium-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-none-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-slash-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,disconnected,disabled,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-x-light", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,disconnected,errors,service", + "set_id": 1 + }, + { + "name": "cell-tower-light", + "content": "", + "style": "outline", + "tags": "*new*,wireless,cellular,broadcast,phone,mobile,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "certificate-light", + "content": "", + "style": "outline", + "tags": "*updated*,awards,certification,degree,diploma", + "set_id": 1 + }, + { + "name": "chair-light", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "chalkboard-light", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-teacher-light", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,education,school,college,university", + "set_id": 1 + }, + { + "name": "champagne-light", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,wine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "charging-station-light", + "content": "", + "style": "outline", + "tags": "ev,charge,fuel,pump", + "set_id": 1 + }, + { + "name": "chart-bar-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-bar-horizontal-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-donut-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-line-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-down-light", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-up-light", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-pie-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-pie-slice-light", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-polar-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-scatter-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "chat-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-dots-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-text-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-dots-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-text-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-dots-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-dots-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-text-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-text-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-circle-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chats-teardrop-light", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "check-light", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-circle-light", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,round,ok,done", + "set_id": 1 + }, + { + "name": "check-fat-light", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-square-light", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "check-square-offset-light", + "content": "", + "style": "outline", + "tags": "*updated*,todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "checkerboard-light", + "content": "", + "style": "outline", + "tags": "*new*,crossword", + "set_id": 1 + }, + { + "name": "checks-light", + "content": "", + "style": "outline", + "tags": "*updated*,todo,task,to-do,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "cheers-light", + "content": "", + "style": "outline", + "tags": "*new*,glass,drinks,beverages,champagne,toast,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "cheese-light", + "content": "", + "style": "outline", + "tags": "*new*,dairy,wedge,food,dining", + "set_id": 1 + }, + { + "name": "chef-hat-light", + "content": "", + "style": "outline", + "tags": "*new*,cooking,cuisine,kitchen,clothes,clothing", + "set_id": 1 + }, + { + "name": "cherries-light", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,cherry,groceries,market", + "set_id": 1 + }, + { + "name": "church-light", + "content": "", + "style": "outline", + "tags": "christ,christianity,cathedral,religion,worship", + "set_id": 1 + }, + { + "name": "cigarette-light", + "content": "", + "style": "outline", + "tags": "*new*,smoking,tobacco", + "set_id": 1 + }, + { + "name": "cigarette-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,non-smoking,tobacco", + "set_id": 1 + }, + { + "name": "circle-light", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-dashed-light", + "content": "", + "style": "outline", + "tags": "missing,round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-half-light", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-half-tilt-light", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-notch-light", + "content": "", + "style": "outline", + "tags": "round,shapes,loading,loader,spinner,waiting,progress", + "set_id": 1 + }, + { + "name": "circles-four-light", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,4", + "set_id": 1 + }, + { + "name": "circles-three-light", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,asana", + "set_id": 1 + }, + { + "name": "circles-three-plus-light", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,+", + "set_id": 1 + }, + { + "name": "circuitry-light", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit,electronics,motherboard", + "set_id": 1 + }, + { + "name": "city-light", + "content": "", + "style": "outline", + "tags": "*new*,skyline,skyscrapers,places,locations,buildings", + "set_id": 1 + }, + { + "name": "clipboard-light", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clipboard-text-light", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clock-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-afternoon-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-clockwise-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,restore,fast forward,update", + "set_id": 1 + }, + { + "name": "clock-countdown-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-counter-clockwise-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,backup,rewind,history", + "set_id": 1 + }, + { + "name": "clock-user-light", + "content": "", + "style": "outline", + "tags": "*new*,times,timer,shift,schedule,events,watch", + "set_id": 1 + }, + { + "name": "closed-captioning-light", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "cloud-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,meteorology,cloudy,overcast", + "set_id": 1 + }, + { + "name": "cloud-arrow-down-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,download", + "set_id": 1 + }, + { + "name": "cloud-arrow-up-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,upload", + "set_id": 1 + }, + { + "name": "cloud-check-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,synchronized", + "set_id": 1 + }, + { + "name": "cloud-fog-light", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,foggy,mist,haze", + "set_id": 1 + }, + { + "name": "cloud-lightning-light", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,stormy,thunderstorm", + "set_id": 1 + }, + { + "name": "cloud-moon-light", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,night,evening", + "set_id": 1 + }, + { + "name": "cloud-rain-light", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,rainy,raining,stormy,rainstorm", + "set_id": 1 + }, + { + "name": "cloud-slash-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,disabled", + "set_id": 1 + }, + { + "name": "cloud-snow-light", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,snowy,snowing,stormy,snowstorm", + "set_id": 1 + }, + { + "name": "cloud-sun-light", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,partly sunny", + "set_id": 1 + }, + { + "name": "cloud-warning-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "cloud-x-light", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "clover-light", + "content": "", + "style": "outline", + "tags": "*new*,four leaf clover,plants,luck,lucky,irish", + "set_id": 1 + }, + { + "name": "club-light", + "content": "", + "style": "outline", + "tags": "clubs,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "coat-hanger-light", + "content": "", + "style": "outline", + "tags": "clothing,clothes,closet", + "set_id": 1 + }, + { + "name": "coda-logo-light", + "content": "", + "style": "outline", + "tags": "project management,productivity,documentation,wiki,logos", + "set_id": 1 + }, + { + "name": "code-light", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-block-light", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-simple-light", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "codepen-logo-light", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "codesandbox-logo-light", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "coffee-light", + "content": "", + "style": "outline", + "tags": "tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coffee-bean-light", + "content": "", + "style": "outline", + "tags": "*new*,tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coin-light", + "content": "", + "style": "outline", + "tags": "coins,cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coin-vertical-light", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coins-light", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "columns-light", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "columns-plus-left-light", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "columns-plus-right-light", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,append,insert", + "set_id": 1 + }, + { + "name": "command-light", + "content": "", + "style": "outline", + "tags": "apple,keyboard,shortcut,modifier,looped square,bowen knot,saint john's arms", + "set_id": 1 + }, + { + "name": "compass-light", + "content": "", + "style": "outline", + "tags": "navigation,directions,maps,safari,apple", + "set_id": 1 + }, + { + "name": "compass-rose-light", + "content": "", + "style": "outline", + "tags": "*new*,navigation,directions,maps,cardinal,cartography", + "set_id": 1 + }, + { + "name": "compass-tool-light", + "content": "", + "style": "outline", + "tags": "drawing,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "computer-tower-light", + "content": "", + "style": "outline", + "tags": "desktop,pc,imac", + "set_id": 1 + }, + { + "name": "confetti-light", + "content": "", + "style": "outline", + "tags": "tada,party,emoji", + "set_id": 1 + }, + { + "name": "contactless-payment-light", + "content": "", + "style": "outline", + "tags": "purchase,credit card,nfc", + "set_id": 1 + }, + { + "name": "control-light", + "content": "", + "style": "outline", + "tags": "ctrl,key,keyboard,shortcut,caret", + "set_id": 1 + }, + { + "name": "cookie-light", + "content": "", + "style": "outline", + "tags": "privacy,dessert,food,dining", + "set_id": 1 + }, + { + "name": "cooking-pot-light", + "content": "", + "style": "outline", + "tags": "stew,kitchen,steaming,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "copy-light", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copy-simple-light", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copyleft-light", + "content": "", + "style": "outline", + "tags": "🄯,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "copyright-light", + "content": "", + "style": "outline", + "tags": "©,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "corners-in-light", + "content": "", + "style": "outline", + "tags": "*updated*,collapse,windowed,minimized", + "set_id": 1 + }, + { + "name": "corners-out-light", + "content": "", + "style": "outline", + "tags": "*updated*,expand,fullscreen,maximized", + "set_id": 1 + }, + { + "name": "couch-light", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "court-basketball-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,nba", + "set_id": 1 + }, + { + "name": "cow-light", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,beef,bull,milk,dairy", + "set_id": 1 + }, + { + "name": "cowboy-hat-light", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,stetson", + "set_id": 1 + }, + { + "name": "cpu-light", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "crane-light", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "crane-tower-light", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "credit-card-light", + "content": "", + "style": "outline", + "tags": "debit,visa,mastercard,money,payment,paying,purchase,swipe", + "set_id": 1 + }, + { + "name": "cricket-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,ball,bat", + "set_id": 1 + }, + { + "name": "crop-light", + "content": "", + "style": "outline", + "tags": "photography,clip,screenshots", + "set_id": 1 + }, + { + "name": "cross-light", + "content": "", + "style": "outline", + "tags": "dagger,crucifix,christ,christianity,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "crosshair-light", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crosshair-simple-light", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crown-light", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-cross-light", + "content": "", + "style": "outline", + "tags": "*new*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "cube-light", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks", + "set_id": 1 + }, + { + "name": "cube-focus-light", + "content": "", + "style": "outline", + "tags": "augmented reality,ar,virual reality,vr,3d,scan", + "set_id": 1 + }, + { + "name": "cube-transparent-light", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks,necker", + "set_id": 1 + }, + { + "name": "currency-btc-light", + "content": "", + "style": "outline", + "tags": "money,btc,bitcoin,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-circle-dollar-light", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-cny-light", + "content": "", + "style": "outline", + "tags": "money,yuan,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-light", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-simple-light", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eth-light", + "content": "", + "style": "outline", + "tags": "money,ethereum,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eur-light", + "content": "", + "style": "outline", + "tags": "money,euros,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-gbp-light", + "content": "", + "style": "outline", + "tags": "money,pounds sterling,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-inr-light", + "content": "", + "style": "outline", + "tags": "money,rupees,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-jpy-light", + "content": "", + "style": "outline", + "tags": "money,yen,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-krw-light", + "content": "", + "style": "outline", + "tags": "money,won,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-kzt-light", + "content": "", + "style": "outline", + "tags": "money,kazakhstan,tenge,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-ngn-light", + "content": "", + "style": "outline", + "tags": "money,nigeria,naira,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-rub-light", + "content": "", + "style": "outline", + "tags": "money,rubles,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cursor-light", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse,click", + "set_id": 1 + }, + { + "name": "cursor-click-light", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse", + "set_id": 1 + }, + { + "name": "cursor-text-light", + "content": "", + "style": "outline", + "tags": "i-beam,input,select", + "set_id": 1 + }, + { + "name": "cylinder-light", + "content": "", + "style": "outline", + "tags": "shapes,tube", + "set_id": 1 + }, + { + "name": "database-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "desk-light", + "content": "", + "style": "outline", + "tags": "*new*,furniture,workspace,table", + "set_id": 1 + }, + { + "name": "desktop-light", + "content": "", + "style": "outline", + "tags": "computer,pc,imac,tower", + "set_id": 1 + }, + { + "name": "desktop-tower-light", + "content": "", + "style": "outline", + "tags": "*updated*,computer,pc,imac", + "set_id": 1 + }, + { + "name": "detective-light", + "content": "", + "style": "outline", + "tags": "incognito,police,law enforcement,spy,secret", + "set_id": 1 + }, + { + "name": "dev-to-logo-light", + "content": "", + "style": "outline", + "tags": "reading,writing,social media,logos", + "set_id": 1 + }, + { + "name": "device-mobile-light", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-camera-light", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-speaker-light", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-rotate-light", + "content": "", + "style": "outline", + "tags": "*new*,orientation,landscape,portrait,spin,flip", + "set_id": 1 + }, + { + "name": "device-tablet-light", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-camera-light", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-speaker-light", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "devices-light", + "content": "", + "style": "outline", + "tags": "responsive,cellphone,cellular,tablet,destop", + "set_id": 1 + }, + { + "name": "diamond-light", + "content": "", + "style": "outline", + "tags": "rectangle,shapes,polygons,diamonds,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "diamonds-four-light", + "content": "", + "style": "outline", + "tags": "shapes,grid,component", + "set_id": 1 + }, + { + "name": "dice-five-light", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,5", + "set_id": 1 + }, + { + "name": "dice-four-light", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,4", + "set_id": 1 + }, + { + "name": "dice-one-light", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,1", + "set_id": 1 + }, + { + "name": "dice-six-light", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,6", + "set_id": 1 + }, + { + "name": "dice-three-light", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,3", + "set_id": 1 + }, + { + "name": "dice-two-light", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,2", + "set_id": 1 + }, + { + "name": "disc-light", + "content": "", + "style": "outline", + "tags": "cd-rom,compact disk,album,record", + "set_id": 1 + }, + { + "name": "disco-ball-light", + "content": "", + "style": "outline", + "tags": "*new*,danging,club,70s", + "set_id": 1 + }, + { + "name": "discord-logo-light", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging,chat", + "set_id": 1 + }, + { + "name": "divide-light", + "content": "", + "style": "outline", + "tags": "division,divisor,dividend,quotient,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "dna-light", + "content": "", + "style": "outline", + "tags": "double helix,gene,genetics", + "set_id": 1 + }, + { + "name": "dog-light", + "content": "", + "style": "outline", + "tags": "pets,animals,puppy", + "set_id": 1 + }, + { + "name": "door-light", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "door-open-light", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "dot-light", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dot-outline-light", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dots-nine-light", + "content": "", + "style": "outline", + "tags": "grid,circles,shapes,polygons,9", + "set_id": 1 + }, + { + "name": "dots-six-light", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-six-vertical-light", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-three-light", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-light", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-vertical-light", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-light", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-vertical-light", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-vertical-light", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "download-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk", + "set_id": 1 + }, + { + "name": "download-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk,import", + "set_id": 1 + }, + { + "name": "dress-light", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "dresser-light", + "content": "", + "style": "outline", + "tags": "*new*,furniture,bedroom,storage,drawers,wardrobe", + "set_id": 1 + }, + { + "name": "dribbble-logo-light", + "content": "", + "style": "outline", + "tags": "logos,round,basketball,sports,design", + "set_id": 1 + }, + { + "name": "drone-light", + "content": "", + "style": "outline", + "tags": "*new*,aerial,uav,photography,remote", + "set_id": 1 + }, + { + "name": "drop-light", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,raining,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-half-light", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-half-bottom-light", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-simple-light", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur,disabled", + "set_id": 1 + }, + { + "name": "dropbox-logo-light", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "ear-light", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound", + "set_id": 1 + }, + { + "name": "ear-slash-light", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound,mute,accessible", + "set_id": 1 + }, + { + "name": "egg-light", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch", + "set_id": 1 + }, + { + "name": "egg-crack-light", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch,break", + "set_id": 1 + }, + { + "name": "eject-light", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "eject-simple-light", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "elevator-light", + "content": "", + "style": "outline", + "tags": "lift", + "set_id": 1 + }, + { + "name": "empty-light", + "content": "", + "style": "outline", + "tags": "*new*,∅,empty set,member,mathematics,arithmetic,calculator,null", + "set_id": 1 + }, + { + "name": "engine-light", + "content": "", + "style": "outline", + "tags": "*updated*,motor,repair,vehicles,automobile", + "set_id": 1 + }, + { + "name": "envelope-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-open-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-open-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "equalizer-light", + "content": "", + "style": "outline", + "tags": "music,audio,meter,volume,spectrum,eq,deezer", + "set_id": 1 + }, + { + "name": "equals-light", + "content": "", + "style": "outline", + "tags": "=,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "eraser-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,undo,deleted", + "set_id": 1 + }, + { + "name": "escalator-down-light", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "escalator-up-light", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "exam-light", + "content": "", + "style": "outline", + "tags": "text,examination,paper,school,grade", + "set_id": 1 + }, + { + "name": "exclamation-mark-light", + "content": "", + "style": "outline", + "tags": "*new*,!,alert,warning,caution,interjection,punctuation,symbol", + "set_id": 1 + }, + { + "name": "exclude-light", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "exclude-square-light", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "export-light", + "content": "", + "style": "outline", + "tags": "share,send to,arrows", + "set_id": 1 + }, + { + "name": "eye-light", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view", + "set_id": 1 + }, + { + "name": "eye-closed-light", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,private", + "set_id": 1 + }, + { + "name": "eye-slash-light", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,eyelashes,disabled,private", + "set_id": 1 + }, + { + "name": "eyedropper-light", + "content": "", + "style": "outline", + "tags": "colors,color picker,sample,arts", + "set_id": 1 + }, + { + "name": "eyedropper-sample-light", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "eyeglasses-light", + "content": "", + "style": "outline", + "tags": "vision,spectacles", + "set_id": 1 + }, + { + "name": "eyes-light", + "content": "", + "style": "outline", + "tags": "*new*,look,glance", + "set_id": 1 + }, + { + "name": "face-mask-light", + "content": "", + "style": "outline", + "tags": "ppe,facemask,covid-19,coronavirus,flu,cold", + "set_id": 1 + }, + { + "name": "facebook-logo-light", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "factory-light", + "content": "", + "style": "outline", + "tags": "industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "faders-light", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "faders-horizontal-light", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "fallout-shelter-light", + "content": "", + "style": "outline", + "tags": "*new*,radiation,radioactive,nuclear,bunker,contamination,quarantine,toxic,danger,caution", + "set_id": 1 + }, + { + "name": "fan-light", + "content": "", + "style": "outline", + "tags": "desk fan,air conditioning", + "set_id": 1 + }, + { + "name": "farm-light", + "content": "", + "style": "outline", + "tags": "*new*,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "fast-forward-light", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "fast-forward-circle-light", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "feather-light", + "content": "", + "style": "outline", + "tags": "bird", + "set_id": 1 + }, + { + "name": "fediverse-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,social media,decentralized", + "set_id": 1 + }, + { + "name": "figma-logo-light", + "content": "", + "style": "outline", + "tags": "*updated*,logos,drawing,art,illustration,ui,interface,prototype,prototyping", + "set_id": 1 + }, + { + "name": "file-light", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,page", + "set_id": 1 + }, + { + "name": "file-archive-light", + "content": "", + "style": "outline", + "tags": "documents,zip,compression", + "set_id": 1 + }, + { + "name": "file-arrow-down-light", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,download,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-arrow-up-light", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,upload,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-audio-light", + "content": "", + "style": "outline", + "tags": "documents,music,sound", + "set_id": 1 + }, + { + "name": "file-c-light", + "content": "", + "style": "outline", + "tags": "*new*,documents,code", + "set_id": 1 + }, + { + "name": "file-c-sharp-light", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c#", + "set_id": 1 + }, + { + "name": "file-cloud-light", + "content": "", + "style": "outline", + "tags": "documents,sync", + "set_id": 1 + }, + { + "name": "file-code-light", + "content": "", + "style": "outline", + "tags": "documents", + "set_id": 1 + }, + { + "name": "file-cpp-light", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c++", + "set_id": 1 + }, + { + "name": "file-css-light", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-csv-light", + "content": "", + "style": "outline", + "tags": "documents,data", + "set_id": 1 + }, + { + "name": "file-dashed-light", + "content": "", + "style": "outline", + "tags": "documents,files,browse,draft,open,dotted", + "set_id": 1 + }, + { + "name": "file-doc-light", + "content": "", + "style": "outline", + "tags": "documents,word,microsoft", + "set_id": 1 + }, + { + "name": "file-html-light", + "content": "", + "style": "outline", + "tags": "*updated*,documents,code", + "set_id": 1 + }, + { + "name": "file-image-light", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ini-light", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-jpg-light", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph,jpeg", + "set_id": 1 + }, + { + "name": "file-js-light", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-jsx-light", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-lock-light", + "content": "", + "style": "outline", + "tags": "documents,secure,locked,private", + "set_id": 1 + }, + { + "name": "file-magnifying-glass-light", + "content": "", + "style": "outline", + "tags": "documents,files,search,find,locate,browse,missing", + "set_id": 1 + }, + { + "name": "file-md-light", + "content": "", + "style": "outline", + "tags": "*new*,documents,notes,markdown", + "set_id": 1 + }, + { + "name": "file-minus-light", + "content": "", + "style": "outline", + "tags": "documents,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "file-pdf-light", + "content": "", + "style": "outline", + "tags": "documents,files,acrobat", + "set_id": 1 + }, + { + "name": "file-plus-light", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "file-png-light", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ppt-light", + "content": "", + "style": "outline", + "tags": "documents,powerpoint,microsoft", + "set_id": 1 + }, + { + "name": "file-py-light", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,python", + "set_id": 1 + }, + { + "name": "file-rs-light", + "content": "", + "style": "outline", + "tags": "documents,code,rust", + "set_id": 1 + }, + { + "name": "file-sql-light", + "content": "", + "style": "outline", + "tags": "documents,database", + "set_id": 1 + }, + { + "name": "file-svg-light", + "content": "", + "style": "outline", + "tags": "documents,images,vector", + "set_id": 1 + }, + { + "name": "file-text-light", + "content": "", + "style": "outline", + "tags": "documents,files,save,write", + "set_id": 1 + }, + { + "name": "file-ts-light", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-tsx-light", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-txt-light", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-video-light", + "content": "", + "style": "outline", + "tags": "documents,movie", + "set_id": 1 + }, + { + "name": "file-vue-light", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-x-light", + "content": "", + "style": "outline", + "tags": "documents,files,cancelled,deleted,removed,errors", + "set_id": 1 + }, + { + "name": "file-xls-light", + "content": "", + "style": "outline", + "tags": "documents,excel,microsoft", + "set_id": 1 + }, + { + "name": "file-zip-light", + "content": "", + "style": "outline", + "tags": "documents,archive,compression", + "set_id": 1 + }, + { + "name": "files-light", + "content": "", + "style": "outline", + "tags": "documents,open,library", + "set_id": 1 + }, + { + "name": "film-reel-light", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "film-script-light", + "content": "", + "style": "outline", + "tags": "screenplay,movie", + "set_id": 1 + }, + { + "name": "film-slate-light", + "content": "", + "style": "outline", + "tags": "*updated*,clapper,movie", + "set_id": 1 + }, + { + "name": "film-strip-light", + "content": "", + "style": "outline", + "tags": "camera,photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "fingerprint-light", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "fingerprint-simple-light", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "finn-the-human-light", + "content": "", + "style": "outline", + "tags": "adventure time,cartoons,television,tv,character", + "set_id": 1 + }, + { + "name": "fire-light", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-extinguisher-light", + "content": "", + "style": "outline", + "tags": "safety,prevention,emergency,hazard,danger,caution", + "set_id": 1 + }, + { + "name": "fire-simple-light", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-truck-light", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,firefighter", + "set_id": 1 + }, + { + "name": "first-aid-light", + "content": "", + "style": "outline", + "tags": "hospital,cross,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "first-aid-kit-light", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "fish-light", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "fish-simple-light", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "flag-light", + "content": "", + "style": "outline", + "tags": "country,countries,finished,completed,flags", + "set_id": 1 + }, + { + "name": "flag-banner-light", + "content": "", + "style": "outline", + "tags": "ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-banner-fold-light", + "content": "", + "style": "outline", + "tags": "*new*,ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-checkered-light", + "content": "", + "style": "outline", + "tags": "flags,race,racing,finish line", + "set_id": 1 + }, + { + "name": "flag-pennant-light", + "content": "", + "style": "outline", + "tags": "flags,race,sports,team", + "set_id": 1 + }, + { + "name": "flame-light", + "content": "", + "style": "outline", + "tags": "fire,burning,match,lighter", + "set_id": 1 + }, + { + "name": "flashlight-light", + "content": "", + "style": "outline", + "tags": "torch,find,search,locate", + "set_id": 1 + }, + { + "name": "flask-light", + "content": "", + "style": "outline", + "tags": "beaker,science,chemistry,experiment,erlenmeyer", + "set_id": 1 + }, + { + "name": "flip-horizontal-light", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "flip-vertical-light", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "floppy-disk-light", + "content": "", + "style": "outline", + "tags": "diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "floppy-disk-back-light", + "content": "", + "style": "outline", + "tags": "*updated*,diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "flow-arrow-light", + "content": "", + "style": "outline", + "tags": "*updated*,flowchart,arrowhead", + "set_id": 1 + }, + { + "name": "flower-light", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flower-lotus-light", + "content": "", + "style": "outline", + "tags": "plants,green,environmental,spirituality", + "set_id": 1 + }, + { + "name": "flower-tulip-light", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flying-saucer-light", + "content": "", + "style": "outline", + "tags": "ufo,space,aliens,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "folder-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-dashed-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-lock-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-minus-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-open-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,load", + "set_id": 1 + }, + { + "name": "folder-plus-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-simple-dashed-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-simple-lock-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-simple-minus-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-simple-plus-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-star-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-simple-user-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folder-star-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-user-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folders-light", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,copy,copied,duplicated", + "set_id": 1 + }, + { + "name": "football-light", + "content": "", + "style": "outline", + "tags": "sports,american football,nfl", + "set_id": 1 + }, + { + "name": "football-helmet-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,american football,nfl", + "set_id": 1 + }, + { + "name": "footprints-light", + "content": "", + "style": "outline", + "tags": "path,trail,walk,route,hike,hiking", + "set_id": 1 + }, + { + "name": "fork-knife-light", + "content": "", + "style": "outline", + "tags": "food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "four-k-light", + "content": "", + "style": "outline", + "tags": "*new*,uhd,resolution,video", + "set_id": 1 + }, + { + "name": "frame-corners-light", + "content": "", + "style": "outline", + "tags": "expand,fullscreen,maximized,resize,windowed,capture", + "set_id": 1 + }, + { + "name": "framer-logo-light", + "content": "", + "style": "outline", + "tags": "logos,interface,ui,motion,prototype,prototyping", + "set_id": 1 + }, + { + "name": "function-light", + "content": "", + "style": "outline", + "tags": "mathematics,arithmetic,f-stop", + "set_id": 1 + }, + { + "name": "funnel-light", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-light", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-x-light", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-x-light", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "game-controller-light", + "content": "", + "style": "outline", + "tags": "gaming,video games,nintendo switch,sony playstation,microsoft xbox", + "set_id": 1 + }, + { + "name": "garage-light", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,buildings,transportation", + "set_id": 1 + }, + { + "name": "gas-can-light", + "content": "", + "style": "outline", + "tags": "jerrycan,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gas-pump-light", + "content": "", + "style": "outline", + "tags": "gas station,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gauge-light", + "content": "", + "style": "outline", + "tags": "dashboard,meter,speed,speedometer,odometer,performance", + "set_id": 1 + }, + { + "name": "gavel-light", + "content": "", + "style": "outline", + "tags": "judge,justice,legal,law,court,hammer,government", + "set_id": 1 + }, + { + "name": "gear-light", + "content": "", + "style": "outline", + "tags": "8,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-fine-light", + "content": "", + "style": "outline", + "tags": "setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-six-light", + "content": "", + "style": "outline", + "tags": "6,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gender-female-light", + "content": "", + "style": "outline", + "tags": "woman,feminine,venus", + "set_id": 1 + }, + { + "name": "gender-intersex-light", + "content": "", + "style": "outline", + "tags": "transgender,non-binary", + "set_id": 1 + }, + { + "name": "gender-male-light", + "content": "", + "style": "outline", + "tags": "man,masculine,mars", + "set_id": 1 + }, + { + "name": "gender-neuter-light", + "content": "", + "style": "outline", + "tags": "agender,non-binary,asexual", + "set_id": 1 + }, + { + "name": "gender-nonbinary-light", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "gender-transgender-light", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "ghost-light", + "content": "", + "style": "outline", + "tags": "pac-man,spirit,scary,halloween", + "set_id": 1 + }, + { + "name": "gif-light", + "content": "", + "style": "outline", + "tags": "gifs,.gif,giphy", + "set_id": 1 + }, + { + "name": "gift-light", + "content": "", + "style": "outline", + "tags": "presents,holiday,birthday", + "set_id": 1 + }, + { + "name": "git-branch-light", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "git-commit-light", + "content": "", + "style": "outline", + "tags": "github,vcs,source control,version control,versioning,commits", + "set_id": 1 + }, + { + "name": "git-diff-light", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,difference,compare", + "set_id": 1 + }, + { + "name": "git-fork-light", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-merge-light", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-pull-request-light", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,merge request", + "set_id": 1 + }, + { + "name": "github-logo-light", + "content": "", + "style": "outline", + "tags": "octocat,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-light", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-simple-light", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "globe-light", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-hemisphere-east-light", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,europe,africa,asia,australia", + "set_id": 1 + }, + { + "name": "globe-hemisphere-west-light", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,north america,south america", + "set_id": 1 + }, + { + "name": "globe-simple-light", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-simple-x-light", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-stand-light", + "content": "", + "style": "outline", + "tags": "world,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-x-light", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "goggles-light", + "content": "", + "style": "outline", + "tags": "swim,swimming,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "golf-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,pga,tee,ball", + "set_id": 1 + }, + { + "name": "goodreads-logo-light", + "content": "", + "style": "outline", + "tags": "*updated*,reading,books,social media,logos", + "set_id": 1 + }, + { + "name": "google-cardboard-logo-light", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,logos", + "set_id": 1 + }, + { + "name": "google-chrome-logo-light", + "content": "", + "style": "outline", + "tags": "web browsers,internet", + "set_id": 1 + }, + { + "name": "google-drive-logo-light", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "google-logo-light", + "content": "", + "style": "outline", + "tags": "logos,search engine,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-photos-logo-light", + "content": "", + "style": "outline", + "tags": "album,pictures,photography", + "set_id": 1 + }, + { + "name": "google-play-logo-light", + "content": "", + "style": "outline", + "tags": "logos,games,apps,applications,play store,app store,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-podcasts-logo-light", + "content": "", + "style": "outline", + "tags": "audio", + "set_id": 1 + }, + { + "name": "gps-light", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-fix-light", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation,disabled", + "set_id": 1 + }, + { + "name": "gradient-light", + "content": "", + "style": "outline", + "tags": "fade,ombre,opacity", + "set_id": 1 + }, + { + "name": "graduation-cap-light", + "content": "", + "style": "outline", + "tags": "classroom,teacher,education,school,college,university,degree,graduate,hat", + "set_id": 1 + }, + { + "name": "grains-light", + "content": "", + "style": "outline", + "tags": "wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "grains-slash-light", + "content": "", + "style": "outline", + "tags": "gluten-free,wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "graph-light", + "content": "", + "style": "outline", + "tags": "nodes,tree", + "set_id": 1 + }, + { + "name": "graphics-card-light", + "content": "", + "style": "outline", + "tags": "*new*,graphics card,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "greater-than-light", + "content": "", + "style": "outline", + "tags": "*new*,>,greater than,gt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "greater-than-or-equal-light", + "content": "", + "style": "outline", + "tags": "*new*,≥,greater than or equal,gte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "grid-four-light", + "content": "", + "style": "outline", + "tags": "4,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "grid-nine-light", + "content": "", + "style": "outline", + "tags": "9,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "guitar-light", + "content": "", + "style": "outline", + "tags": "music,instrument", + "set_id": 1 + }, + { + "name": "hair-dryer-light", + "content": "", + "style": "outline", + "tags": "*new*,blow dryer,beauty,grooming,salon", + "set_id": 1 + }, + { + "name": "hamburger-light", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "hammer-light", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "hand-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,backhand", + "set_id": 1 + }, + { + "name": "hand-arrow-down-light", + "content": "", + "style": "outline", + "tags": "*new*,take,receive,remove,withdraw,emoji", + "set_id": 1 + }, + { + "name": "hand-arrow-up-light", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,deposit,donation,emoji", + "set_id": 1 + }, + { + "name": "hand-coins-light", + "content": "", + "style": "outline", + "tags": "donation,payment,money,paying,purchase", + "set_id": 1 + }, + { + "name": "hand-deposit-light", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,donation,atm,emoji", + "set_id": 1 + }, + { + "name": "hand-eye-light", + "content": "", + "style": "outline", + "tags": "*updated*,emoji,hamsa,evil eye", + "set_id": 1 + }, + { + "name": "hand-fist-light", + "content": "", + "style": "outline", + "tags": "emoji,power,protest,blm", + "set_id": 1 + }, + { + "name": "hand-grabbing-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,drag,hold", + "set_id": 1 + }, + { + "name": "hand-heart-light", + "content": "", + "style": "outline", + "tags": "donation,care,emoji", + "set_id": 1 + }, + { + "name": "hand-palm-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,palm,stop,wait,hamsa,5", + "set_id": 1 + }, + { + "name": "hand-peace-light", + "content": "", + "style": "outline", + "tags": "*new*,emoji,victory", + "set_id": 1 + }, + { + "name": "hand-pointing-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,fingers,clicks,mouse", + "set_id": 1 + }, + { + "name": "hand-soap-light", + "content": "", + "style": "outline", + "tags": "dispenser,pump,sanitizer,disinfectant,lotion,bottle", + "set_id": 1 + }, + { + "name": "hand-swipe-left-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-swipe-right-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-tap-light", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-waving-light", + "content": "", + "style": "outline", + "tags": "emoji,palm,wave,hello,goodbye", + "set_id": 1 + }, + { + "name": "hand-withdraw-light", + "content": "", + "style": "outline", + "tags": "*new*,take,remove,withdrawal,atm,emoji", + "set_id": 1 + }, + { + "name": "handbag-light", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "handbag-simple-light", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "hands-clapping-light", + "content": "", + "style": "outline", + "tags": "emoji,clap,applause", + "set_id": 1 + }, + { + "name": "hands-praying-light", + "content": "", + "style": "outline", + "tags": "emoji,religion,worship,prayer,thanks,thank you", + "set_id": 1 + }, + { + "name": "handshake-light", + "content": "", + "style": "outline", + "tags": "emoji,deal,agreement", + "set_id": 1 + }, + { + "name": "hard-drive-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-drives-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-hat-light", + "content": "", + "style": "outline", + "tags": "*new*,safety,construction,industry,helmet,ppe", + "set_id": 1 + }, + { + "name": "hash-light", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "hash-straight-light", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "head-circuit-light", + "content": "", + "style": "outline", + "tags": "*new*,automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "headlights-light", + "content": "", + "style": "outline", + "tags": "brights,high beams", + "set_id": 1 + }, + { + "name": "headphones-light", + "content": "", + "style": "outline", + "tags": "music,audio,listening", + "set_id": 1 + }, + { + "name": "headset-light", + "content": "", + "style": "outline", + "tags": "music,audio,listening,gaming,voice chat,microphone,headphones,support,customer-service,call-center", + "set_id": 1 + }, + { + "name": "heart-light", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-break-light", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heart-half-light", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited", + "set_id": 1 + }, + { + "name": "heart-straight-light", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-straight-break-light", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heartbeat-light", + "content": "", + "style": "outline", + "tags": "wellness,healthy,ecg,ekg,vitals,monitor", + "set_id": 1 + }, + { + "name": "hexagon-light", + "content": "", + "style": "outline", + "tags": "6,shapes,polygons", + "set_id": 1 + }, + { + "name": "high-definition-light", + "content": "", + "style": "outline", + "tags": "*new*,hd,resolution,video", + "set_id": 1 + }, + { + "name": "high-heel-light", + "content": "", + "style": "outline", + "tags": "*updated*,pumps,clothes,clothing,shoes", + "set_id": 1 + }, + { + "name": "highlighter-light", + "content": "", + "style": "outline", + "tags": "*new*,marker,write,writing,editing", + "set_id": 1 + }, + { + "name": "highlighter-circle-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "hockey-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,nhl,stick,puck", + "set_id": 1 + }, + { + "name": "hoodie-light", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sweatshirt", + "set_id": 1 + }, + { + "name": "horse-light", + "content": "", + "style": "outline", + "tags": "animals,equestrian,chess,knight,sports", + "set_id": 1 + }, + { + "name": "hospital-light", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,medical,medicine,emergency,doctor,buildings", + "set_id": 1 + }, + { + "name": "hourglass-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-high-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-low-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-medium-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-high-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-low-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-medium-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "house-light", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-line-light", + "content": "", + "style": "outline", + "tags": "*updated*,homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-simple-light", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "hurricane-light", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,cyclone,storm,disaster,wind", + "set_id": 1 + }, + { + "name": "ice-cream-light", + "content": "", + "style": "outline", + "tags": "food,dessert,cone", + "set_id": 1 + }, + { + "name": "identification-badge-light", + "content": "", + "style": "outline", + "tags": "license,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "identification-card-light", + "content": "", + "style": "outline", + "tags": "license,badge,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "image-light", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "image-broken-light", + "content": "", + "style": "outline", + "tags": "*new*,pictures,photographs,photography,wallpapers,gallery,landscape,missing,error,404", + "set_id": 1 + }, + { + "name": "image-square-light", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "images-light", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "images-square-light", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "infinity-light", + "content": "", + "style": "outline", + "tags": "infinite,lemniscate,figure-eight,mathematics,arithmetic,calculator,∞", + "set_id": 1 + }, + { + "name": "info-light", + "content": "", + "style": "outline", + "tags": "information,help,support", + "set_id": 1 + }, + { + "name": "instagram-logo-light", + "content": "", + "style": "outline", + "tags": "logos,social media,photography,camera", + "set_id": 1 + }, + { + "name": "intersect-light", + "content": "", + "style": "outline", + "tags": "round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "intersect-square-light", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection", + "set_id": 1 + }, + { + "name": "intersect-three-light", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection,gender,pronouns", + "set_id": 1 + }, + { + "name": "intersection-light", + "content": "", + "style": "outline", + "tags": "*new*,∩,intersection,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "invoice-light", + "content": "", + "style": "outline", + "tags": "*new*,receipt,expense,bill", + "set_id": 1 + }, + { + "name": "island-light", + "content": "", + "style": "outline", + "tags": "*new*,geography,beach,ocean,tropical,palm,vacation,trip,locations,places", + "set_id": 1 + }, + { + "name": "jar-light", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jar-label-light", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jeep-light", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,automobile,suv,cars,trucks,wrangler,off-road,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "joystick-light", + "content": "", + "style": "outline", + "tags": "*new*,gaming,game controller,video games,arcade game,atari", + "set_id": 1 + }, + { + "name": "kanban-light", + "content": "", + "style": "outline", + "tags": "scheduling,tasks,project management,process,lean,agile", + "set_id": 1 + }, + { + "name": "key-light", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "key-return-light", + "content": "", + "style": "outline", + "tags": "keyboard,enter", + "set_id": 1 + }, + { + "name": "keyboard-light", + "content": "", + "style": "outline", + "tags": "typing,type,keys,input", + "set_id": 1 + }, + { + "name": "keyhole-light", + "content": "", + "style": "outline", + "tags": "lock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "knife-light", + "content": "", + "style": "outline", + "tags": "tools,food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "ladder-light", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "ladder-simple-light", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "lamp-light", + "content": "", + "style": "outline", + "tags": "light,furniture,appliances", + "set_id": 1 + }, + { + "name": "lamp-pendant-light", + "content": "", + "style": "outline", + "tags": "*new*,light,furniture,appliances", + "set_id": 1 + }, + { + "name": "laptop-light", + "content": "", + "style": "outline", + "tags": "computer,notebook,pc,macbook", + "set_id": 1 + }, + { + "name": "lasso-light", + "content": "", + "style": "outline", + "tags": "*new*,select,selection,loop,rope,cowboy", + "set_id": 1 + }, + { + "name": "lastfm-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,scrobble,music,social media", + "set_id": 1 + }, + { + "name": "layout-light", + "content": "", + "style": "outline", + "tags": "wireframe,sidebar,ui,interface", + "set_id": 1 + }, + { + "name": "leaf-light", + "content": "", + "style": "outline", + "tags": "plants,trees,branches,leaves,nodes,green,environmental", + "set_id": 1 + }, + { + "name": "lectern-light", + "content": "", + "style": "outline", + "tags": "*new*,lecture,podium,pulpit,stand,speech,presentation,keynote", + "set_id": 1 + }, + { + "name": "lego-light", + "content": "", + "style": "outline", + "tags": "*new*,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "lego-smiley-light", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "less-than-light", + "content": "", + "style": "outline", + "tags": "*new*,<,less than,lt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "less-than-or-equal-light", + "content": "", + "style": "outline", + "tags": "*new*,≤,less than or equal,lte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "letter-circle-h-light", + "content": "", + "style": "outline", + "tags": "*new*,hospital,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-p-light", + "content": "", + "style": "outline", + "tags": "*new*,parking lot,valet,vehicles,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-v-light", + "content": "", + "style": "outline", + "tags": "*new*,vegan,letter,glyph,character", + "set_id": 1 + }, + { + "name": "lifebuoy-light", + "content": "", + "style": "outline", + "tags": "lifebelt,lifesaver,safety,help,support,nautical,boats,ships", + "set_id": 1 + }, + { + "name": "lightbulb-light", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lightbulb-filament-light", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lighthouse-light", + "content": "", + "style": "outline", + "tags": "buildings,nautical,navigation,boats,ships,safety", + "set_id": 1 + }, + { + "name": "lightning-light", + "content": "", + "style": "outline", + "tags": "meteorology,stormy,thunderstorm,thunderbolt,charged,charger,charging,power,electricity,flash", + "set_id": 1 + }, + { + "name": "lightning-a-light", + "content": "", + "style": "outline", + "tags": "flash,auto", + "set_id": 1 + }, + { + "name": "lightning-slash-light", + "content": "", + "style": "outline", + "tags": "thunderbolt,charged,charger,charging,power,electricity,disabled,flash", + "set_id": 1 + }, + { + "name": "line-segment-light", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-segments-light", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-vertical-light", + "content": "", + "style": "outline", + "tags": "*new*,bar,pipe,|,divider. symbol", + "set_id": 1 + }, + { + "name": "link-light", + "content": "", + "style": "outline", + "tags": "*updated*,anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-break-light", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-light", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-break-light", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-light", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-break-light", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "linkedin-logo-light", + "content": "", + "style": "outline", + "tags": "logos,jobs,employment,social media", + "set_id": 1 + }, + { + "name": "linktree-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,social media,links", + "set_id": 1 + }, + { + "name": "linux-logo-light", + "content": "", + "style": "outline", + "tags": "penguin,computer,animals", + "set_id": 1 + }, + { + "name": "list-light", + "content": "", + "style": "outline", + "tags": "*updated*,hamburger menu,overflow menu,sidebar,3,ul,ol,unordered list,ordered list,checklist,lines", + "set_id": 1 + }, + { + "name": "list-bullets-light", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,bulleted list,checklist", + "set_id": 1 + }, + { + "name": "list-checks-light", + "content": "", + "style": "outline", + "tags": "*updated*,checklist,todo", + "set_id": 1 + }, + { + "name": "list-dashes-light", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,dashed list,checklist", + "set_id": 1 + }, + { + "name": "list-heart-light", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "list-magnifying-glass-light", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "list-numbers-light", + "content": "", + "style": "outline", + "tags": "*updated*,ol,ordered list,numbered list,checklist", + "set_id": 1 + }, + { + "name": "list-plus-light", + "content": "", + "style": "outline", + "tags": "*updated*,ul,ol,unordered list,ordered list,checklist,add,+", + "set_id": 1 + }, + { + "name": "list-star-light", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "lock-light", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-light", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-open-light", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-laminated-light", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-laminated-open-light", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-open-light", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-simple-light", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-simple-open-light", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lockers-light", + "content": "", + "style": "outline", + "tags": "locker room,gym,storage", + "set_id": 1 + }, + { + "name": "log-light", + "content": "", + "style": "outline", + "tags": "*new*,tree,stump,stick,branch", + "set_id": 1 + }, + { + "name": "magic-wand-light", + "content": "", + "style": "outline", + "tags": "selection,wizard,games", + "set_id": 1 + }, + { + "name": "magnet-light", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnet-straight-light", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnifying-glass-light", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "magnifying-glass-minus-light", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom out,-", + "set_id": 1 + }, + { + "name": "magnifying-glass-plus-light", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom in,+", + "set_id": 1 + }, + { + "name": "mailbox-light", + "content": "", + "style": "outline", + "tags": "*new*,email,letters,messaging,post", + "set_id": 1 + }, + { + "name": "map-pin-light", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-area-light", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-line-light", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-plus-light", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,add,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-light", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-area-light", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-line-light", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-trifold-light", + "content": "", + "style": "outline", + "tags": "maps,places,locations,cartography,geography", + "set_id": 1 + }, + { + "name": "markdown-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,markup,editor,.md", + "set_id": 1 + }, + { + "name": "marker-circle-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "martini-light", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,cocktails,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "mask-happy-light", + "content": "", + "style": "outline", + "tags": "theater,costume,smile,smiling,thalia", + "set_id": 1 + }, + { + "name": "mask-sad-light", + "content": "", + "style": "outline", + "tags": "theater,costume,cry,crying,melpomene", + "set_id": 1 + }, + { + "name": "mastodon-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,fediverse,social media,decentralized", + "set_id": 1 + }, + { + "name": "math-operations-light", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,calculator,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "matrix-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,matrix protocol,brands,logos", + "set_id": 1 + }, + { + "name": "medal-light", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,rosette", + "set_id": 1 + }, + { + "name": "medal-military-light", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,military", + "set_id": 1 + }, + { + "name": "medium-logo-light", + "content": "", + "style": "outline", + "tags": "logos,reading,writing,news,social media", + "set_id": 1 + }, + { + "name": "megaphone-light", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "megaphone-simple-light", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "member-of-light", + "content": "", + "style": "outline", + "tags": "*new*,∈,is element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "memory-light", + "content": "", + "style": "outline", + "tags": "*new*,ram,microchip,computer,circuit,electronics", + "set_id": 1 + }, + { + "name": "messenger-logo-light", + "content": "", + "style": "outline", + "tags": "logos,facebook,social media", + "set_id": 1 + }, + { + "name": "meta-logo-light", + "content": "", + "style": "outline", + "tags": "*updated*,facebook,logos,social media,logos", + "set_id": 1 + }, + { + "name": "meteor-light", + "content": "", + "style": "outline", + "tags": "*new*,astronomy,asteroid,fireball", + "set_id": 1 + }, + { + "name": "metronome-light", + "content": "", + "style": "outline", + "tags": "music,beat,tempo,bpm", + "set_id": 1 + }, + { + "name": "microphone-light", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio", + "set_id": 1 + }, + { + "name": "microphone-slash-light", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio,muted,disabled", + "set_id": 1 + }, + { + "name": "microphone-stage-light", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,performance,concert", + "set_id": 1 + }, + { + "name": "microscope-light", + "content": "", + "style": "outline", + "tags": "*new*,science,biology,experiment,magnify", + "set_id": 1 + }, + { + "name": "microsoft-excel-logo-light", + "content": "", + "style": "outline", + "tags": "tables,spreadsheets,tabular", + "set_id": 1 + }, + { + "name": "microsoft-outlook-logo-light", + "content": "", + "style": "outline", + "tags": "email,logos", + "set_id": 1 + }, + { + "name": "microsoft-powerpoint-logo-light", + "content": "", + "style": "outline", + "tags": "slides,slideshow,presentation", + "set_id": 1 + }, + { + "name": "microsoft-teams-logo-light", + "content": "", + "style": "outline", + "tags": "chat,video conference", + "set_id": 1 + }, + { + "name": "microsoft-word-logo-light", + "content": "", + "style": "outline", + "tags": "documents,word processor,doc,docx", + "set_id": 1 + }, + { + "name": "minus-light", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,line,horizontal,divider", + "set_id": 1 + }, + { + "name": "minus-circle-light", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,round", + "set_id": 1 + }, + { + "name": "minus-square-light", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "money-light", + "content": "", + "style": "outline", + "tags": "cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "money-wavy-light", + "content": "", + "style": "outline", + "tags": "*new*,cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "monitor-light", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays", + "set_id": 1 + }, + { + "name": "monitor-arrow-up-light", + "content": "", + "style": "outline", + "tags": "*new*,screen,screencast,screenshare,upload,video,movie", + "set_id": 1 + }, + { + "name": "monitor-play-light", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays,screencast,video,movie", + "set_id": 1 + }, + { + "name": "moon-light", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing", + "set_id": 1 + }, + { + "name": "moon-stars-light", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing,constellation", + "set_id": 1 + }, + { + "name": "moped-light", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "moped-front-light", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "mosque-light", + "content": "", + "style": "outline", + "tags": "islam,muslim,religion,worship", + "set_id": 1 + }, + { + "name": "motorcycle-light", + "content": "", + "style": "outline", + "tags": "vehicles,motorbike,transportation,travel", + "set_id": 1 + }, + { + "name": "mountains-light", + "content": "", + "style": "outline", + "tags": "*updated*,hills,outdoors,terrain,geology,adventure", + "set_id": 1 + }, + { + "name": "mouse-light", + "content": "", + "style": "outline", + "tags": "*updated*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-left-click-light", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-middle-click-light", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-right-click-light", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-scroll-light", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-simple-light", + "content": "", + "style": "outline", + "tags": "clicks,input", + "set_id": 1 + }, + { + "name": "music-note-light", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-note-simple-light", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-light", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-minus-light", + "content": "", + "style": "outline", + "tags": "*new*,songs,audio,playlist,albums,remove,subtract", + "set_id": 1 + }, + { + "name": "music-notes-plus-light", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums,add", + "set_id": 1 + }, + { + "name": "music-notes-simple-light", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "navigation-arrow-light", + "content": "", + "style": "outline", + "tags": "location,directions,compass,gps", + "set_id": 1 + }, + { + "name": "needle-light", + "content": "", + "style": "outline", + "tags": "sewing,thread,awl,tailor", + "set_id": 1 + }, + { + "name": "network-light", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan", + "set_id": 1 + }, + { + "name": "network-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,error", + "set_id": 1 + }, + { + "name": "network-x-light", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,disabled", + "set_id": 1 + }, + { + "name": "newspaper-light", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "newspaper-clipping-light", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "not-equals-light", + "content": "", + "style": "outline", + "tags": "*new*,≠,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-member-of-light", + "content": "", + "style": "outline", + "tags": "*new*,∉,is not element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-subset-of-light", + "content": "", + "style": "outline", + "tags": "*new*,⊄,not subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-superset-of-light", + "content": "", + "style": "outline", + "tags": "*new*,⊉,not superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "notches-light", + "content": "", + "style": "outline", + "tags": "textarea,resize,drag handle,knurling", + "set_id": 1 + }, + { + "name": "note-light", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-blank-light", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-pencil-light", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "notebook-light", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,journal,diary,logs,logbook", + "set_id": 1 + }, + { + "name": "notepad-light", + "content": "", + "style": "outline", + "tags": "*updated*,logs,logbook,notes,note-taking,memorandum,journal,diary", + "set_id": 1 + }, + { + "name": "notification-light", + "content": "", + "style": "outline", + "tags": "badge,pip", + "set_id": 1 + }, + { + "name": "notion-logo-light", + "content": "", + "style": "outline", + "tags": "documentation,productivity,wiki,logos", + "set_id": 1 + }, + { + "name": "nuclear-plant-light", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "number-circle-eight-light", + "content": "", + "style": "outline", + "tags": "8,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-five-light", + "content": "", + "style": "outline", + "tags": "5,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-four-light", + "content": "", + "style": "outline", + "tags": "*updated*,4,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-nine-light", + "content": "", + "style": "outline", + "tags": "9,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-one-light", + "content": "", + "style": "outline", + "tags": "1,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-seven-light", + "content": "", + "style": "outline", + "tags": "7,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-six-light", + "content": "", + "style": "outline", + "tags": "6,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-three-light", + "content": "", + "style": "outline", + "tags": "3,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-two-light", + "content": "", + "style": "outline", + "tags": "2,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-zero-light", + "content": "", + "style": "outline", + "tags": "0,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-eight-light", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-five-light", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-four-light", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-nine-light", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-one-light", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-seven-light", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-six-light", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-eight-light", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-five-light", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-four-light", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-nine-light", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-one-light", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-seven-light", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-six-light", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-three-light", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-two-light", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-zero-light", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-three-light", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-two-light", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-zero-light", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "numpad-light", + "content": "", + "style": "outline", + "tags": "*new*,dialer,dialpad,call-center,telephone,landline,password,passcode", + "set_id": 1 + }, + { + "name": "nut-light", + "content": "", + "style": "outline", + "tags": "bolts,screws,machinery,tools,hexagon", + "set_id": 1 + }, + { + "name": "ny-times-logo-light", + "content": "", + "style": "outline", + "tags": "nyt,new york times,logos,reading,writing,news,newspaper", + "set_id": 1 + }, + { + "name": "octagon-light", + "content": "", + "style": "outline", + "tags": "8,shapes,polygons", + "set_id": 1 + }, + { + "name": "office-chair-light", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "onigiri-light", + "content": "", + "style": "outline", + "tags": "*new*,rice ball,japanese,food,restaurant", + "set_id": 1 + }, + { + "name": "open-ai-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,artificial intelligence,ai,chatgpt,llm,logos", + "set_id": 1 + }, + { + "name": "option-light", + "content": "", + "style": "outline", + "tags": "keyboard,shortcut,modifier", + "set_id": 1 + }, + { + "name": "orange-light", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "orange-slice-light", + "content": "", + "style": "outline", + "tags": "food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "oven-light", + "content": "", + "style": "outline", + "tags": "*new*,stove,stovetop,food,cooking,cuisine,kitchen", + "set_id": 1 + }, + { + "name": "package-light", + "content": "", + "style": "outline", + "tags": "packages,boxes,delivery,mail,postal service,bundles,library,libraries,shipping", + "set_id": 1 + }, + { + "name": "paint-brush-light", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-broad-light", + "content": "", + "style": "outline", + "tags": "fill,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-household-light", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-bucket-light", + "content": "", + "style": "outline", + "tags": "*updated*,paintbucket,colors,color picker,fill,arts", + "set_id": 1 + }, + { + "name": "paint-roller-light", + "content": "", + "style": "outline", + "tags": "colors,color picker,fill,arts,theme", + "set_id": 1 + }, + { + "name": "palette-light", + "content": "", + "style": "outline", + "tags": "paint,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "panorama-light", + "content": "", + "style": "outline", + "tags": "*new*,image,picture,photography,landscape,360", + "set_id": 1 + }, + { + "name": "pants-light", + "content": "", + "style": "outline", + "tags": "clothing,clothes,jeans", + "set_id": 1 + }, + { + "name": "paper-plane-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-right-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-tilt-light", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paperclip-light", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "paperclip-horizontal-light", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "parachute-light", + "content": "", + "style": "outline", + "tags": "skydiving,safety", + "set_id": 1 + }, + { + "name": "paragraph-light", + "content": "", + "style": "outline", + "tags": "pilcrow", + "set_id": 1 + }, + { + "name": "parallelogram-light", + "content": "", + "style": "outline", + "tags": "shapes,bandcamp,logos", + "set_id": 1 + }, + { + "name": "park-light", + "content": "", + "style": "outline", + "tags": "bench,outdoors", + "set_id": 1 + }, + { + "name": "password-light", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "path-light", + "content": "", + "style": "outline", + "tags": "transit,travel,trail,gps,navigation,route,destination,vector", + "set_id": 1 + }, + { + "name": "patreon-logo-light", + "content": "", + "style": "outline", + "tags": "*updated*,crowdfunding,logos", + "set_id": 1 + }, + { + "name": "pause-light", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "pause-circle-light", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop,round", + "set_id": 1 + }, + { + "name": "paw-print-light", + "content": "", + "style": "outline", + "tags": "pets,pet store,pet shop,animals,cat,dog,veterinarian", + "set_id": 1 + }, + { + "name": "paypal-logo-light", + "content": "", + "style": "outline", + "tags": "payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "peace-light", + "content": "", + "style": "outline", + "tags": "love,hippies,peace sign,symbols", + "set_id": 1 + }, + { + "name": "pen-light", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pen-nib-light", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pen-nib-straight-light", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pencil-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-circle-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-line-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-ruler-light", + "content": "", + "style": "outline", + "tags": "*new*,drawing,drafting,construction,tools", + "set_id": 1 + }, + { + "name": "pencil-simple-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-line-light", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-slash-light", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pencil-slash-light", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pentagon-light", + "content": "", + "style": "outline", + "tags": "*new*,shapes,polygons,5", + "set_id": 1 + }, + { + "name": "pentagram-light", + "content": "", + "style": "outline", + "tags": "star,wicca,satan,satanism,religion,spirituality,evil,magic", + "set_id": 1 + }, + { + "name": "pepper-light", + "content": "", + "style": "outline", + "tags": "food,spicy,chile,vegetable", + "set_id": 1 + }, + { + "name": "percent-light", + "content": "", + "style": "outline", + "tags": "%,percentage,percentile,ratio,delta,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "person-light", + "content": "", + "style": "outline", + "tags": "walking,human,woman,man,body,transit,transportation,travel,commuter,user", + "set_id": 1 + }, + { + "name": "person-arms-spread-light", + "content": "", + "style": "outline", + "tags": "accessibility,vitruvian,stretch,sports", + "set_id": 1 + }, + { + "name": "person-simple-light", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-bike-light", + "content": "", + "style": "outline", + "tags": "pedestrian,biking,bicycle,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-circle-light", + "content": "", + "style": "outline", + "tags": "*new*,human,accessibility,a11y,vitruvius,vitruvian", + "set_id": 1 + }, + { + "name": "person-simple-hike-light", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,climbing,mountaineering,bouldering", + "set_id": 1 + }, + { + "name": "person-simple-run-light", + "content": "", + "style": "outline", + "tags": "pedestrian,running,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-ski-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,skiing,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-snowboard-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,snowboarding,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-swim-light", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,swimming,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-tai-chi-light", + "content": "", + "style": "outline", + "tags": "*new*,mindfulness,martial arts,meditation,sports,exercise,yoga", + "set_id": 1 + }, + { + "name": "person-simple-throw-light", + "content": "", + "style": "outline", + "tags": "pedestrian,tennis,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-walk-light", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "perspective-light", + "content": "", + "style": "outline", + "tags": "3d,skew,warp,trapezoid", + "set_id": 1 + }, + { + "name": "phone-light", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-call-light", + "content": "", + "style": "outline", + "tags": "calls,calling,ringing,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-disconnect-light", + "content": "", + "style": "outline", + "tags": "calls,hang up,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-incoming-light", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-list-light", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-outgoing-light", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-pause-light", + "content": "", + "style": "outline", + "tags": "*new*,calls,hold,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-plus-light", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk,conference,add", + "set_id": 1 + }, + { + "name": "phone-slash-light", + "content": "", + "style": "outline", + "tags": "calls,disabled,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-transfer-light", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-x-light", + "content": "", + "style": "outline", + "tags": "calls,missed,errors,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phosphor-logo-light", + "content": "", + "style": "outline", + "tags": "logos", + "set_id": 1 + }, + { + "name": "pi-light", + "content": "", + "style": "outline", + "tags": "π,symbol,mathematics,circle", + "set_id": 1 + }, + { + "name": "piano-keys-light", + "content": "", + "style": "outline", + "tags": "music,instrument,keyboard", + "set_id": 1 + }, + { + "name": "picnic-table-light", + "content": "", + "style": "outline", + "tags": "*new*,bench,park,outdoors", + "set_id": 1 + }, + { + "name": "picture-in-picture-light", + "content": "", + "style": "outline", + "tags": "pip,pop-out,minimize,maximize", + "set_id": 1 + }, + { + "name": "piggy-bank-light", + "content": "", + "style": "outline", + "tags": "savings,deposit,money,coins", + "set_id": 1 + }, + { + "name": "pill-light", + "content": "", + "style": "outline", + "tags": "capsule,medicine,rx,pharmacy,pharmacist,pharmaceuticals,prescription,drugs", + "set_id": 1 + }, + { + "name": "ping-pong-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,paddle", + "set_id": 1 + }, + { + "name": "pint-glass-light", + "content": "", + "style": "outline", + "tags": "*new*,water,beverage,drinks,beverages,food,dining", + "set_id": 1 + }, + { + "name": "pinterest-logo-light", + "content": "", + "style": "outline", + "tags": "logos,vision board,mood board,social media", + "set_id": 1 + }, + { + "name": "pinwheel-light", + "content": "", + "style": "outline", + "tags": "toys,whirligig", + "set_id": 1 + }, + { + "name": "pipe-light", + "content": "", + "style": "outline", + "tags": "*new*,tube,plumber,plumbing,construction", + "set_id": 1 + }, + { + "name": "pipe-wrench-light", + "content": "", + "style": "outline", + "tags": "*new*,plumber,plumbing,tools,construction", + "set_id": 1 + }, + { + "name": "pix-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "pizza-light", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "placeholder-light", + "content": "", + "style": "outline", + "tags": "empty,notdef,tofu,rectangle slash,missing", + "set_id": 1 + }, + { + "name": "planet-light", + "content": "", + "style": "outline", + "tags": "saturn,world,globe,astronomy,space", + "set_id": 1 + }, + { + "name": "plant-light", + "content": "", + "style": "outline", + "tags": "sprout,vegan,farm,farming,garden,gardening", + "set_id": 1 + }, + { + "name": "play-light", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start", + "set_id": 1 + }, + { + "name": "play-circle-light", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,round", + "set_id": 1 + }, + { + "name": "play-pause-light", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "playlist-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,queue", + "set_id": 1 + }, + { + "name": "plug-light", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plug-charging-light", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,charge,charging", + "set_id": 1 + }, + { + "name": "plugs-light", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,disconnected", + "set_id": 1 + }, + { + "name": "plugs-connected-light", + "content": "", + "style": "outline", + "tags": "*updated*,outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plus-light", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "plus-circle-light", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,round,+", + "set_id": 1 + }, + { + "name": "plus-minus-light", + "content": "", + "style": "outline", + "tags": "plus or minus,plus/minus,add/subtract,addition,sum,subtraction,difference,mathematics,arithmetic,calculator,+,-,±", + "set_id": 1 + }, + { + "name": "plus-square-light", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "poker-chip-light", + "content": "", + "style": "outline", + "tags": "chips,tokens,cards,gambling,casino", + "set_id": 1 + }, + { + "name": "police-car-light", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,law enforcement", + "set_id": 1 + }, + { + "name": "polygon-light", + "content": "", + "style": "outline", + "tags": "shapes,drawing", + "set_id": 1 + }, + { + "name": "popcorn-light", + "content": "", + "style": "outline", + "tags": "food,movies,theater", + "set_id": 1 + }, + { + "name": "popsicle-light", + "content": "", + "style": "outline", + "tags": "*new*,ice cream,dessert,summer,food", + "set_id": 1 + }, + { + "name": "potted-plant-light", + "content": "", + "style": "outline", + "tags": "sprout,vegan,garden,gardening", + "set_id": 1 + }, + { + "name": "power-light", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,on,off,on/off,switch,power switch", + "set_id": 1 + }, + { + "name": "prescription-light", + "content": "", + "style": "outline", + "tags": "rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor", + "set_id": 1 + }, + { + "name": "presentation-light", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "presentation-chart-light", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,graphs,graphing,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "printer-light", + "content": "", + "style": "outline", + "tags": "printing", + "set_id": 1 + }, + { + "name": "prohibit-light", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "prohibit-inset-light", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "projector-screen-light", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,movies,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "projector-screen-chart-light", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "pulse-light", + "content": "", + "style": "outline", + "tags": "activity,heartbeat,medical,ecg,ekg,vitals,monitor,medicine", + "set_id": 1 + }, + { + "name": "push-pin-light", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-light", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-slash-light", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "push-pin-slash-light", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "puzzle-piece-light", + "content": "", + "style": "outline", + "tags": "board game,element,component,extension,plugin", + "set_id": 1 + }, + { + "name": "qr-code-light", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "question-light", + "content": "", + "style": "outline", + "tags": "information,help,support,questions", + "set_id": 1 + }, + { + "name": "question-mark-light", + "content": "", + "style": "outline", + "tags": "*new*,?,information,help,support,questions,punctuation,symbol", + "set_id": 1 + }, + { + "name": "queue-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,playlist", + "set_id": 1 + }, + { + "name": "quotes-light", + "content": "", + "style": "outline", + "tags": "quoations,quotation marks,double-quotes,writing,books", + "set_id": 1 + }, + { + "name": "rabbit-light", + "content": "", + "style": "outline", + "tags": "*new*,hare,fast,animal", + "set_id": 1 + }, + { + "name": "racquet-light", + "content": "", + "style": "outline", + "tags": "*new*,sports,tennis,squash,pickleball", + "set_id": 1 + }, + { + "name": "radical-light", + "content": "", + "style": "outline", + "tags": "√,radix,radicand,square root,squareroot,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "radio-light", + "content": "", + "style": "outline", + "tags": "broadcast,fm,am,xm,transmitter,receiver", + "set_id": 1 + }, + { + "name": "radio-button-light", + "content": "", + "style": "outline", + "tags": "input,checkbox,checked", + "set_id": 1 + }, + { + "name": "radioactive-light", + "content": "", + "style": "outline", + "tags": "radiation,danger,warning,nuclear,atomic", + "set_id": 1 + }, + { + "name": "rainbow-light", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,arc,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "rainbow-cloud-light", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,cloudy,partly cloudy,partly sunny,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "ranking-light", + "content": "", + "style": "outline", + "tags": "*new*,medal,rank,leaderboard,winner,sports", + "set_id": 1 + }, + { + "name": "read-cv-logo-light", + "content": "", + "style": "outline", + "tags": "resume,jobs,logos", + "set_id": 1 + }, + { + "name": "receipt-light", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense", + "set_id": 1 + }, + { + "name": "receipt-x-light", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense,cancel", + "set_id": 1 + }, + { + "name": "record-light", + "content": "", + "style": "outline", + "tags": "music,audio,recording,recorder,voice memo", + "set_id": 1 + }, + { + "name": "rectangle-light", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "rectangle-dashed-light", + "content": "", + "style": "outline", + "tags": "*new*,4,shapes,polygons,box,missing", + "set_id": 1 + }, + { + "name": "recycle-light", + "content": "", + "style": "outline", + "tags": "recycling,trash,environmental,green", + "set_id": 1 + }, + { + "name": "reddit-logo-light", + "content": "", + "style": "outline", + "tags": "logos,subreddit,snoo,social media", + "set_id": 1 + }, + { + "name": "repeat-light", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "repeat-once-light", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "replit-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,logos,ide,editor,coding", + "set_id": 1 + }, + { + "name": "resize-light", + "content": "", + "style": "outline", + "tags": "*new*,maximize,expand,grow", + "set_id": 1 + }, + { + "name": "rewind-light", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "rewind-circle-light", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "road-horizon-light", + "content": "", + "style": "outline", + "tags": "trip,drive,road,travel,transportation,highway", + "set_id": 1 + }, + { + "name": "robot-light", + "content": "", + "style": "outline", + "tags": "automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "rocket-light", + "content": "", + "style": "outline", + "tags": "spaceship,launch,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rocket-launch-light", + "content": "", + "style": "outline", + "tags": "*updated*,spaceship,flying,blastoff,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rows-light", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "rows-plus-bottom-light", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rows-plus-top-light", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rss-light", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rss-simple-light", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rug-light", + "content": "", + "style": "outline", + "tags": "*updated*,tapestry,carpet", + "set_id": 1 + }, + { + "name": "ruler-light", + "content": "", + "style": "outline", + "tags": "measure,scale,distance", + "set_id": 1 + }, + { + "name": "sailboat-light", + "content": "", + "style": "outline", + "tags": "*new*,sailing,ship,vehicles,transportation,sports,places,locations", + "set_id": 1 + }, + { + "name": "scales-light", + "content": "", + "style": "outline", + "tags": "measure,balance,law,justice,government", + "set_id": 1 + }, + { + "name": "scan-light", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "scan-smiley-light", + "content": "", + "style": "outline", + "tags": "*new*,facial recognition,face unlock,scanner", + "set_id": 1 + }, + { + "name": "scissors-light", + "content": "", + "style": "outline", + "tags": "*updated*,cut,snip,clipboard", + "set_id": 1 + }, + { + "name": "scooter-light", + "content": "", + "style": "outline", + "tags": "vehicles,transportation,travel,transit", + "set_id": 1 + }, + { + "name": "screencast-light", + "content": "", + "style": "outline", + "tags": "apple,airplay,screencasting,screen share,television,tv", + "set_id": 1 + }, + { + "name": "screwdriver-light", + "content": "", + "style": "outline", + "tags": "*new*,tools,construction,flathead,drill", + "set_id": 1 + }, + { + "name": "scribble-light", + "content": "", + "style": "outline", + "tags": "*new*,doodles,squiggle,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scribble-loop-light", + "content": "", + "style": "outline", + "tags": "doodles,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scroll-light", + "content": "", + "style": "outline", + "tags": "*updated*,parchment,paper,script,spell,fantasy", + "set_id": 1 + }, + { + "name": "seal-light", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-check-light", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-percent-light", + "content": "", + "style": "outline", + "tags": "*new*,badge,discount,sale,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-question-light", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-warning-light", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,errors,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seat-light", + "content": "", + "style": "outline", + "tags": "*new*,chair,car seat,airplane seat,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "seatbelt-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,safety", + "set_id": 1 + }, + { + "name": "security-camera-light", + "content": "", + "style": "outline", + "tags": "*new*,cctv,surveillance,video,monitor,motion detector,safety", + "set_id": 1 + }, + { + "name": "selection-light", + "content": "", + "style": "outline", + "tags": "marquis,select,square dashed", + "set_id": 1 + }, + { + "name": "selection-all-light", + "content": "", + "style": "outline", + "tags": "marquis,select all", + "set_id": 1 + }, + { + "name": "selection-background-light", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-foreground-light", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-inverse-light", + "content": "", + "style": "outline", + "tags": "marquis,invert", + "set_id": 1 + }, + { + "name": "selection-plus-light", + "content": "", + "style": "outline", + "tags": "marquis,add", + "set_id": 1 + }, + { + "name": "selection-slash-light", + "content": "", + "style": "outline", + "tags": "marquis,unselect", + "set_id": 1 + }, + { + "name": "shapes-light", + "content": "", + "style": "outline", + "tags": "geometry,square,circle,triangle", + "set_id": 1 + }, + { + "name": "share-light", + "content": "", + "style": "outline", + "tags": "send to,export,arrows", + "set_id": 1 + }, + { + "name": "share-fat-light", + "content": "", + "style": "outline", + "tags": "export,send to", + "set_id": 1 + }, + { + "name": "share-network-light", + "content": "", + "style": "outline", + "tags": "send to,export", + "set_id": 1 + }, + { + "name": "shield-light", + "content": "", + "style": "outline", + "tags": "badge,security,secured,defense,defended,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-check-light", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-checkered-light", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-chevron-light", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-plus-light", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-slash-light", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,disabled", + "set_id": 1 + }, + { + "name": "shield-star-light", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-warning-light", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,errors", + "set_id": 1 + }, + { + "name": "shipping-container-light", + "content": "", + "style": "outline", + "tags": "*new*,shipping,transportation,places,locations", + "set_id": 1 + }, + { + "name": "shirt-folded-light", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "shooting-star-light", + "content": "", + "style": "outline", + "tags": "wish,comet,meteor", + "set_id": 1 + }, + { + "name": "shopping-bag-light", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-bag-open-light", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-light", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-simple-light", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shovel-light", + "content": "", + "style": "outline", + "tags": "*new*,tools,digging,construction", + "set_id": 1 + }, + { + "name": "shower-light", + "content": "", + "style": "outline", + "tags": "bath,bathtub,bathroom,faucet", + "set_id": 1 + }, + { + "name": "shrimp-light", + "content": "", + "style": "outline", + "tags": "food,seafood,prawn", + "set_id": 1 + }, + { + "name": "shuffle-light", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-angular-light", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-simple-light", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "sidebar-light", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sidebar-simple-light", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sigma-light", + "content": "", + "style": "outline", + "tags": "σ,symbol,mathematics,sum", + "set_id": 1 + }, + { + "name": "sign-in-light", + "content": "", + "style": "outline", + "tags": "*updated*,signin,login,log in,enter", + "set_id": 1 + }, + { + "name": "sign-out-light", + "content": "", + "style": "outline", + "tags": "*updated*,signout,logout,log out,exit", + "set_id": 1 + }, + { + "name": "signature-light", + "content": "", + "style": "outline", + "tags": "*updated*,sign,autograph,verify", + "set_id": 1 + }, + { + "name": "signpost-light", + "content": "", + "style": "outline", + "tags": "direction,traffic,road sign,transit,transportation", + "set_id": 1 + }, + { + "name": "sim-card-light", + "content": "", + "style": "outline", + "tags": "*updated*,cellular,cellphone,mobile", + "set_id": 1 + }, + { + "name": "siren-light", + "content": "", + "style": "outline", + "tags": "alarm,police,lights,warning", + "set_id": 1 + }, + { + "name": "sketch-logo-light", + "content": "", + "style": "outline", + "tags": "drawing,art,illustration,ui,interface,prototype,prototyping,gemstone,diamond", + "set_id": 1 + }, + { + "name": "skip-back-light", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-back-circle-light", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-forward-light", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skip-forward-circle-light", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skull-light", + "content": "", + "style": "outline", + "tags": "death,dead,kill", + "set_id": 1 + }, + { + "name": "skype-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,chat,video conference", + "set_id": 1 + }, + { + "name": "slack-logo-light", + "content": "", + "style": "outline", + "tags": "logos,messaging", + "set_id": 1 + }, + { + "name": "sliders-light", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "sliders-horizontal-light", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "slideshow-light", + "content": "", + "style": "outline", + "tags": "pictures,images,photography,gallery,carousel", + "set_id": 1 + }, + { + "name": "smiley-light", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-angry-light", + "content": "", + "style": "outline", + "tags": "face,emoji,mad,frown", + "set_id": 1 + }, + { + "name": "smiley-blank-light", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,no face", + "set_id": 1 + }, + { + "name": "smiley-meh-light", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,neutral", + "set_id": 1 + }, + { + "name": "smiley-melting-light", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,embarrassment,sarcasm,shame,hot,heat", + "set_id": 1 + }, + { + "name": "smiley-nervous-light", + "content": "", + "style": "outline", + "tags": "*updated*,face,emoji,anxious,uncomfortable,uneasy,queasy,sick,ill", + "set_id": 1 + }, + { + "name": "smiley-sad-light", + "content": "", + "style": "outline", + "tags": "face,emoji,unhappy,frowning", + "set_id": 1 + }, + { + "name": "smiley-sticker-light", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-wink-light", + "content": "", + "style": "outline", + "tags": "face,emoji,winking,flirting,cute", + "set_id": 1 + }, + { + "name": "smiley-x-eyes-light", + "content": "", + "style": "outline", + "tags": "face,emoji,dead,killed,unconscious", + "set_id": 1 + }, + { + "name": "snapchat-logo-light", + "content": "", + "style": "outline", + "tags": "logos,messaging,social media", + "set_id": 1 + }, + { + "name": "sneaker-light", + "content": "", + "style": "outline", + "tags": "clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "sneaker-move-light", + "content": "", + "style": "outline", + "tags": "*updated*,clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "snowflake-light", + "content": "", + "style": "outline", + "tags": "meteorology,snowy,snowing,snowstorm", + "set_id": 1 + }, + { + "name": "soccer-ball-light", + "content": "", + "style": "outline", + "tags": "*updated*,sports,football,mls", + "set_id": 1 + }, + { + "name": "sock-light", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "solar-panel-light", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "solar-roof-light", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "sort-ascending-light", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,increasing,a to z,arrows,list", + "set_id": 1 + }, + { + "name": "sort-descending-light", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,decreasing,z to a,arrows,list", + "set_id": 1 + }, + { + "name": "soundcloud-logo-light", + "content": "", + "style": "outline", + "tags": "music,social media,logos", + "set_id": 1 + }, + { + "name": "spade-light", + "content": "", + "style": "outline", + "tags": "spades,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "sparkle-light", + "content": "", + "style": "outline", + "tags": "star,rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "speaker-hifi-light", + "content": "", + "style": "outline", + "tags": "music,audio,sound,stereo", + "set_id": 1 + }, + { + "name": "speaker-high-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-low-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-none-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-high-light", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-low-light", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-none-light", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-slash-light", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-simple-x-light", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speaker-slash-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-x-light", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speedometer-light", + "content": "", + "style": "outline", + "tags": "*new*,gauge,dashboard,meter,speed,odometer,performance", + "set_id": 1 + }, + { + "name": "sphere-light", + "content": "", + "style": "outline", + "tags": "*new*,circle,ball,3d,mesh,cad,model", + "set_id": 1 + }, + { + "name": "spinner-light", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-ball-light", + "content": "", + "style": "outline", + "tags": "*new*,loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-gap-light", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spiral-light", + "content": "", + "style": "outline", + "tags": "*updated*,spin,rotate,dizzy", + "set_id": 1 + }, + { + "name": "split-horizontal-light", + "content": "", + "style": "outline", + "tags": "resize,columns", + "set_id": 1 + }, + { + "name": "split-vertical-light", + "content": "", + "style": "outline", + "tags": "resize,rows", + "set_id": 1 + }, + { + "name": "spotify-logo-light", + "content": "", + "style": "outline", + "tags": "music,player,streaming", + "set_id": 1 + }, + { + "name": "spray-bottle-light", + "content": "", + "style": "outline", + "tags": "*new*,cleaner,cleaning", + "set_id": 1 + }, + { + "name": "square-light", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "square-half-light", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-half-bottom-light", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-logo-light", + "content": "", + "style": "outline", + "tags": "squareup,payment", + "set_id": 1 + }, + { + "name": "square-split-horizontal-light", + "content": "", + "style": "outline", + "tags": "shapes,polygons,columns", + "set_id": 1 + }, + { + "name": "square-split-vertical-light", + "content": "", + "style": "outline", + "tags": "shapes,polygons,rows", + "set_id": 1 + }, + { + "name": "squares-four-light", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,apps,applications,grid,table,microsoft,logos", + "set_id": 1 + }, + { + "name": "stack-light", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stack-minus-light", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,remove,delete", + "set_id": 1 + }, + { + "name": "stack-overflow-logo-light", + "content": "", + "style": "outline", + "tags": "logos,code", + "set_id": 1 + }, + { + "name": "stack-plus-light", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,add", + "set_id": 1 + }, + { + "name": "stack-simple-light", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stairs-light", + "content": "", + "style": "outline", + "tags": "staircase,steps,escalator,exit,signs", + "set_id": 1 + }, + { + "name": "stamp-light", + "content": "", + "style": "outline", + "tags": "clone,seal,official", + "set_id": 1 + }, + { + "name": "standard-definition-light", + "content": "", + "style": "outline", + "tags": "*new*,sd,resolution,video", + "set_id": 1 + }, + { + "name": "star-light", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-and-crescent-light", + "content": "", + "style": "outline", + "tags": "islam,muslim,moon,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "star-four-light", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-half-light", + "content": "", + "style": "outline", + "tags": "rate,ratings", + "set_id": 1 + }, + { + "name": "star-of-david-light", + "content": "", + "style": "outline", + "tags": "judaism,jewish,hexagram,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "steam-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,gaming,games", + "set_id": 1 + }, + { + "name": "steering-wheel-light", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobiles,driving", + "set_id": 1 + }, + { + "name": "steps-light", + "content": "", + "style": "outline", + "tags": "stairs,staircase,exit,signs", + "set_id": 1 + }, + { + "name": "stethoscope-light", + "content": "", + "style": "outline", + "tags": "hospital,medical,medicine,injury,safety,emergency,doctor,heart", + "set_id": 1 + }, + { + "name": "sticker-light", + "content": "", + "style": "outline", + "tags": "stickers,sticker pack,labels", + "set_id": 1 + }, + { + "name": "stool-light", + "content": "", + "style": "outline", + "tags": "chair,seat,furniture", + "set_id": 1 + }, + { + "name": "stop-light", + "content": "", + "style": "outline", + "tags": "music,audio", + "set_id": 1 + }, + { + "name": "stop-circle-light", + "content": "", + "style": "outline", + "tags": "music,audio,round", + "set_id": 1 + }, + { + "name": "storefront-light", + "content": "", + "style": "outline", + "tags": "shops,shopping,markets,stores,buildings,places,locations", + "set_id": 1 + }, + { + "name": "strategy-light", + "content": "", + "style": "outline", + "tags": "sports,strategem,plan,tic-tac-toe", + "set_id": 1 + }, + { + "name": "stripe-logo-light", + "content": "", + "style": "outline", + "tags": "payment", + "set_id": 1 + }, + { + "name": "student-light", + "content": "", + "style": "outline", + "tags": "pupil,graduate,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "subset-of-light", + "content": "", + "style": "outline", + "tags": "*new*,⊆,subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subset-proper-of-light", + "content": "", + "style": "outline", + "tags": "*new*,⊂,proper subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subtitles-light", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "subtitles-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,subtitles,television,tv,transcribed,transcription,accessibility,a11y,disabled", + "set_id": 1 + }, + { + "name": "subtract-light", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subtract-square-light", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subway-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,underground,train,tunnel,metro,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "suitcase-light", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "suitcase-rolling-light", + "content": "", + "style": "outline", + "tags": "suitcase,luggage,travel,transportation", + "set_id": 1 + }, + { + "name": "suitcase-simple-light", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "sun-light", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,lighten,brighten", + "set_id": 1 + }, + { + "name": "sun-dim-light", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,darken", + "set_id": 1 + }, + { + "name": "sun-horizon-light", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,sunrise,sunset", + "set_id": 1 + }, + { + "name": "sunglasses-light", + "content": "", + "style": "outline", + "tags": "vision,sun,spectacles", + "set_id": 1 + }, + { + "name": "superset-of-light", + "content": "", + "style": "outline", + "tags": "*new*,⊇,superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "superset-proper-of-light", + "content": "", + "style": "outline", + "tags": "*new*,⊃,proper superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "swap-light", + "content": "", + "style": "outline", + "tags": "layers,replace,exchange,reverse", + "set_id": 1 + }, + { + "name": "swatches-light", + "content": "", + "style": "outline", + "tags": "colors,color picker,samples,pantone", + "set_id": 1 + }, + { + "name": "swimming-pool-light", + "content": "", + "style": "outline", + "tags": "swim,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "sword-light", + "content": "", + "style": "outline", + "tags": "weapon,knife,dagger,gladius,video games,rpg,gaming,war", + "set_id": 1 + }, + { + "name": "synagogue-light", + "content": "", + "style": "outline", + "tags": "jewish,judaism,temple,religion,worship", + "set_id": 1 + }, + { + "name": "syringe-light", + "content": "", + "style": "outline", + "tags": "needle,hypodermic,vaccine,medicine,doctor,shot,hospital", + "set_id": 1 + }, + { + "name": "t-shirt-light", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "table-light", + "content": "", + "style": "outline", + "tags": "tables,tabular,speadsheets,excel,grid,form", + "set_id": 1 + }, + { + "name": "tabs-light", + "content": "", + "style": "outline", + "tags": "*updated*,browser,window,folders,files", + "set_id": 1 + }, + { + "name": "tag-light", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "tag-chevron-light", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale", + "set_id": 1 + }, + { + "name": "tag-simple-light", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "target-light", + "content": "", + "style": "outline", + "tags": "bullseye,radar,archery,accuracy,precision", + "set_id": 1 + }, + { + "name": "taxi-light", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,livery,limousine,uber", + "set_id": 1 + }, + { + "name": "tea-bag-light", + "content": "", + "style": "outline", + "tags": "*new*,drinks,beverages,sachet,caffeine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "telegram-logo-light", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "television-light", + "content": "", + "style": "outline", + "tags": "screen,tv,displays", + "set_id": 1 + }, + { + "name": "television-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,screen,tv,displays", + "set_id": 1 + }, + { + "name": "tennis-ball-light", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "tent-light", + "content": "", + "style": "outline", + "tags": "camping,outdoors,tarp", + "set_id": 1 + }, + { + "name": "terminal-light", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "terminal-window-light", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "test-tube-light", + "content": "", + "style": "outline", + "tags": "science,chemistry,experiment,vial", + "set_id": 1 + }, + { + "name": "text-a-underline-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "text-aa-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-align-center-light", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,centered", + "set_id": 1 + }, + { + "name": "text-align-justify-light", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,justified", + "set_id": 1 + }, + { + "name": "text-align-left-light", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush left", + "set_id": 1 + }, + { + "name": "text-align-right-light", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush right", + "set_id": 1 + }, + { + "name": "text-b-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,bold,boldface,emphasis", + "set_id": 1 + }, + { + "name": "text-columns-light", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,article", + "set_id": 1 + }, + { + "name": "text-h-light", + "content": "", + "style": "outline", + "tags": "heading,typography,print", + "set_id": 1 + }, + { + "name": "text-h-five-light", + "content": "", + "style": "outline", + "tags": "heading,h5,typography,print", + "set_id": 1 + }, + { + "name": "text-h-four-light", + "content": "", + "style": "outline", + "tags": "*updated*,heading,h4,typography,print", + "set_id": 1 + }, + { + "name": "text-h-one-light", + "content": "", + "style": "outline", + "tags": "heading,h1,typography,print", + "set_id": 1 + }, + { + "name": "text-h-six-light", + "content": "", + "style": "outline", + "tags": "heading,h6,typography,print", + "set_id": 1 + }, + { + "name": "text-h-three-light", + "content": "", + "style": "outline", + "tags": "heading,h3,typography,print", + "set_id": 1 + }, + { + "name": "text-h-two-light", + "content": "", + "style": "outline", + "tags": "heading,h2,typography,print", + "set_id": 1 + }, + { + "name": "text-indent-light", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,menu", + "set_id": 1 + }, + { + "name": "text-italic-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,slant,oblique,stress,emphasis,calligraphy", + "set_id": 1 + }, + { + "name": "text-outdent-light", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,unindent,dedent,menu", + "set_id": 1 + }, + { + "name": "text-strikethrough-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,struck,remove,delete,change", + "set_id": 1 + }, + { + "name": "text-subscript-light", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,power,exponent,calculator", + "set_id": 1 + }, + { + "name": "text-superscript-light", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,calculator", + "set_id": 1 + }, + { + "name": "text-t-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-t-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,typography,typeface,print,font,formatting,clear", + "set_id": 1 + }, + { + "name": "text-underline-light", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "textbox-light", + "content": "", + "style": "outline", + "tags": "input,cursor,field", + "set_id": 1 + }, + { + "name": "thermometer-light", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "thermometer-cold-light", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit", + "set_id": 1 + }, + { + "name": "thermometer-hot-light", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,warm", + "set_id": 1 + }, + { + "name": "thermometer-simple-light", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "threads-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,meta,instagram,social media", + "set_id": 1 + }, + { + "name": "three-d-light", + "content": "", + "style": "outline", + "tags": "*new*,3d,cad,model", + "set_id": 1 + }, + { + "name": "thumbs-down-light", + "content": "", + "style": "outline", + "tags": "dislike,hate,emoji,no", + "set_id": 1 + }, + { + "name": "thumbs-up-light", + "content": "", + "style": "outline", + "tags": "like,love,favorited,favorites,emoji,yes", + "set_id": 1 + }, + { + "name": "ticket-light", + "content": "", + "style": "outline", + "tags": "ticketstub,movie ticket,entry,admissions,events", + "set_id": 1 + }, + { + "name": "tidal-logo-light", + "content": "", + "style": "outline", + "tags": "music,logos", + "set_id": 1 + }, + { + "name": "tiktok-logo-light", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "tilde-light", + "content": "", + "style": "outline", + "tags": "*new*,~,∼,proportional,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "timer-light", + "content": "", + "style": "outline", + "tags": "clock,alarm,schedule,events,stopwatch,sports", + "set_id": 1 + }, + { + "name": "tip-jar-light", + "content": "", + "style": "outline", + "tags": "*new*,give,deposit,donation,savings,money", + "set_id": 1 + }, + { + "name": "tipi-light", + "content": "", + "style": "outline", + "tags": "teepee,lodge,tent,outdoors,camping,tarp", + "set_id": 1 + }, + { + "name": "tire-light", + "content": "", + "style": "outline", + "tags": "*new*,wheel,vehicles,transportation", + "set_id": 1 + }, + { + "name": "toggle-left-light", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toggle-right-light", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toilet-light", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toilet-paper-light", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toolbox-light", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "tooth-light", + "content": "", + "style": "outline", + "tags": "teeth,dentistry,medical,medicine,doctor,cavity", + "set_id": 1 + }, + { + "name": "tornado-light", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,twister,storm,wind,disaster", + "set_id": 1 + }, + { + "name": "tote-light", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "tote-simple-light", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "towel-light", + "content": "", + "style": "outline", + "tags": "*new*,clothing,linen,hotel,beach,pool,swimming,shower,bath", + "set_id": 1 + }, + { + "name": "tractor-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "trademark-light", + "content": "", + "style": "outline", + "tags": "tm,®,™,intellectual property", + "set_id": 1 + }, + { + "name": "trademark-registered-light", + "content": "", + "style": "outline", + "tags": "®,™,intellectual property", + "set_id": 1 + }, + { + "name": "traffic-cone-light", + "content": "", + "style": "outline", + "tags": "pylon,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-sign-light", + "content": "", + "style": "outline", + "tags": "road signs,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-signal-light", + "content": "", + "style": "outline", + "tags": "stop light,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "train-light", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-regional-light", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,freight,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-simple-light", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "tram-light", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,light rail,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "translate-light", + "content": "", + "style": "outline", + "tags": "translation,languages,internationalization,i18n,speech", + "set_id": 1 + }, + { + "name": "trash-light", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "trash-simple-light", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "tray-light", + "content": "", + "style": "outline", + "tags": "inbox,mailbox,bin", + "set_id": 1 + }, + { + "name": "tray-arrow-down-light", + "content": "", + "style": "outline", + "tags": "inbox,saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "tray-arrow-up-light", + "content": "", + "style": "outline", + "tags": "*new*,outbox,archival,unarchive,uploaded,uploading", + "set_id": 1 + }, + { + "name": "treasure-chest-light", + "content": "", + "style": "outline", + "tags": "*new*,loot,lootbox,inventory,rewards,gaming,pirate", + "set_id": 1 + }, + { + "name": "tree-light", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-evergreen-light", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,pine,conifer,green,environmental", + "set_id": 1 + }, + { + "name": "tree-palm-light", + "content": "", + "style": "outline", + "tags": "tropical,beach,plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-structure-light", + "content": "", + "style": "outline", + "tags": "data structures,family tree,genealogy,hierarchy,taxonomy,charts,flowchart", + "set_id": 1 + }, + { + "name": "tree-view-light", + "content": "", + "style": "outline", + "tags": "*new*,hierarchy", + "set_id": 1 + }, + { + "name": "trend-down-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,decrease,arrows", + "set_id": 1 + }, + { + "name": "trend-up-light", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,increase,arrows", + "set_id": 1 + }, + { + "name": "triangle-light", + "content": "", + "style": "outline", + "tags": "3,shapes,polygons", + "set_id": 1 + }, + { + "name": "triangle-dashed-light", + "content": "", + "style": "outline", + "tags": "*new*,3,shapes,polygons,missing", + "set_id": 1 + }, + { + "name": "trolley-light", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trolley-suitcase-light", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trophy-light", + "content": "", + "style": "outline", + "tags": "ribbons,medals,winning,victory,awards,prize", + "set_id": 1 + }, + { + "name": "truck-light", + "content": "", + "style": "outline", + "tags": "trucks,cars,vehicles,automobile,shipping,delivery", + "set_id": 1 + }, + { + "name": "truck-trailer-light", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,automobile,shipping,tractor,semi", + "set_id": 1 + }, + { + "name": "tumblr-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,social media,logos", + "set_id": 1 + }, + { + "name": "twitch-logo-light", + "content": "", + "style": "outline", + "tags": "logos,streaming,livestream,gaming,video games,social media", + "set_id": 1 + }, + { + "name": "twitter-logo-light", + "content": "", + "style": "outline", + "tags": "logos,social media,tweets,birds", + "set_id": 1 + }, + { + "name": "umbrella-light", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "umbrella-simple-light", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "union-light", + "content": "", + "style": "outline", + "tags": "*new*,∪,union,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "unite-light", + "content": "", + "style": "outline", + "tags": "*updated*,round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "unite-square-light", + "content": "", + "style": "outline", + "tags": "join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "upload-light", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "upload-simple-light", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "usb-light", + "content": "", + "style": "outline", + "tags": "serial,port,plug,peripheral,device", + "set_id": 1 + }, + { + "name": "user-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-check-light", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-circle-check-light", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-dashed-light", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,pending,missing,removed", + "set_id": 1 + }, + { + "name": "user-circle-gear-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-circle-minus-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-circle-plus-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-focus-light", + "content": "", + "style": "outline", + "tags": "identification,biometrics,facial recognition,profile,person,account,autofocus", + "set_id": 1 + }, + { + "name": "user-gear-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-list-light", + "content": "", + "style": "outline", + "tags": "person,users,profiles,accounts,members,address book", + "set_id": 1 + }, + { + "name": "user-minus-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-plus-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-rectangle-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-sound-light", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,speech,speaking,voice", + "set_id": 1 + }, + { + "name": "user-square-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-switch-light", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,login,logout,signin,signout,settings,preferences", + "set_id": 1 + }, + { + "name": "users-light", + "content": "", + "style": "outline", + "tags": "user,group,team,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-four-light", + "content": "", + "style": "outline", + "tags": "user,group,team,department,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-three-light", + "content": "", + "style": "outline", + "tags": "user,group,team,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "van-light", + "content": "", + "style": "outline", + "tags": "westfalia,microbus,vanagon,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "vault-light", + "content": "", + "style": "outline", + "tags": "safe,bank,security,secured,authentication,authenticated,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "vector-three-light", + "content": "", + "style": "outline", + "tags": "*new*,3d,xyz,cartesian,coordinates,plane,volume,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vector-two-light", + "content": "", + "style": "outline", + "tags": "*new*,2d,xy,cartesian,coordinates,plane,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vibrate-light", + "content": "", + "style": "outline", + "tags": "audio,volume,viration,ringer,calls,silent,silenced", + "set_id": 1 + }, + { + "name": "video-light", + "content": "", + "style": "outline", + "tags": "training,course,education,tutorial", + "set_id": 1 + }, + { + "name": "video-camera-light", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "video-camera-slash-light", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording,disabled", + "set_id": 1 + }, + { + "name": "video-conference-light", + "content": "", + "style": "outline", + "tags": "*new*,video call,zoom,skype,discord,facetime,meeting", + "set_id": 1 + }, + { + "name": "vignette-light", + "content": "", + "style": "outline", + "tags": "photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "vinyl-record-light", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music,ep,lp", + "set_id": 1 + }, + { + "name": "virtual-reality-light", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,headset,metaverse", + "set_id": 1 + }, + { + "name": "virus-light", + "content": "", + "style": "outline", + "tags": "germs,disease,illness", + "set_id": 1 + }, + { + "name": "visor-light", + "content": "", + "style": "outline", + "tags": "*new*,goggles,vision", + "set_id": 1 + }, + { + "name": "voicemail-light", + "content": "", + "style": "outline", + "tags": "phonecalls,missed,recording,telephone,landline", + "set_id": 1 + }, + { + "name": "volleyball-light", + "content": "", + "style": "outline", + "tags": "sports", + "set_id": 1 + }, + { + "name": "wall-light", + "content": "", + "style": "outline", + "tags": "firewall,security,secured,blocks,bricks", + "set_id": 1 + }, + { + "name": "wallet-light", + "content": "", + "style": "outline", + "tags": "money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "warehouse-light", + "content": "", + "style": "outline", + "tags": "storage,industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "warning-light", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-circle-light", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,round", + "set_id": 1 + }, + { + "name": "warning-diamond-light", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-octagon-light", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,8,eight", + "set_id": 1 + }, + { + "name": "washing-machine-light", + "content": "", + "style": "outline", + "tags": "*new*,clothing,laundry,cleaning", + "set_id": 1 + }, + { + "name": "watch-light", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,clock,wristwatch,wearable", + "set_id": 1 + }, + { + "name": "wave-sawtooth-light", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-sine-light", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-square-light", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-triangle-light", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "waveform-light", + "content": "", + "style": "outline", + "tags": "*updated*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waveform-slash-light", + "content": "", + "style": "outline", + "tags": "*new*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waves-light", + "content": "", + "style": "outline", + "tags": "ocean,tides,surf", + "set_id": 1 + }, + { + "name": "webcam-light", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webcam-slash-light", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webhooks-logo-light", + "content": "", + "style": "outline", + "tags": "api", + "set_id": 1 + }, + { + "name": "wechat-logo-light", + "content": "", + "style": "outline", + "tags": "weixin,logos", + "set_id": 1 + }, + { + "name": "whatsapp-logo-light", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "wheelchair-light", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wheelchair-motion-light", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wifi-high-light", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-low-light", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-medium-light", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-none-light", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-slash-light", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disabled,disconnected", + "set_id": 1 + }, + { + "name": "wifi-x-light", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "wind-light", + "content": "", + "style": "outline", + "tags": "meteorology,windy,stormy,blustery,gusty,air", + "set_id": 1 + }, + { + "name": "windmill-light", + "content": "", + "style": "outline", + "tags": "*new*,turbine,energy,renewable,sustainability,countryside,landscape,green,power,buildings", + "set_id": 1 + }, + { + "name": "windows-logo-light", + "content": "", + "style": "outline", + "tags": "microsoft,computers", + "set_id": 1 + }, + { + "name": "wine-light", + "content": "", + "style": "outline", + "tags": "drinks,beverages,vineyard,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "wrench-light", + "content": "", + "style": "outline", + "tags": "settings,setup,preferences,tools,machinery,mechanical,repairs", + "set_id": 1 + }, + { + "name": "x-light", + "content": "", + "style": "outline", + "tags": "×,closed,cancelled,dismissed,times,multiply,mulitplication,product,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "x-circle-light", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed,round", + "set_id": 1 + }, + { + "name": "x-logo-light", + "content": "", + "style": "outline", + "tags": "*new*,twitter,logos,social media,tweets", + "set_id": 1 + }, + { + "name": "x-square-light", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed", + "set_id": 1 + }, + { + "name": "yarn-light", + "content": "", + "style": "outline", + "tags": "*new*,knitting,sewing", + "set_id": 1 + }, + { + "name": "yin-yang-light", + "content": "", + "style": "outline", + "tags": "symbol,good,evil,black,white", + "set_id": 1 + }, + { + "name": "youtube-logo-light", + "content": "", + "style": "outline", + "tags": "logos,google,videos,movies,social media", + "set_id": 1 + }, + { + "name": "acorn-bold", + "content": "", + "style": "outline", + "tags": "*new*,savings,nut,vegetable,veggies,food,groceries,market", + "set_id": 1 + }, + { + "name": "address-book-bold", + "content": "", + "style": "outline", + "tags": "contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "address-book-tabs-bold", + "content": "", + "style": "outline", + "tags": "*new*,contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "air-traffic-control-bold", + "content": "", + "style": "outline", + "tags": "airport,travel,transportation,buildings", + "set_id": 1 + }, + { + "name": "airplane-bold", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "airplane-in-flight-bold", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-landing-bold", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-takeoff-bold", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplane-taxiing-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-tilt-bold", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplay-bold", + "content": "", + "style": "outline", + "tags": "apple,screencasting,television,tv", + "set_id": 1 + }, + { + "name": "alarm-bold", + "content": "", + "style": "outline", + "tags": "times,timer,clock,schedule,events,watch", + "set_id": 1 + }, + { + "name": "alien-bold", + "content": "", + "style": "outline", + "tags": "ufo,space,flying saucer,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "align-bottom-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-bottom-simple-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-center-horizontal-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-horizontal-simple-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-simple-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-left-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-left-simple-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-right-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-right-simple-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-top-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "align-top-simple-bold", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "amazon-logo-bold", + "content": "", + "style": "outline", + "tags": "ecommerce,shopping,logos", + "set_id": 1 + }, + { + "name": "ambulance-bold", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,doctor,vehicles", + "set_id": 1 + }, + { + "name": "anchor-bold", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "anchor-simple-bold", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "android-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,google,mobile,phone,cellular,cellphone", + "set_id": 1 + }, + { + "name": "angle-bold", + "content": "", + "style": "outline", + "tags": "*new*,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "angular-logo-bold", + "content": "", + "style": "outline", + "tags": "framework,javascript,google,web", + "set_id": 1 + }, + { + "name": "aperture-bold", + "content": "", + "style": "outline", + "tags": "photography,cameras,pictures,lens", + "set_id": 1 + }, + { + "name": "app-store-logo-bold", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "app-window-bold", + "content": "", + "style": "outline", + "tags": "windows,software,programs,applications", + "set_id": 1 + }, + { + "name": "apple-logo-bold", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "apple-podcasts-logo-bold", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "approximate-equals-bold", + "content": "", + "style": "outline", + "tags": "*new*,≈,is approximately equal to,congruent,equality,equivalent,equivalence,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "archive-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "armchair-bold", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "arrow-arc-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-arc-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply-all", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply,re", + "set_id": 1 + }, + { + "name": "arrow-bend-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,forward,fwd", + "set_id": 1 + }, + { + "name": "arrow-circle-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-clockwise-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-counter-clockwise-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-fat-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,caps lock,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,shift,outlined", + "set_id": 1 + }, + { + "name": "arrow-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,bottom", + "set_id": 1 + }, + { + "name": "arrow-line-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,top", + "set_id": 1 + }, + { + "name": "arrow-line-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-in-bold", + "content": "", + "style": "outline", + "tags": "import,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-out-bold", + "content": "", + "style": "outline", + "tags": "export,external,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-u-down-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-down-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-down-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-up-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-left-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-right-bold", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-clockwise-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,sync,synchronize,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-counter-clockwise-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-down-up-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-horizontal-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,left,right", + "set_id": 1 + }, + { + "name": "arrows-in-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-cardinal-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-line-horizontal-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-line-vertical-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize", + "set_id": 1 + }, + { + "name": "arrows-left-right-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-merge-bold", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,join,combine", + "set_id": 1 + }, + { + "name": "arrows-out-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,grow", + "set_id": 1 + }, + { + "name": "arrows-out-cardinal-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,pan,move,grow", + "set_id": 1 + }, + { + "name": "arrows-out-line-horizontal-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-line-vertical-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize", + "set_id": 1 + }, + { + "name": "arrows-split-bold", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,fork", + "set_id": 1 + }, + { + "name": "arrows-vertical-bold", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,up,down", + "set_id": 1 + }, + { + "name": "article-bold", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-medium-bold", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-ny-times-bold", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,news,newspaper,nyt,new york times", + "set_id": 1 + }, + { + "name": "asclepius-bold", + "content": "", + "style": "outline", + "tags": "*new*,caduceus,staff,mythology,rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor,hospital,snake,mercury,hermes", + "set_id": 1 + }, + { + "name": "asterisk-bold", + "content": "", + "style": "outline", + "tags": "star,wildcard,bullet point,6,emergency", + "set_id": 1 + }, + { + "name": "asterisk-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,star,wildcard,bullet point,5,emergency", + "set_id": 1 + }, + { + "name": "at-bold", + "content": "", + "style": "outline", + "tags": "@,address,email,at symbol,commercial at,arobase", + "set_id": 1 + }, + { + "name": "atom-bold", + "content": "", + "style": "outline", + "tags": "atomic,nucleus,nuclear,reactor,science,physics,electron,automation,react", + "set_id": 1 + }, + { + "name": "avocado-bold", + "content": "", + "style": "outline", + "tags": "*new*,food,vegetable,veggie,fruit,groceries,market", + "set_id": 1 + }, + { + "name": "axe-bold", + "content": "", + "style": "outline", + "tags": "*new*,tools,carpentry,forestry,construction", + "set_id": 1 + }, + { + "name": "baby-bold", + "content": "", + "style": "outline", + "tags": "infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "baby-carriage-bold", + "content": "", + "style": "outline", + "tags": "*new*,pram,stroller,infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "backpack-bold", + "content": "", + "style": "outline", + "tags": "knapsack,camping,school,bag", + "set_id": 1 + }, + { + "name": "backspace-bold", + "content": "", + "style": "outline", + "tags": "keyboard,remove,delete", + "set_id": 1 + }, + { + "name": "bag-bold", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "bag-simple-bold", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "balloon-bold", + "content": "", + "style": "outline", + "tags": "helium,birthday,party", + "set_id": 1 + }, + { + "name": "bandaids-bold", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,first aid,injury", + "set_id": 1 + }, + { + "name": "bank-bold", + "content": "", + "style": "outline", + "tags": "banking,checking,money,savings,deposit,withdraw,places,locations", + "set_id": 1 + }, + { + "name": "barbell-bold", + "content": "", + "style": "outline", + "tags": "gym,weights,dumbbells,strength training,workout,exercises,fitness", + "set_id": 1 + }, + { + "name": "barcode-bold", + "content": "", + "style": "outline", + "tags": "upc,qr,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "barn-bold", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,buildings,farming,agriculture", + "set_id": 1 + }, + { + "name": "barricade-bold", + "content": "", + "style": "outline", + "tags": "construction,safety,gate", + "set_id": 1 + }, + { + "name": "baseball-bold", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "baseball-cap-bold", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sports,hat", + "set_id": 1 + }, + { + "name": "baseball-helmet-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,mlb", + "set_id": 1 + }, + { + "name": "basket-bold", + "content": "", + "style": "outline", + "tags": "ecommerce,market,cart,buying,shopping,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "basketball-bold", + "content": "", + "style": "outline", + "tags": "sports,nba", + "set_id": 1 + }, + { + "name": "bathtub-bold", + "content": "", + "style": "outline", + "tags": "bath,shower,bathroom,faucet", + "set_id": 1 + }, + { + "name": "battery-charging-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-charging-vertical-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-empty-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-full-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,filled", + "set_id": 1 + }, + { + "name": "battery-high-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-low-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-medium-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-vertical-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-empty-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-vertical-full-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-high-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-low-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-medium-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-warning-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "battery-warning-vertical-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "beach-ball-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,ocean,party", + "set_id": 1 + }, + { + "name": "beanie-bold", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,sports,hat,winter", + "set_id": 1 + }, + { + "name": "bed-bold", + "content": "", + "style": "outline", + "tags": "hotels,accommodations,sleeping,places,locations,medical,hospital", + "set_id": 1 + }, + { + "name": "beer-bottle-bold", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "beer-stein-bold", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "behance-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,illustration,ui,interface", + "set_id": 1 + }, + { + "name": "bell-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-ringing-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-ringing-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-slash-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,silent,silenced,disabled", + "set_id": 1 + }, + { + "name": "bell-simple-z-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "bell-slash-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,silent,silenced,ringer,calls,disabled", + "set_id": 1 + }, + { + "name": "bell-z-bold", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "belt-bold", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "bezier-curve-bold", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "bicycle-bold", + "content": "", + "style": "outline", + "tags": "bikers,bicycling,cyclists,transit,transportation,commuter,exercises,fitness", + "set_id": 1 + }, + { + "name": "binary-bold", + "content": "", + "style": "outline", + "tags": "*new*,digital,0,1,programming,coding,executable", + "set_id": 1 + }, + { + "name": "binoculars-bold", + "content": "", + "style": "outline", + "tags": "telescope,glasses,search,find,explore", + "set_id": 1 + }, + { + "name": "biohazard-bold", + "content": "", + "style": "outline", + "tags": "*new*,contamination,quarantine,toxic,poison,danger,caution", + "set_id": 1 + }, + { + "name": "bird-bold", + "content": "", + "style": "outline", + "tags": "*updated*,animals,pets", + "set_id": 1 + }, + { + "name": "blueprint-bold", + "content": "", + "style": "outline", + "tags": "*new*,architecture,layout,floorplan,building,construction", + "set_id": 1 + }, + { + "name": "bluetooth-bold", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-connected-bold", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-slash-bold", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,disabled", + "set_id": 1 + }, + { + "name": "bluetooth-x-bold", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "boat-bold", + "content": "", + "style": "outline", + "tags": "ferry,ship,cruise,vehicles,public transit,transportation,commuter,traveling,sailing,places,locations", + "set_id": 1 + }, + { + "name": "bomb-bold", + "content": "", + "style": "outline", + "tags": "*new*,gaming,grenade,explosive,war,weapon,fuse", + "set_id": 1 + }, + { + "name": "bone-bold", + "content": "", + "style": "outline", + "tags": "dogbone", + "set_id": 1 + }, + { + "name": "book-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-bookmark-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library,favorites,favorited", + "set_id": 1 + }, + { + "name": "book-open-bold", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-text-bold", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-user-bold", + "content": "", + "style": "outline", + "tags": "*new*,reading,reader,easy read,library,places,locations", + "set_id": 1 + }, + { + "name": "bookmark-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmark-simple-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-simple-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "books-bold", + "content": "", + "style": "outline", + "tags": "reading,reader,bookshelf,library,places,locations", + "set_id": 1 + }, + { + "name": "boot-bold", + "content": "", + "style": "outline", + "tags": "hiking,shoes,sports,exercise", + "set_id": 1 + }, + { + "name": "boules-bold", + "content": "", + "style": "outline", + "tags": "*new*,balls,sports,pétanque,raffa,bocce,boule lyonnaise,lawn bowls", + "set_id": 1 + }, + { + "name": "bounding-box-bold", + "content": "", + "style": "outline", + "tags": "polygon,shapes,outline,corners,rectangle", + "set_id": 1 + }, + { + "name": "bowl-food-bold", + "content": "", + "style": "outline", + "tags": "ramen,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowl-steam-bold", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowling-ball-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,alley", + "set_id": 1 + }, + { + "name": "box-arrow-down-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "box-arrow-up-bold", + "content": "", + "style": "outline", + "tags": "*new*,unarchive,archival,upload", + "set_id": 1 + }, + { + "name": "boxing-glove-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,combat,martial arts,fight,gym", + "set_id": 1 + }, + { + "name": "brackets-angle-bold", + "content": "", + "style": "outline", + "tags": "code,angle brackets,angle braces", + "set_id": 1 + }, + { + "name": "brackets-curly-bold", + "content": "", + "style": "outline", + "tags": "code,curly brackets,curly braces", + "set_id": 1 + }, + { + "name": "brackets-round-bold", + "content": "", + "style": "outline", + "tags": "code,parentheses,round brackets,round braces", + "set_id": 1 + }, + { + "name": "brackets-square-bold", + "content": "", + "style": "outline", + "tags": "code,square brackets,square braces,array", + "set_id": 1 + }, + { + "name": "brain-bold", + "content": "", + "style": "outline", + "tags": "mind,mental", + "set_id": 1 + }, + { + "name": "brandy-bold", + "content": "", + "style": "outline", + "tags": "drinks,beverages,whiskey,cocktail,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "bread-bold", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,bakery,sandwich,gluten,loaf,toast,slice", + "set_id": 1 + }, + { + "name": "bridge-bold", + "content": "", + "style": "outline", + "tags": "travel,transportation,infrastucture", + "set_id": 1 + }, + { + "name": "briefcase-bold", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "briefcase-metal-bold", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "broadcast-bold", + "content": "", + "style": "outline", + "tags": "radio,hotspot,wifi,emit", + "set_id": 1 + }, + { + "name": "broom-bold", + "content": "", + "style": "outline", + "tags": "sweeping,cleaning", + "set_id": 1 + }, + { + "name": "browser-bold", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "browsers-bold", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "bug-bold", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-beetle-bold", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-droid-bold", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,android,google", + "set_id": 1 + }, + { + "name": "building-bold", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "building-apartment-bold", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,buildings", + "set_id": 1 + }, + { + "name": "building-office-bold", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "buildings-bold", + "content": "", + "style": "outline", + "tags": "places,locations,company,business", + "set_id": 1 + }, + { + "name": "bulldozer-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,construction,earth mover,dig,digger", + "set_id": 1 + }, + { + "name": "bus-bold", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "butterfly-bold", + "content": "", + "style": "outline", + "tags": "animals,insects,moth", + "set_id": 1 + }, + { + "name": "cable-car-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,gondola,skiing,mountains,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "cactus-bold", + "content": "", + "style": "outline", + "tags": "*updated*,plants,cacti,desert,western", + "set_id": 1 + }, + { + "name": "cake-bold", + "content": "", + "style": "outline", + "tags": "dessert,birthday,celebration,event", + "set_id": 1 + }, + { + "name": "calculator-bold", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "calendar-bold", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,12", + "set_id": 1 + }, + { + "name": "calendar-blank-bold", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,none", + "set_id": 1 + }, + { + "name": "calendar-check-bold", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,todo,checklist", + "set_id": 1 + }, + { + "name": "calendar-dot-bold", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,today", + "set_id": 1 + }, + { + "name": "calendar-dots-bold", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule", + "set_id": 1 + }, + { + "name": "calendar-heart-bold", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-minus-bold", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete", + "set_id": 1 + }, + { + "name": "calendar-plus-bold", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,add", + "set_id": 1 + }, + { + "name": "calendar-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete,cancel. unavailable", + "set_id": 1 + }, + { + "name": "calendar-star-bold", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-x-bold", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,closed,cancelled", + "set_id": 1 + }, + { + "name": "call-bell-bold", + "content": "", + "style": "outline", + "tags": "service bell,reception,attendant,concierge bell", + "set_id": 1 + }, + { + "name": "camera-bold", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens", + "set_id": 1 + }, + { + "name": "camera-plus-bold", + "content": "", + "style": "outline", + "tags": "photography,pictures,album,add", + "set_id": 1 + }, + { + "name": "camera-rotate-bold", + "content": "", + "style": "outline", + "tags": "photography,pictures,orientation,portrait,landscape,selfie,flip", + "set_id": 1 + }, + { + "name": "camera-slash-bold", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens,disabled", + "set_id": 1 + }, + { + "name": "campfire-bold", + "content": "", + "style": "outline", + "tags": "camping,flame,bonfire,outdoors", + "set_id": 1 + }, + { + "name": "car-bold", + "content": "", + "style": "outline", + "tags": "*updated*,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-battery-bold", + "content": "", + "style": "outline", + "tags": "*new*,charged,charger,charging,power,voltage,electricity", + "set_id": 1 + }, + { + "name": "car-profile-bold", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-simple-bold", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "cardholder-bold", + "content": "", + "style": "outline", + "tags": "wallet,money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cards-bold", + "content": "", + "style": "outline", + "tags": "card,slides,slideshow,windows,website,webpage,layers", + "set_id": 1 + }, + { + "name": "cards-three-bold", + "content": "", + "style": "outline", + "tags": "*new*,card,slides,slideshow,windows,website,webpage,layers,stack", + "set_id": 1 + }, + { + "name": "caret-circle-double-down-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-left-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-right-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-up-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-down-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-left-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-right-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-down-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-down-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-left-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-right-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-up-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-down-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-left-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-down-bold", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-left-bold", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-right-bold", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-up-bold", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-right-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-down-bold", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "carrot-bold", + "content": "", + "style": "outline", + "tags": "food,vegetable,veggie,groceries,market", + "set_id": 1 + }, + { + "name": "cash-register-bold", + "content": "", + "style": "outline", + "tags": "*new*,retail,point-of-sale,pos,transaction,sales,till", + "set_id": 1 + }, + { + "name": "cassette-tape-bold", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music", + "set_id": 1 + }, + { + "name": "castle-turret-bold", + "content": "", + "style": "outline", + "tags": "*updated*,chess,rook", + "set_id": 1 + }, + { + "name": "cat-bold", + "content": "", + "style": "outline", + "tags": "pets,animals,kitty,kitten", + "set_id": 1 + }, + { + "name": "cell-signal-full-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-high-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-low-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-medium-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-none-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-slash-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,disconnected,disabled,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-x-bold", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,disconnected,errors,service", + "set_id": 1 + }, + { + "name": "cell-tower-bold", + "content": "", + "style": "outline", + "tags": "*new*,wireless,cellular,broadcast,phone,mobile,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "certificate-bold", + "content": "", + "style": "outline", + "tags": "*updated*,awards,certification,degree,diploma", + "set_id": 1 + }, + { + "name": "chair-bold", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "chalkboard-bold", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-teacher-bold", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,education,school,college,university", + "set_id": 1 + }, + { + "name": "champagne-bold", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,wine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "charging-station-bold", + "content": "", + "style": "outline", + "tags": "ev,charge,fuel,pump", + "set_id": 1 + }, + { + "name": "chart-bar-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-bar-horizontal-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-donut-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-line-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-down-bold", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-up-bold", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-pie-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-pie-slice-bold", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-polar-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-scatter-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "chat-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-dots-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-text-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-dots-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-text-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-dots-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-dots-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-text-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-text-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-circle-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chats-teardrop-bold", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "check-bold", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-circle-bold", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,round,ok,done", + "set_id": 1 + }, + { + "name": "check-fat-bold", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-square-bold", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "check-square-offset-bold", + "content": "", + "style": "outline", + "tags": "*updated*,todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "checkerboard-bold", + "content": "", + "style": "outline", + "tags": "*new*,crossword", + "set_id": 1 + }, + { + "name": "checks-bold", + "content": "", + "style": "outline", + "tags": "*updated*,todo,task,to-do,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "cheers-bold", + "content": "", + "style": "outline", + "tags": "*new*,glass,drinks,beverages,champagne,toast,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "cheese-bold", + "content": "", + "style": "outline", + "tags": "*new*,dairy,wedge,food,dining", + "set_id": 1 + }, + { + "name": "chef-hat-bold", + "content": "", + "style": "outline", + "tags": "*new*,cooking,cuisine,kitchen,clothes,clothing", + "set_id": 1 + }, + { + "name": "cherries-bold", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,cherry,groceries,market", + "set_id": 1 + }, + { + "name": "church-bold", + "content": "", + "style": "outline", + "tags": "christ,christianity,cathedral,religion,worship", + "set_id": 1 + }, + { + "name": "cigarette-bold", + "content": "", + "style": "outline", + "tags": "*new*,smoking,tobacco", + "set_id": 1 + }, + { + "name": "cigarette-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,non-smoking,tobacco", + "set_id": 1 + }, + { + "name": "circle-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-dashed-bold", + "content": "", + "style": "outline", + "tags": "missing,round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-half-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-half-tilt-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-notch-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,loading,loader,spinner,waiting,progress", + "set_id": 1 + }, + { + "name": "circles-four-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,4", + "set_id": 1 + }, + { + "name": "circles-three-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,asana", + "set_id": 1 + }, + { + "name": "circles-three-plus-bold", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,+", + "set_id": 1 + }, + { + "name": "circuitry-bold", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit,electronics,motherboard", + "set_id": 1 + }, + { + "name": "city-bold", + "content": "", + "style": "outline", + "tags": "*new*,skyline,skyscrapers,places,locations,buildings", + "set_id": 1 + }, + { + "name": "clipboard-bold", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clipboard-text-bold", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clock-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-afternoon-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-clockwise-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,restore,fast forward,update", + "set_id": 1 + }, + { + "name": "clock-countdown-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-counter-clockwise-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,backup,rewind,history", + "set_id": 1 + }, + { + "name": "clock-user-bold", + "content": "", + "style": "outline", + "tags": "*new*,times,timer,shift,schedule,events,watch", + "set_id": 1 + }, + { + "name": "closed-captioning-bold", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "cloud-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,meteorology,cloudy,overcast", + "set_id": 1 + }, + { + "name": "cloud-arrow-down-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,download", + "set_id": 1 + }, + { + "name": "cloud-arrow-up-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,upload", + "set_id": 1 + }, + { + "name": "cloud-check-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,synchronized", + "set_id": 1 + }, + { + "name": "cloud-fog-bold", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,foggy,mist,haze", + "set_id": 1 + }, + { + "name": "cloud-lightning-bold", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,stormy,thunderstorm", + "set_id": 1 + }, + { + "name": "cloud-moon-bold", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,night,evening", + "set_id": 1 + }, + { + "name": "cloud-rain-bold", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,rainy,raining,stormy,rainstorm", + "set_id": 1 + }, + { + "name": "cloud-slash-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,disabled", + "set_id": 1 + }, + { + "name": "cloud-snow-bold", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,snowy,snowing,stormy,snowstorm", + "set_id": 1 + }, + { + "name": "cloud-sun-bold", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,partly sunny", + "set_id": 1 + }, + { + "name": "cloud-warning-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "cloud-x-bold", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "clover-bold", + "content": "", + "style": "outline", + "tags": "*new*,four leaf clover,plants,luck,lucky,irish", + "set_id": 1 + }, + { + "name": "club-bold", + "content": "", + "style": "outline", + "tags": "clubs,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "coat-hanger-bold", + "content": "", + "style": "outline", + "tags": "clothing,clothes,closet", + "set_id": 1 + }, + { + "name": "coda-logo-bold", + "content": "", + "style": "outline", + "tags": "project management,productivity,documentation,wiki,logos", + "set_id": 1 + }, + { + "name": "code-bold", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-block-bold", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-simple-bold", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "codepen-logo-bold", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "codesandbox-logo-bold", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "coffee-bold", + "content": "", + "style": "outline", + "tags": "tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coffee-bean-bold", + "content": "", + "style": "outline", + "tags": "*new*,tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coin-bold", + "content": "", + "style": "outline", + "tags": "coins,cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coin-vertical-bold", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coins-bold", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "columns-bold", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "columns-plus-left-bold", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "columns-plus-right-bold", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,append,insert", + "set_id": 1 + }, + { + "name": "command-bold", + "content": "", + "style": "outline", + "tags": "apple,keyboard,shortcut,modifier,looped square,bowen knot,saint john's arms", + "set_id": 1 + }, + { + "name": "compass-bold", + "content": "", + "style": "outline", + "tags": "navigation,directions,maps,safari,apple", + "set_id": 1 + }, + { + "name": "compass-rose-bold", + "content": "", + "style": "outline", + "tags": "*new*,navigation,directions,maps,cardinal,cartography", + "set_id": 1 + }, + { + "name": "compass-tool-bold", + "content": "", + "style": "outline", + "tags": "drawing,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "computer-tower-bold", + "content": "", + "style": "outline", + "tags": "desktop,pc,imac", + "set_id": 1 + }, + { + "name": "confetti-bold", + "content": "", + "style": "outline", + "tags": "tada,party,emoji", + "set_id": 1 + }, + { + "name": "contactless-payment-bold", + "content": "", + "style": "outline", + "tags": "purchase,credit card,nfc", + "set_id": 1 + }, + { + "name": "control-bold", + "content": "", + "style": "outline", + "tags": "ctrl,key,keyboard,shortcut,caret", + "set_id": 1 + }, + { + "name": "cookie-bold", + "content": "", + "style": "outline", + "tags": "privacy,dessert,food,dining", + "set_id": 1 + }, + { + "name": "cooking-pot-bold", + "content": "", + "style": "outline", + "tags": "stew,kitchen,steaming,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "copy-bold", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copy-simple-bold", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copyleft-bold", + "content": "", + "style": "outline", + "tags": "🄯,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "copyright-bold", + "content": "", + "style": "outline", + "tags": "©,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "corners-in-bold", + "content": "", + "style": "outline", + "tags": "*updated*,collapse,windowed,minimized", + "set_id": 1 + }, + { + "name": "corners-out-bold", + "content": "", + "style": "outline", + "tags": "*updated*,expand,fullscreen,maximized", + "set_id": 1 + }, + { + "name": "couch-bold", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "court-basketball-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,nba", + "set_id": 1 + }, + { + "name": "cow-bold", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,beef,bull,milk,dairy", + "set_id": 1 + }, + { + "name": "cowboy-hat-bold", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,stetson", + "set_id": 1 + }, + { + "name": "cpu-bold", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "crane-bold", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "crane-tower-bold", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "credit-card-bold", + "content": "", + "style": "outline", + "tags": "debit,visa,mastercard,money,payment,paying,purchase,swipe", + "set_id": 1 + }, + { + "name": "cricket-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,ball,bat", + "set_id": 1 + }, + { + "name": "crop-bold", + "content": "", + "style": "outline", + "tags": "photography,clip,screenshots", + "set_id": 1 + }, + { + "name": "cross-bold", + "content": "", + "style": "outline", + "tags": "dagger,crucifix,christ,christianity,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "crosshair-bold", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crosshair-simple-bold", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crown-bold", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-cross-bold", + "content": "", + "style": "outline", + "tags": "*new*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "cube-bold", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks", + "set_id": 1 + }, + { + "name": "cube-focus-bold", + "content": "", + "style": "outline", + "tags": "augmented reality,ar,virual reality,vr,3d,scan", + "set_id": 1 + }, + { + "name": "cube-transparent-bold", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks,necker", + "set_id": 1 + }, + { + "name": "currency-btc-bold", + "content": "", + "style": "outline", + "tags": "money,btc,bitcoin,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-circle-dollar-bold", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-cny-bold", + "content": "", + "style": "outline", + "tags": "money,yuan,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-bold", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-simple-bold", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eth-bold", + "content": "", + "style": "outline", + "tags": "money,ethereum,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eur-bold", + "content": "", + "style": "outline", + "tags": "money,euros,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-gbp-bold", + "content": "", + "style": "outline", + "tags": "money,pounds sterling,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-inr-bold", + "content": "", + "style": "outline", + "tags": "money,rupees,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-jpy-bold", + "content": "", + "style": "outline", + "tags": "money,yen,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-krw-bold", + "content": "", + "style": "outline", + "tags": "money,won,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-kzt-bold", + "content": "", + "style": "outline", + "tags": "money,kazakhstan,tenge,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-ngn-bold", + "content": "", + "style": "outline", + "tags": "money,nigeria,naira,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-rub-bold", + "content": "", + "style": "outline", + "tags": "money,rubles,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cursor-bold", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse,click", + "set_id": 1 + }, + { + "name": "cursor-click-bold", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse", + "set_id": 1 + }, + { + "name": "cursor-text-bold", + "content": "", + "style": "outline", + "tags": "i-beam,input,select", + "set_id": 1 + }, + { + "name": "cylinder-bold", + "content": "", + "style": "outline", + "tags": "shapes,tube", + "set_id": 1 + }, + { + "name": "database-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "desk-bold", + "content": "", + "style": "outline", + "tags": "*new*,furniture,workspace,table", + "set_id": 1 + }, + { + "name": "desktop-bold", + "content": "", + "style": "outline", + "tags": "computer,pc,imac,tower", + "set_id": 1 + }, + { + "name": "desktop-tower-bold", + "content": "", + "style": "outline", + "tags": "*updated*,computer,pc,imac", + "set_id": 1 + }, + { + "name": "detective-bold", + "content": "", + "style": "outline", + "tags": "incognito,police,law enforcement,spy,secret", + "set_id": 1 + }, + { + "name": "dev-to-logo-bold", + "content": "", + "style": "outline", + "tags": "reading,writing,social media,logos", + "set_id": 1 + }, + { + "name": "device-mobile-bold", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-camera-bold", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-speaker-bold", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-rotate-bold", + "content": "", + "style": "outline", + "tags": "*new*,orientation,landscape,portrait,spin,flip", + "set_id": 1 + }, + { + "name": "device-tablet-bold", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-camera-bold", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-speaker-bold", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "devices-bold", + "content": "", + "style": "outline", + "tags": "responsive,cellphone,cellular,tablet,destop", + "set_id": 1 + }, + { + "name": "diamond-bold", + "content": "", + "style": "outline", + "tags": "rectangle,shapes,polygons,diamonds,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "diamonds-four-bold", + "content": "", + "style": "outline", + "tags": "shapes,grid,component", + "set_id": 1 + }, + { + "name": "dice-five-bold", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,5", + "set_id": 1 + }, + { + "name": "dice-four-bold", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,4", + "set_id": 1 + }, + { + "name": "dice-one-bold", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,1", + "set_id": 1 + }, + { + "name": "dice-six-bold", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,6", + "set_id": 1 + }, + { + "name": "dice-three-bold", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,3", + "set_id": 1 + }, + { + "name": "dice-two-bold", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,2", + "set_id": 1 + }, + { + "name": "disc-bold", + "content": "", + "style": "outline", + "tags": "cd-rom,compact disk,album,record", + "set_id": 1 + }, + { + "name": "disco-ball-bold", + "content": "", + "style": "outline", + "tags": "*new*,danging,club,70s", + "set_id": 1 + }, + { + "name": "discord-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging,chat", + "set_id": 1 + }, + { + "name": "divide-bold", + "content": "", + "style": "outline", + "tags": "division,divisor,dividend,quotient,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "dna-bold", + "content": "", + "style": "outline", + "tags": "double helix,gene,genetics", + "set_id": 1 + }, + { + "name": "dog-bold", + "content": "", + "style": "outline", + "tags": "pets,animals,puppy", + "set_id": 1 + }, + { + "name": "door-bold", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "door-open-bold", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "dot-bold", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dot-outline-bold", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dots-nine-bold", + "content": "", + "style": "outline", + "tags": "grid,circles,shapes,polygons,9", + "set_id": 1 + }, + { + "name": "dots-six-bold", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-six-vertical-bold", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-three-bold", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-bold", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-vertical-bold", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-bold", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-vertical-bold", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-vertical-bold", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "download-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk", + "set_id": 1 + }, + { + "name": "download-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk,import", + "set_id": 1 + }, + { + "name": "dress-bold", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "dresser-bold", + "content": "", + "style": "outline", + "tags": "*new*,furniture,bedroom,storage,drawers,wardrobe", + "set_id": 1 + }, + { + "name": "dribbble-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,round,basketball,sports,design", + "set_id": 1 + }, + { + "name": "drone-bold", + "content": "", + "style": "outline", + "tags": "*new*,aerial,uav,photography,remote", + "set_id": 1 + }, + { + "name": "drop-bold", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,raining,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-half-bold", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-half-bottom-bold", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-simple-bold", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur,disabled", + "set_id": 1 + }, + { + "name": "dropbox-logo-bold", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "ear-bold", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound", + "set_id": 1 + }, + { + "name": "ear-slash-bold", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound,mute,accessible", + "set_id": 1 + }, + { + "name": "egg-bold", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch", + "set_id": 1 + }, + { + "name": "egg-crack-bold", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch,break", + "set_id": 1 + }, + { + "name": "eject-bold", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "eject-simple-bold", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "elevator-bold", + "content": "", + "style": "outline", + "tags": "lift", + "set_id": 1 + }, + { + "name": "empty-bold", + "content": "", + "style": "outline", + "tags": "*new*,∅,empty set,member,mathematics,arithmetic,calculator,null", + "set_id": 1 + }, + { + "name": "engine-bold", + "content": "", + "style": "outline", + "tags": "*updated*,motor,repair,vehicles,automobile", + "set_id": 1 + }, + { + "name": "envelope-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-open-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-open-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "equalizer-bold", + "content": "", + "style": "outline", + "tags": "music,audio,meter,volume,spectrum,eq,deezer", + "set_id": 1 + }, + { + "name": "equals-bold", + "content": "", + "style": "outline", + "tags": "=,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "eraser-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,undo,deleted", + "set_id": 1 + }, + { + "name": "escalator-down-bold", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "escalator-up-bold", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "exam-bold", + "content": "", + "style": "outline", + "tags": "text,examination,paper,school,grade", + "set_id": 1 + }, + { + "name": "exclamation-mark-bold", + "content": "", + "style": "outline", + "tags": "*new*,!,alert,warning,caution,interjection,punctuation,symbol", + "set_id": 1 + }, + { + "name": "exclude-bold", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "exclude-square-bold", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "export-bold", + "content": "", + "style": "outline", + "tags": "share,send to,arrows", + "set_id": 1 + }, + { + "name": "eye-bold", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view", + "set_id": 1 + }, + { + "name": "eye-closed-bold", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,private", + "set_id": 1 + }, + { + "name": "eye-slash-bold", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,eyelashes,disabled,private", + "set_id": 1 + }, + { + "name": "eyedropper-bold", + "content": "", + "style": "outline", + "tags": "colors,color picker,sample,arts", + "set_id": 1 + }, + { + "name": "eyedropper-sample-bold", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "eyeglasses-bold", + "content": "", + "style": "outline", + "tags": "vision,spectacles", + "set_id": 1 + }, + { + "name": "eyes-bold", + "content": "", + "style": "outline", + "tags": "*new*,look,glance", + "set_id": 1 + }, + { + "name": "face-mask-bold", + "content": "", + "style": "outline", + "tags": "ppe,facemask,covid-19,coronavirus,flu,cold", + "set_id": 1 + }, + { + "name": "facebook-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "factory-bold", + "content": "", + "style": "outline", + "tags": "industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "faders-bold", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "faders-horizontal-bold", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "fallout-shelter-bold", + "content": "", + "style": "outline", + "tags": "*new*,radiation,radioactive,nuclear,bunker,contamination,quarantine,toxic,danger,caution", + "set_id": 1 + }, + { + "name": "fan-bold", + "content": "", + "style": "outline", + "tags": "desk fan,air conditioning", + "set_id": 1 + }, + { + "name": "farm-bold", + "content": "", + "style": "outline", + "tags": "*new*,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "fast-forward-bold", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "fast-forward-circle-bold", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "feather-bold", + "content": "", + "style": "outline", + "tags": "bird", + "set_id": 1 + }, + { + "name": "fediverse-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,social media,decentralized", + "set_id": 1 + }, + { + "name": "figma-logo-bold", + "content": "", + "style": "outline", + "tags": "*updated*,logos,drawing,art,illustration,ui,interface,prototype,prototyping", + "set_id": 1 + }, + { + "name": "file-bold", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,page", + "set_id": 1 + }, + { + "name": "file-archive-bold", + "content": "", + "style": "outline", + "tags": "documents,zip,compression", + "set_id": 1 + }, + { + "name": "file-arrow-down-bold", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,download,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-arrow-up-bold", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,upload,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-audio-bold", + "content": "", + "style": "outline", + "tags": "documents,music,sound", + "set_id": 1 + }, + { + "name": "file-c-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents,code", + "set_id": 1 + }, + { + "name": "file-c-sharp-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c#", + "set_id": 1 + }, + { + "name": "file-cloud-bold", + "content": "", + "style": "outline", + "tags": "documents,sync", + "set_id": 1 + }, + { + "name": "file-code-bold", + "content": "", + "style": "outline", + "tags": "documents", + "set_id": 1 + }, + { + "name": "file-cpp-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c++", + "set_id": 1 + }, + { + "name": "file-css-bold", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-csv-bold", + "content": "", + "style": "outline", + "tags": "documents,data", + "set_id": 1 + }, + { + "name": "file-dashed-bold", + "content": "", + "style": "outline", + "tags": "documents,files,browse,draft,open,dotted", + "set_id": 1 + }, + { + "name": "file-doc-bold", + "content": "", + "style": "outline", + "tags": "documents,word,microsoft", + "set_id": 1 + }, + { + "name": "file-html-bold", + "content": "", + "style": "outline", + "tags": "*updated*,documents,code", + "set_id": 1 + }, + { + "name": "file-image-bold", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ini-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-jpg-bold", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph,jpeg", + "set_id": 1 + }, + { + "name": "file-js-bold", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-jsx-bold", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-lock-bold", + "content": "", + "style": "outline", + "tags": "documents,secure,locked,private", + "set_id": 1 + }, + { + "name": "file-magnifying-glass-bold", + "content": "", + "style": "outline", + "tags": "documents,files,search,find,locate,browse,missing", + "set_id": 1 + }, + { + "name": "file-md-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents,notes,markdown", + "set_id": 1 + }, + { + "name": "file-minus-bold", + "content": "", + "style": "outline", + "tags": "documents,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "file-pdf-bold", + "content": "", + "style": "outline", + "tags": "documents,files,acrobat", + "set_id": 1 + }, + { + "name": "file-plus-bold", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "file-png-bold", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ppt-bold", + "content": "", + "style": "outline", + "tags": "documents,powerpoint,microsoft", + "set_id": 1 + }, + { + "name": "file-py-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,python", + "set_id": 1 + }, + { + "name": "file-rs-bold", + "content": "", + "style": "outline", + "tags": "documents,code,rust", + "set_id": 1 + }, + { + "name": "file-sql-bold", + "content": "", + "style": "outline", + "tags": "documents,database", + "set_id": 1 + }, + { + "name": "file-svg-bold", + "content": "", + "style": "outline", + "tags": "documents,images,vector", + "set_id": 1 + }, + { + "name": "file-text-bold", + "content": "", + "style": "outline", + "tags": "documents,files,save,write", + "set_id": 1 + }, + { + "name": "file-ts-bold", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-tsx-bold", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-txt-bold", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-video-bold", + "content": "", + "style": "outline", + "tags": "documents,movie", + "set_id": 1 + }, + { + "name": "file-vue-bold", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-x-bold", + "content": "", + "style": "outline", + "tags": "documents,files,cancelled,deleted,removed,errors", + "set_id": 1 + }, + { + "name": "file-xls-bold", + "content": "", + "style": "outline", + "tags": "documents,excel,microsoft", + "set_id": 1 + }, + { + "name": "file-zip-bold", + "content": "", + "style": "outline", + "tags": "documents,archive,compression", + "set_id": 1 + }, + { + "name": "files-bold", + "content": "", + "style": "outline", + "tags": "documents,open,library", + "set_id": 1 + }, + { + "name": "film-reel-bold", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "film-script-bold", + "content": "", + "style": "outline", + "tags": "screenplay,movie", + "set_id": 1 + }, + { + "name": "film-slate-bold", + "content": "", + "style": "outline", + "tags": "*updated*,clapper,movie", + "set_id": 1 + }, + { + "name": "film-strip-bold", + "content": "", + "style": "outline", + "tags": "camera,photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "fingerprint-bold", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "fingerprint-simple-bold", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "finn-the-human-bold", + "content": "", + "style": "outline", + "tags": "adventure time,cartoons,television,tv,character", + "set_id": 1 + }, + { + "name": "fire-bold", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-extinguisher-bold", + "content": "", + "style": "outline", + "tags": "safety,prevention,emergency,hazard,danger,caution", + "set_id": 1 + }, + { + "name": "fire-simple-bold", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-truck-bold", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,firefighter", + "set_id": 1 + }, + { + "name": "first-aid-bold", + "content": "", + "style": "outline", + "tags": "hospital,cross,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "first-aid-kit-bold", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "fish-bold", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "fish-simple-bold", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "flag-bold", + "content": "", + "style": "outline", + "tags": "country,countries,finished,completed,flags", + "set_id": 1 + }, + { + "name": "flag-banner-bold", + "content": "", + "style": "outline", + "tags": "ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-banner-fold-bold", + "content": "", + "style": "outline", + "tags": "*new*,ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-checkered-bold", + "content": "", + "style": "outline", + "tags": "flags,race,racing,finish line", + "set_id": 1 + }, + { + "name": "flag-pennant-bold", + "content": "", + "style": "outline", + "tags": "flags,race,sports,team", + "set_id": 1 + }, + { + "name": "flame-bold", + "content": "", + "style": "outline", + "tags": "fire,burning,match,lighter", + "set_id": 1 + }, + { + "name": "flashlight-bold", + "content": "", + "style": "outline", + "tags": "torch,find,search,locate", + "set_id": 1 + }, + { + "name": "flask-bold", + "content": "", + "style": "outline", + "tags": "beaker,science,chemistry,experiment,erlenmeyer", + "set_id": 1 + }, + { + "name": "flip-horizontal-bold", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "flip-vertical-bold", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "floppy-disk-bold", + "content": "", + "style": "outline", + "tags": "diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "floppy-disk-back-bold", + "content": "", + "style": "outline", + "tags": "*updated*,diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "flow-arrow-bold", + "content": "", + "style": "outline", + "tags": "*updated*,flowchart,arrowhead", + "set_id": 1 + }, + { + "name": "flower-bold", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flower-lotus-bold", + "content": "", + "style": "outline", + "tags": "plants,green,environmental,spirituality", + "set_id": 1 + }, + { + "name": "flower-tulip-bold", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flying-saucer-bold", + "content": "", + "style": "outline", + "tags": "ufo,space,aliens,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "folder-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-dashed-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-lock-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-minus-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-open-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,load", + "set_id": 1 + }, + { + "name": "folder-plus-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-simple-dashed-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-simple-lock-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-simple-minus-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-simple-plus-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-star-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-simple-user-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folder-star-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-user-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folders-bold", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,copy,copied,duplicated", + "set_id": 1 + }, + { + "name": "football-bold", + "content": "", + "style": "outline", + "tags": "sports,american football,nfl", + "set_id": 1 + }, + { + "name": "football-helmet-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,american football,nfl", + "set_id": 1 + }, + { + "name": "footprints-bold", + "content": "", + "style": "outline", + "tags": "path,trail,walk,route,hike,hiking", + "set_id": 1 + }, + { + "name": "fork-knife-bold", + "content": "", + "style": "outline", + "tags": "food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "four-k-bold", + "content": "", + "style": "outline", + "tags": "*new*,uhd,resolution,video", + "set_id": 1 + }, + { + "name": "frame-corners-bold", + "content": "", + "style": "outline", + "tags": "expand,fullscreen,maximized,resize,windowed,capture", + "set_id": 1 + }, + { + "name": "framer-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,interface,ui,motion,prototype,prototyping", + "set_id": 1 + }, + { + "name": "function-bold", + "content": "", + "style": "outline", + "tags": "mathematics,arithmetic,f-stop", + "set_id": 1 + }, + { + "name": "funnel-bold", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-bold", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-x-bold", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-x-bold", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "game-controller-bold", + "content": "", + "style": "outline", + "tags": "gaming,video games,nintendo switch,sony playstation,microsoft xbox", + "set_id": 1 + }, + { + "name": "garage-bold", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,buildings,transportation", + "set_id": 1 + }, + { + "name": "gas-can-bold", + "content": "", + "style": "outline", + "tags": "jerrycan,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gas-pump-bold", + "content": "", + "style": "outline", + "tags": "gas station,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gauge-bold", + "content": "", + "style": "outline", + "tags": "dashboard,meter,speed,speedometer,odometer,performance", + "set_id": 1 + }, + { + "name": "gavel-bold", + "content": "", + "style": "outline", + "tags": "judge,justice,legal,law,court,hammer,government", + "set_id": 1 + }, + { + "name": "gear-bold", + "content": "", + "style": "outline", + "tags": "8,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-fine-bold", + "content": "", + "style": "outline", + "tags": "setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-six-bold", + "content": "", + "style": "outline", + "tags": "6,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gender-female-bold", + "content": "", + "style": "outline", + "tags": "woman,feminine,venus", + "set_id": 1 + }, + { + "name": "gender-intersex-bold", + "content": "", + "style": "outline", + "tags": "transgender,non-binary", + "set_id": 1 + }, + { + "name": "gender-male-bold", + "content": "", + "style": "outline", + "tags": "man,masculine,mars", + "set_id": 1 + }, + { + "name": "gender-neuter-bold", + "content": "", + "style": "outline", + "tags": "agender,non-binary,asexual", + "set_id": 1 + }, + { + "name": "gender-nonbinary-bold", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "gender-transgender-bold", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "ghost-bold", + "content": "", + "style": "outline", + "tags": "pac-man,spirit,scary,halloween", + "set_id": 1 + }, + { + "name": "gif-bold", + "content": "", + "style": "outline", + "tags": "gifs,.gif,giphy", + "set_id": 1 + }, + { + "name": "gift-bold", + "content": "", + "style": "outline", + "tags": "presents,holiday,birthday", + "set_id": 1 + }, + { + "name": "git-branch-bold", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "git-commit-bold", + "content": "", + "style": "outline", + "tags": "github,vcs,source control,version control,versioning,commits", + "set_id": 1 + }, + { + "name": "git-diff-bold", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,difference,compare", + "set_id": 1 + }, + { + "name": "git-fork-bold", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-merge-bold", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-pull-request-bold", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,merge request", + "set_id": 1 + }, + { + "name": "github-logo-bold", + "content": "", + "style": "outline", + "tags": "octocat,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-bold", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-simple-bold", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "globe-bold", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-hemisphere-east-bold", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,europe,africa,asia,australia", + "set_id": 1 + }, + { + "name": "globe-hemisphere-west-bold", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,north america,south america", + "set_id": 1 + }, + { + "name": "globe-simple-bold", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-simple-x-bold", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-stand-bold", + "content": "", + "style": "outline", + "tags": "world,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-x-bold", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "goggles-bold", + "content": "", + "style": "outline", + "tags": "swim,swimming,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "golf-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,pga,tee,ball", + "set_id": 1 + }, + { + "name": "goodreads-logo-bold", + "content": "", + "style": "outline", + "tags": "*updated*,reading,books,social media,logos", + "set_id": 1 + }, + { + "name": "google-cardboard-logo-bold", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,logos", + "set_id": 1 + }, + { + "name": "google-chrome-logo-bold", + "content": "", + "style": "outline", + "tags": "web browsers,internet", + "set_id": 1 + }, + { + "name": "google-drive-logo-bold", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "google-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,search engine,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-photos-logo-bold", + "content": "", + "style": "outline", + "tags": "album,pictures,photography", + "set_id": 1 + }, + { + "name": "google-play-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,games,apps,applications,play store,app store,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-podcasts-logo-bold", + "content": "", + "style": "outline", + "tags": "audio", + "set_id": 1 + }, + { + "name": "gps-bold", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-fix-bold", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation,disabled", + "set_id": 1 + }, + { + "name": "gradient-bold", + "content": "", + "style": "outline", + "tags": "fade,ombre,opacity", + "set_id": 1 + }, + { + "name": "graduation-cap-bold", + "content": "", + "style": "outline", + "tags": "classroom,teacher,education,school,college,university,degree,graduate,hat", + "set_id": 1 + }, + { + "name": "grains-bold", + "content": "", + "style": "outline", + "tags": "wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "grains-slash-bold", + "content": "", + "style": "outline", + "tags": "gluten-free,wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "graph-bold", + "content": "", + "style": "outline", + "tags": "nodes,tree", + "set_id": 1 + }, + { + "name": "graphics-card-bold", + "content": "", + "style": "outline", + "tags": "*new*,graphics card,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "greater-than-bold", + "content": "", + "style": "outline", + "tags": "*new*,>,greater than,gt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "greater-than-or-equal-bold", + "content": "", + "style": "outline", + "tags": "*new*,≥,greater than or equal,gte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "grid-four-bold", + "content": "", + "style": "outline", + "tags": "4,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "grid-nine-bold", + "content": "", + "style": "outline", + "tags": "9,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "guitar-bold", + "content": "", + "style": "outline", + "tags": "music,instrument", + "set_id": 1 + }, + { + "name": "hair-dryer-bold", + "content": "", + "style": "outline", + "tags": "*new*,blow dryer,beauty,grooming,salon", + "set_id": 1 + }, + { + "name": "hamburger-bold", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "hammer-bold", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "hand-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,backhand", + "set_id": 1 + }, + { + "name": "hand-arrow-down-bold", + "content": "", + "style": "outline", + "tags": "*new*,take,receive,remove,withdraw,emoji", + "set_id": 1 + }, + { + "name": "hand-arrow-up-bold", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,deposit,donation,emoji", + "set_id": 1 + }, + { + "name": "hand-coins-bold", + "content": "", + "style": "outline", + "tags": "donation,payment,money,paying,purchase", + "set_id": 1 + }, + { + "name": "hand-deposit-bold", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,donation,atm,emoji", + "set_id": 1 + }, + { + "name": "hand-eye-bold", + "content": "", + "style": "outline", + "tags": "*updated*,emoji,hamsa,evil eye", + "set_id": 1 + }, + { + "name": "hand-fist-bold", + "content": "", + "style": "outline", + "tags": "emoji,power,protest,blm", + "set_id": 1 + }, + { + "name": "hand-grabbing-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,drag,hold", + "set_id": 1 + }, + { + "name": "hand-heart-bold", + "content": "", + "style": "outline", + "tags": "donation,care,emoji", + "set_id": 1 + }, + { + "name": "hand-palm-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,palm,stop,wait,hamsa,5", + "set_id": 1 + }, + { + "name": "hand-peace-bold", + "content": "", + "style": "outline", + "tags": "*new*,emoji,victory", + "set_id": 1 + }, + { + "name": "hand-pointing-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,fingers,clicks,mouse", + "set_id": 1 + }, + { + "name": "hand-soap-bold", + "content": "", + "style": "outline", + "tags": "dispenser,pump,sanitizer,disinfectant,lotion,bottle", + "set_id": 1 + }, + { + "name": "hand-swipe-left-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-swipe-right-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-tap-bold", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-waving-bold", + "content": "", + "style": "outline", + "tags": "emoji,palm,wave,hello,goodbye", + "set_id": 1 + }, + { + "name": "hand-withdraw-bold", + "content": "", + "style": "outline", + "tags": "*new*,take,remove,withdrawal,atm,emoji", + "set_id": 1 + }, + { + "name": "handbag-bold", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "handbag-simple-bold", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "hands-clapping-bold", + "content": "", + "style": "outline", + "tags": "emoji,clap,applause", + "set_id": 1 + }, + { + "name": "hands-praying-bold", + "content": "", + "style": "outline", + "tags": "emoji,religion,worship,prayer,thanks,thank you", + "set_id": 1 + }, + { + "name": "handshake-bold", + "content": "", + "style": "outline", + "tags": "emoji,deal,agreement", + "set_id": 1 + }, + { + "name": "hard-drive-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-drives-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-hat-bold", + "content": "", + "style": "outline", + "tags": "*new*,safety,construction,industry,helmet,ppe", + "set_id": 1 + }, + { + "name": "hash-bold", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "hash-straight-bold", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "head-circuit-bold", + "content": "", + "style": "outline", + "tags": "*new*,automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "headlights-bold", + "content": "", + "style": "outline", + "tags": "brights,high beams", + "set_id": 1 + }, + { + "name": "headphones-bold", + "content": "", + "style": "outline", + "tags": "music,audio,listening", + "set_id": 1 + }, + { + "name": "headset-bold", + "content": "", + "style": "outline", + "tags": "music,audio,listening,gaming,voice chat,microphone,headphones,support,customer-service,call-center", + "set_id": 1 + }, + { + "name": "heart-bold", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-break-bold", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heart-half-bold", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited", + "set_id": 1 + }, + { + "name": "heart-straight-bold", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-straight-break-bold", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heartbeat-bold", + "content": "", + "style": "outline", + "tags": "wellness,healthy,ecg,ekg,vitals,monitor", + "set_id": 1 + }, + { + "name": "hexagon-bold", + "content": "", + "style": "outline", + "tags": "6,shapes,polygons", + "set_id": 1 + }, + { + "name": "high-definition-bold", + "content": "", + "style": "outline", + "tags": "*new*,hd,resolution,video", + "set_id": 1 + }, + { + "name": "high-heel-bold", + "content": "", + "style": "outline", + "tags": "*updated*,pumps,clothes,clothing,shoes", + "set_id": 1 + }, + { + "name": "highlighter-bold", + "content": "", + "style": "outline", + "tags": "*new*,marker,write,writing,editing", + "set_id": 1 + }, + { + "name": "highlighter-circle-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "hockey-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,nhl,stick,puck", + "set_id": 1 + }, + { + "name": "hoodie-bold", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sweatshirt", + "set_id": 1 + }, + { + "name": "horse-bold", + "content": "", + "style": "outline", + "tags": "animals,equestrian,chess,knight,sports", + "set_id": 1 + }, + { + "name": "hospital-bold", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,medical,medicine,emergency,doctor,buildings", + "set_id": 1 + }, + { + "name": "hourglass-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-high-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-low-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-medium-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-high-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-low-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-medium-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "house-bold", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-line-bold", + "content": "", + "style": "outline", + "tags": "*updated*,homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-simple-bold", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "hurricane-bold", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,cyclone,storm,disaster,wind", + "set_id": 1 + }, + { + "name": "ice-cream-bold", + "content": "", + "style": "outline", + "tags": "food,dessert,cone", + "set_id": 1 + }, + { + "name": "identification-badge-bold", + "content": "", + "style": "outline", + "tags": "license,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "identification-card-bold", + "content": "", + "style": "outline", + "tags": "license,badge,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "image-bold", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "image-broken-bold", + "content": "", + "style": "outline", + "tags": "*new*,pictures,photographs,photography,wallpapers,gallery,landscape,missing,error,404", + "set_id": 1 + }, + { + "name": "image-square-bold", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "images-bold", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "images-square-bold", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "infinity-bold", + "content": "", + "style": "outline", + "tags": "infinite,lemniscate,figure-eight,mathematics,arithmetic,calculator,∞", + "set_id": 1 + }, + { + "name": "info-bold", + "content": "", + "style": "outline", + "tags": "information,help,support", + "set_id": 1 + }, + { + "name": "instagram-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,social media,photography,camera", + "set_id": 1 + }, + { + "name": "intersect-bold", + "content": "", + "style": "outline", + "tags": "round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "intersect-square-bold", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection", + "set_id": 1 + }, + { + "name": "intersect-three-bold", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection,gender,pronouns", + "set_id": 1 + }, + { + "name": "intersection-bold", + "content": "", + "style": "outline", + "tags": "*new*,∩,intersection,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "invoice-bold", + "content": "", + "style": "outline", + "tags": "*new*,receipt,expense,bill", + "set_id": 1 + }, + { + "name": "island-bold", + "content": "", + "style": "outline", + "tags": "*new*,geography,beach,ocean,tropical,palm,vacation,trip,locations,places", + "set_id": 1 + }, + { + "name": "jar-bold", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jar-label-bold", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jeep-bold", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,automobile,suv,cars,trucks,wrangler,off-road,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "joystick-bold", + "content": "", + "style": "outline", + "tags": "*new*,gaming,game controller,video games,arcade game,atari", + "set_id": 1 + }, + { + "name": "kanban-bold", + "content": "", + "style": "outline", + "tags": "scheduling,tasks,project management,process,lean,agile", + "set_id": 1 + }, + { + "name": "key-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "key-return-bold", + "content": "", + "style": "outline", + "tags": "keyboard,enter", + "set_id": 1 + }, + { + "name": "keyboard-bold", + "content": "", + "style": "outline", + "tags": "typing,type,keys,input", + "set_id": 1 + }, + { + "name": "keyhole-bold", + "content": "", + "style": "outline", + "tags": "lock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "knife-bold", + "content": "", + "style": "outline", + "tags": "tools,food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "ladder-bold", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "ladder-simple-bold", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "lamp-bold", + "content": "", + "style": "outline", + "tags": "light,furniture,appliances", + "set_id": 1 + }, + { + "name": "lamp-pendant-bold", + "content": "", + "style": "outline", + "tags": "*new*,light,furniture,appliances", + "set_id": 1 + }, + { + "name": "laptop-bold", + "content": "", + "style": "outline", + "tags": "computer,notebook,pc,macbook", + "set_id": 1 + }, + { + "name": "lasso-bold", + "content": "", + "style": "outline", + "tags": "*new*,select,selection,loop,rope,cowboy", + "set_id": 1 + }, + { + "name": "lastfm-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,scrobble,music,social media", + "set_id": 1 + }, + { + "name": "layout-bold", + "content": "", + "style": "outline", + "tags": "wireframe,sidebar,ui,interface", + "set_id": 1 + }, + { + "name": "leaf-bold", + "content": "", + "style": "outline", + "tags": "plants,trees,branches,leaves,nodes,green,environmental", + "set_id": 1 + }, + { + "name": "lectern-bold", + "content": "", + "style": "outline", + "tags": "*new*,lecture,podium,pulpit,stand,speech,presentation,keynote", + "set_id": 1 + }, + { + "name": "lego-bold", + "content": "", + "style": "outline", + "tags": "*new*,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "lego-smiley-bold", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "less-than-bold", + "content": "", + "style": "outline", + "tags": "*new*,<,less than,lt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "less-than-or-equal-bold", + "content": "", + "style": "outline", + "tags": "*new*,≤,less than or equal,lte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "letter-circle-h-bold", + "content": "", + "style": "outline", + "tags": "*new*,hospital,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-p-bold", + "content": "", + "style": "outline", + "tags": "*new*,parking lot,valet,vehicles,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-v-bold", + "content": "", + "style": "outline", + "tags": "*new*,vegan,letter,glyph,character", + "set_id": 1 + }, + { + "name": "lifebuoy-bold", + "content": "", + "style": "outline", + "tags": "lifebelt,lifesaver,safety,help,support,nautical,boats,ships", + "set_id": 1 + }, + { + "name": "lightbulb-bold", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lightbulb-filament-bold", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lighthouse-bold", + "content": "", + "style": "outline", + "tags": "buildings,nautical,navigation,boats,ships,safety", + "set_id": 1 + }, + { + "name": "lightning-bold", + "content": "", + "style": "outline", + "tags": "meteorology,stormy,thunderstorm,thunderbolt,charged,charger,charging,power,electricity,flash", + "set_id": 1 + }, + { + "name": "lightning-a-bold", + "content": "", + "style": "outline", + "tags": "flash,auto", + "set_id": 1 + }, + { + "name": "lightning-slash-bold", + "content": "", + "style": "outline", + "tags": "thunderbolt,charged,charger,charging,power,electricity,disabled,flash", + "set_id": 1 + }, + { + "name": "line-segment-bold", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-segments-bold", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-vertical-bold", + "content": "", + "style": "outline", + "tags": "*new*,bar,pipe,|,divider. symbol", + "set_id": 1 + }, + { + "name": "link-bold", + "content": "", + "style": "outline", + "tags": "*updated*,anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-break-bold", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-bold", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-break-bold", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-bold", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-break-bold", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "linkedin-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,jobs,employment,social media", + "set_id": 1 + }, + { + "name": "linktree-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,social media,links", + "set_id": 1 + }, + { + "name": "linux-logo-bold", + "content": "", + "style": "outline", + "tags": "penguin,computer,animals", + "set_id": 1 + }, + { + "name": "list-bold", + "content": "", + "style": "outline", + "tags": "*updated*,hamburger menu,overflow menu,sidebar,3,ul,ol,unordered list,ordered list,checklist,lines", + "set_id": 1 + }, + { + "name": "list-bullets-bold", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,bulleted list,checklist", + "set_id": 1 + }, + { + "name": "list-checks-bold", + "content": "", + "style": "outline", + "tags": "*updated*,checklist,todo", + "set_id": 1 + }, + { + "name": "list-dashes-bold", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,dashed list,checklist", + "set_id": 1 + }, + { + "name": "list-heart-bold", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "list-magnifying-glass-bold", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "list-numbers-bold", + "content": "", + "style": "outline", + "tags": "*updated*,ol,ordered list,numbered list,checklist", + "set_id": 1 + }, + { + "name": "list-plus-bold", + "content": "", + "style": "outline", + "tags": "*updated*,ul,ol,unordered list,ordered list,checklist,add,+", + "set_id": 1 + }, + { + "name": "list-star-bold", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "lock-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-open-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-laminated-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-laminated-open-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-open-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-simple-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-simple-open-bold", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lockers-bold", + "content": "", + "style": "outline", + "tags": "locker room,gym,storage", + "set_id": 1 + }, + { + "name": "log-bold", + "content": "", + "style": "outline", + "tags": "*new*,tree,stump,stick,branch", + "set_id": 1 + }, + { + "name": "magic-wand-bold", + "content": "", + "style": "outline", + "tags": "selection,wizard,games", + "set_id": 1 + }, + { + "name": "magnet-bold", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnet-straight-bold", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnifying-glass-bold", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "magnifying-glass-minus-bold", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom out,-", + "set_id": 1 + }, + { + "name": "magnifying-glass-plus-bold", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom in,+", + "set_id": 1 + }, + { + "name": "mailbox-bold", + "content": "", + "style": "outline", + "tags": "*new*,email,letters,messaging,post", + "set_id": 1 + }, + { + "name": "map-pin-bold", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-area-bold", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-line-bold", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-plus-bold", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,add,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-bold", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-area-bold", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-line-bold", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-trifold-bold", + "content": "", + "style": "outline", + "tags": "maps,places,locations,cartography,geography", + "set_id": 1 + }, + { + "name": "markdown-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,markup,editor,.md", + "set_id": 1 + }, + { + "name": "marker-circle-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "martini-bold", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,cocktails,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "mask-happy-bold", + "content": "", + "style": "outline", + "tags": "theater,costume,smile,smiling,thalia", + "set_id": 1 + }, + { + "name": "mask-sad-bold", + "content": "", + "style": "outline", + "tags": "theater,costume,cry,crying,melpomene", + "set_id": 1 + }, + { + "name": "mastodon-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,fediverse,social media,decentralized", + "set_id": 1 + }, + { + "name": "math-operations-bold", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,calculator,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "matrix-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,matrix protocol,brands,logos", + "set_id": 1 + }, + { + "name": "medal-bold", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,rosette", + "set_id": 1 + }, + { + "name": "medal-military-bold", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,military", + "set_id": 1 + }, + { + "name": "medium-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,reading,writing,news,social media", + "set_id": 1 + }, + { + "name": "megaphone-bold", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "megaphone-simple-bold", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "member-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,∈,is element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "memory-bold", + "content": "", + "style": "outline", + "tags": "*new*,ram,microchip,computer,circuit,electronics", + "set_id": 1 + }, + { + "name": "messenger-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,facebook,social media", + "set_id": 1 + }, + { + "name": "meta-logo-bold", + "content": "", + "style": "outline", + "tags": "*updated*,facebook,logos,social media,logos", + "set_id": 1 + }, + { + "name": "meteor-bold", + "content": "", + "style": "outline", + "tags": "*new*,astronomy,asteroid,fireball", + "set_id": 1 + }, + { + "name": "metronome-bold", + "content": "", + "style": "outline", + "tags": "music,beat,tempo,bpm", + "set_id": 1 + }, + { + "name": "microphone-bold", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio", + "set_id": 1 + }, + { + "name": "microphone-slash-bold", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio,muted,disabled", + "set_id": 1 + }, + { + "name": "microphone-stage-bold", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,performance,concert", + "set_id": 1 + }, + { + "name": "microscope-bold", + "content": "", + "style": "outline", + "tags": "*new*,science,biology,experiment,magnify", + "set_id": 1 + }, + { + "name": "microsoft-excel-logo-bold", + "content": "", + "style": "outline", + "tags": "tables,spreadsheets,tabular", + "set_id": 1 + }, + { + "name": "microsoft-outlook-logo-bold", + "content": "", + "style": "outline", + "tags": "email,logos", + "set_id": 1 + }, + { + "name": "microsoft-powerpoint-logo-bold", + "content": "", + "style": "outline", + "tags": "slides,slideshow,presentation", + "set_id": 1 + }, + { + "name": "microsoft-teams-logo-bold", + "content": "", + "style": "outline", + "tags": "chat,video conference", + "set_id": 1 + }, + { + "name": "microsoft-word-logo-bold", + "content": "", + "style": "outline", + "tags": "documents,word processor,doc,docx", + "set_id": 1 + }, + { + "name": "minus-bold", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,line,horizontal,divider", + "set_id": 1 + }, + { + "name": "minus-circle-bold", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,round", + "set_id": 1 + }, + { + "name": "minus-square-bold", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "money-bold", + "content": "", + "style": "outline", + "tags": "cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "money-wavy-bold", + "content": "", + "style": "outline", + "tags": "*new*,cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "monitor-bold", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays", + "set_id": 1 + }, + { + "name": "monitor-arrow-up-bold", + "content": "", + "style": "outline", + "tags": "*new*,screen,screencast,screenshare,upload,video,movie", + "set_id": 1 + }, + { + "name": "monitor-play-bold", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays,screencast,video,movie", + "set_id": 1 + }, + { + "name": "moon-bold", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing", + "set_id": 1 + }, + { + "name": "moon-stars-bold", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing,constellation", + "set_id": 1 + }, + { + "name": "moped-bold", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "moped-front-bold", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "mosque-bold", + "content": "", + "style": "outline", + "tags": "islam,muslim,religion,worship", + "set_id": 1 + }, + { + "name": "motorcycle-bold", + "content": "", + "style": "outline", + "tags": "vehicles,motorbike,transportation,travel", + "set_id": 1 + }, + { + "name": "mountains-bold", + "content": "", + "style": "outline", + "tags": "*updated*,hills,outdoors,terrain,geology,adventure", + "set_id": 1 + }, + { + "name": "mouse-bold", + "content": "", + "style": "outline", + "tags": "*updated*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-left-click-bold", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-middle-click-bold", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-right-click-bold", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-scroll-bold", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-simple-bold", + "content": "", + "style": "outline", + "tags": "clicks,input", + "set_id": 1 + }, + { + "name": "music-note-bold", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-note-simple-bold", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-bold", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-minus-bold", + "content": "", + "style": "outline", + "tags": "*new*,songs,audio,playlist,albums,remove,subtract", + "set_id": 1 + }, + { + "name": "music-notes-plus-bold", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums,add", + "set_id": 1 + }, + { + "name": "music-notes-simple-bold", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "navigation-arrow-bold", + "content": "", + "style": "outline", + "tags": "location,directions,compass,gps", + "set_id": 1 + }, + { + "name": "needle-bold", + "content": "", + "style": "outline", + "tags": "sewing,thread,awl,tailor", + "set_id": 1 + }, + { + "name": "network-bold", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan", + "set_id": 1 + }, + { + "name": "network-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,error", + "set_id": 1 + }, + { + "name": "network-x-bold", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,disabled", + "set_id": 1 + }, + { + "name": "newspaper-bold", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "newspaper-clipping-bold", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "not-equals-bold", + "content": "", + "style": "outline", + "tags": "*new*,≠,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-member-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,∉,is not element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-subset-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,⊄,not subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-superset-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,⊉,not superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "notches-bold", + "content": "", + "style": "outline", + "tags": "textarea,resize,drag handle,knurling", + "set_id": 1 + }, + { + "name": "note-bold", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-blank-bold", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-pencil-bold", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "notebook-bold", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,journal,diary,logs,logbook", + "set_id": 1 + }, + { + "name": "notepad-bold", + "content": "", + "style": "outline", + "tags": "*updated*,logs,logbook,notes,note-taking,memorandum,journal,diary", + "set_id": 1 + }, + { + "name": "notification-bold", + "content": "", + "style": "outline", + "tags": "badge,pip", + "set_id": 1 + }, + { + "name": "notion-logo-bold", + "content": "", + "style": "outline", + "tags": "documentation,productivity,wiki,logos", + "set_id": 1 + }, + { + "name": "nuclear-plant-bold", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "number-circle-eight-bold", + "content": "", + "style": "outline", + "tags": "8,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-five-bold", + "content": "", + "style": "outline", + "tags": "5,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-four-bold", + "content": "", + "style": "outline", + "tags": "*updated*,4,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-nine-bold", + "content": "", + "style": "outline", + "tags": "9,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-one-bold", + "content": "", + "style": "outline", + "tags": "1,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-seven-bold", + "content": "", + "style": "outline", + "tags": "7,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-six-bold", + "content": "", + "style": "outline", + "tags": "6,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-three-bold", + "content": "", + "style": "outline", + "tags": "3,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-two-bold", + "content": "", + "style": "outline", + "tags": "2,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-zero-bold", + "content": "", + "style": "outline", + "tags": "0,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-eight-bold", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-five-bold", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-four-bold", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-nine-bold", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-one-bold", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-seven-bold", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-six-bold", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-eight-bold", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-five-bold", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-four-bold", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-nine-bold", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-one-bold", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-seven-bold", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-six-bold", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-three-bold", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-two-bold", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-zero-bold", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-three-bold", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-two-bold", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-zero-bold", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "numpad-bold", + "content": "", + "style": "outline", + "tags": "*new*,dialer,dialpad,call-center,telephone,landline,password,passcode", + "set_id": 1 + }, + { + "name": "nut-bold", + "content": "", + "style": "outline", + "tags": "bolts,screws,machinery,tools,hexagon", + "set_id": 1 + }, + { + "name": "ny-times-logo-bold", + "content": "", + "style": "outline", + "tags": "nyt,new york times,logos,reading,writing,news,newspaper", + "set_id": 1 + }, + { + "name": "octagon-bold", + "content": "", + "style": "outline", + "tags": "8,shapes,polygons", + "set_id": 1 + }, + { + "name": "office-chair-bold", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "onigiri-bold", + "content": "", + "style": "outline", + "tags": "*new*,rice ball,japanese,food,restaurant", + "set_id": 1 + }, + { + "name": "open-ai-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,artificial intelligence,ai,chatgpt,llm,logos", + "set_id": 1 + }, + { + "name": "option-bold", + "content": "", + "style": "outline", + "tags": "keyboard,shortcut,modifier", + "set_id": 1 + }, + { + "name": "orange-bold", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "orange-slice-bold", + "content": "", + "style": "outline", + "tags": "food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "oven-bold", + "content": "", + "style": "outline", + "tags": "*new*,stove,stovetop,food,cooking,cuisine,kitchen", + "set_id": 1 + }, + { + "name": "package-bold", + "content": "", + "style": "outline", + "tags": "packages,boxes,delivery,mail,postal service,bundles,library,libraries,shipping", + "set_id": 1 + }, + { + "name": "paint-brush-bold", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-broad-bold", + "content": "", + "style": "outline", + "tags": "fill,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-household-bold", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-bucket-bold", + "content": "", + "style": "outline", + "tags": "*updated*,paintbucket,colors,color picker,fill,arts", + "set_id": 1 + }, + { + "name": "paint-roller-bold", + "content": "", + "style": "outline", + "tags": "colors,color picker,fill,arts,theme", + "set_id": 1 + }, + { + "name": "palette-bold", + "content": "", + "style": "outline", + "tags": "paint,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "panorama-bold", + "content": "", + "style": "outline", + "tags": "*new*,image,picture,photography,landscape,360", + "set_id": 1 + }, + { + "name": "pants-bold", + "content": "", + "style": "outline", + "tags": "clothing,clothes,jeans", + "set_id": 1 + }, + { + "name": "paper-plane-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-right-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-tilt-bold", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paperclip-bold", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "paperclip-horizontal-bold", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "parachute-bold", + "content": "", + "style": "outline", + "tags": "skydiving,safety", + "set_id": 1 + }, + { + "name": "paragraph-bold", + "content": "", + "style": "outline", + "tags": "pilcrow", + "set_id": 1 + }, + { + "name": "parallelogram-bold", + "content": "", + "style": "outline", + "tags": "shapes,bandcamp,logos", + "set_id": 1 + }, + { + "name": "park-bold", + "content": "", + "style": "outline", + "tags": "bench,outdoors", + "set_id": 1 + }, + { + "name": "password-bold", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "path-bold", + "content": "", + "style": "outline", + "tags": "transit,travel,trail,gps,navigation,route,destination,vector", + "set_id": 1 + }, + { + "name": "patreon-logo-bold", + "content": "", + "style": "outline", + "tags": "*updated*,crowdfunding,logos", + "set_id": 1 + }, + { + "name": "pause-bold", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "pause-circle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop,round", + "set_id": 1 + }, + { + "name": "paw-print-bold", + "content": "", + "style": "outline", + "tags": "pets,pet store,pet shop,animals,cat,dog,veterinarian", + "set_id": 1 + }, + { + "name": "paypal-logo-bold", + "content": "", + "style": "outline", + "tags": "payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "peace-bold", + "content": "", + "style": "outline", + "tags": "love,hippies,peace sign,symbols", + "set_id": 1 + }, + { + "name": "pen-bold", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pen-nib-bold", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pen-nib-straight-bold", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pencil-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-circle-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-line-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-ruler-bold", + "content": "", + "style": "outline", + "tags": "*new*,drawing,drafting,construction,tools", + "set_id": 1 + }, + { + "name": "pencil-simple-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-line-bold", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-slash-bold", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pencil-slash-bold", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pentagon-bold", + "content": "", + "style": "outline", + "tags": "*new*,shapes,polygons,5", + "set_id": 1 + }, + { + "name": "pentagram-bold", + "content": "", + "style": "outline", + "tags": "star,wicca,satan,satanism,religion,spirituality,evil,magic", + "set_id": 1 + }, + { + "name": "pepper-bold", + "content": "", + "style": "outline", + "tags": "food,spicy,chile,vegetable", + "set_id": 1 + }, + { + "name": "percent-bold", + "content": "", + "style": "outline", + "tags": "%,percentage,percentile,ratio,delta,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "person-bold", + "content": "", + "style": "outline", + "tags": "walking,human,woman,man,body,transit,transportation,travel,commuter,user", + "set_id": 1 + }, + { + "name": "person-arms-spread-bold", + "content": "", + "style": "outline", + "tags": "accessibility,vitruvian,stretch,sports", + "set_id": 1 + }, + { + "name": "person-simple-bold", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-bike-bold", + "content": "", + "style": "outline", + "tags": "pedestrian,biking,bicycle,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-circle-bold", + "content": "", + "style": "outline", + "tags": "*new*,human,accessibility,a11y,vitruvius,vitruvian", + "set_id": 1 + }, + { + "name": "person-simple-hike-bold", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,climbing,mountaineering,bouldering", + "set_id": 1 + }, + { + "name": "person-simple-run-bold", + "content": "", + "style": "outline", + "tags": "pedestrian,running,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-ski-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,skiing,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-snowboard-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,snowboarding,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-swim-bold", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,swimming,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-tai-chi-bold", + "content": "", + "style": "outline", + "tags": "*new*,mindfulness,martial arts,meditation,sports,exercise,yoga", + "set_id": 1 + }, + { + "name": "person-simple-throw-bold", + "content": "", + "style": "outline", + "tags": "pedestrian,tennis,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-walk-bold", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "perspective-bold", + "content": "", + "style": "outline", + "tags": "3d,skew,warp,trapezoid", + "set_id": 1 + }, + { + "name": "phone-bold", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-call-bold", + "content": "", + "style": "outline", + "tags": "calls,calling,ringing,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-disconnect-bold", + "content": "", + "style": "outline", + "tags": "calls,hang up,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-incoming-bold", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-list-bold", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-outgoing-bold", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-pause-bold", + "content": "", + "style": "outline", + "tags": "*new*,calls,hold,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-plus-bold", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk,conference,add", + "set_id": 1 + }, + { + "name": "phone-slash-bold", + "content": "", + "style": "outline", + "tags": "calls,disabled,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-transfer-bold", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-x-bold", + "content": "", + "style": "outline", + "tags": "calls,missed,errors,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phosphor-logo-bold", + "content": "", + "style": "outline", + "tags": "logos", + "set_id": 1 + }, + { + "name": "pi-bold", + "content": "", + "style": "outline", + "tags": "π,symbol,mathematics,circle", + "set_id": 1 + }, + { + "name": "piano-keys-bold", + "content": "", + "style": "outline", + "tags": "music,instrument,keyboard", + "set_id": 1 + }, + { + "name": "picnic-table-bold", + "content": "", + "style": "outline", + "tags": "*new*,bench,park,outdoors", + "set_id": 1 + }, + { + "name": "picture-in-picture-bold", + "content": "", + "style": "outline", + "tags": "pip,pop-out,minimize,maximize", + "set_id": 1 + }, + { + "name": "piggy-bank-bold", + "content": "", + "style": "outline", + "tags": "savings,deposit,money,coins", + "set_id": 1 + }, + { + "name": "pill-bold", + "content": "", + "style": "outline", + "tags": "capsule,medicine,rx,pharmacy,pharmacist,pharmaceuticals,prescription,drugs", + "set_id": 1 + }, + { + "name": "ping-pong-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,paddle", + "set_id": 1 + }, + { + "name": "pint-glass-bold", + "content": "", + "style": "outline", + "tags": "*new*,water,beverage,drinks,beverages,food,dining", + "set_id": 1 + }, + { + "name": "pinterest-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,vision board,mood board,social media", + "set_id": 1 + }, + { + "name": "pinwheel-bold", + "content": "", + "style": "outline", + "tags": "toys,whirligig", + "set_id": 1 + }, + { + "name": "pipe-bold", + "content": "", + "style": "outline", + "tags": "*new*,tube,plumber,plumbing,construction", + "set_id": 1 + }, + { + "name": "pipe-wrench-bold", + "content": "", + "style": "outline", + "tags": "*new*,plumber,plumbing,tools,construction", + "set_id": 1 + }, + { + "name": "pix-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "pizza-bold", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "placeholder-bold", + "content": "", + "style": "outline", + "tags": "empty,notdef,tofu,rectangle slash,missing", + "set_id": 1 + }, + { + "name": "planet-bold", + "content": "", + "style": "outline", + "tags": "saturn,world,globe,astronomy,space", + "set_id": 1 + }, + { + "name": "plant-bold", + "content": "", + "style": "outline", + "tags": "sprout,vegan,farm,farming,garden,gardening", + "set_id": 1 + }, + { + "name": "play-bold", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start", + "set_id": 1 + }, + { + "name": "play-circle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,round", + "set_id": 1 + }, + { + "name": "play-pause-bold", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "playlist-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,queue", + "set_id": 1 + }, + { + "name": "plug-bold", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plug-charging-bold", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,charge,charging", + "set_id": 1 + }, + { + "name": "plugs-bold", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,disconnected", + "set_id": 1 + }, + { + "name": "plugs-connected-bold", + "content": "", + "style": "outline", + "tags": "*updated*,outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plus-bold", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "plus-circle-bold", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,round,+", + "set_id": 1 + }, + { + "name": "plus-minus-bold", + "content": "", + "style": "outline", + "tags": "plus or minus,plus/minus,add/subtract,addition,sum,subtraction,difference,mathematics,arithmetic,calculator,+,-,±", + "set_id": 1 + }, + { + "name": "plus-square-bold", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "poker-chip-bold", + "content": "", + "style": "outline", + "tags": "chips,tokens,cards,gambling,casino", + "set_id": 1 + }, + { + "name": "police-car-bold", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,law enforcement", + "set_id": 1 + }, + { + "name": "polygon-bold", + "content": "", + "style": "outline", + "tags": "shapes,drawing", + "set_id": 1 + }, + { + "name": "popcorn-bold", + "content": "", + "style": "outline", + "tags": "food,movies,theater", + "set_id": 1 + }, + { + "name": "popsicle-bold", + "content": "", + "style": "outline", + "tags": "*new*,ice cream,dessert,summer,food", + "set_id": 1 + }, + { + "name": "potted-plant-bold", + "content": "", + "style": "outline", + "tags": "sprout,vegan,garden,gardening", + "set_id": 1 + }, + { + "name": "power-bold", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,on,off,on/off,switch,power switch", + "set_id": 1 + }, + { + "name": "prescription-bold", + "content": "", + "style": "outline", + "tags": "rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor", + "set_id": 1 + }, + { + "name": "presentation-bold", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "presentation-chart-bold", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,graphs,graphing,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "printer-bold", + "content": "", + "style": "outline", + "tags": "printing", + "set_id": 1 + }, + { + "name": "prohibit-bold", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "prohibit-inset-bold", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "projector-screen-bold", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,movies,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "projector-screen-chart-bold", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "pulse-bold", + "content": "", + "style": "outline", + "tags": "activity,heartbeat,medical,ecg,ekg,vitals,monitor,medicine", + "set_id": 1 + }, + { + "name": "push-pin-bold", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-bold", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-slash-bold", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "push-pin-slash-bold", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "puzzle-piece-bold", + "content": "", + "style": "outline", + "tags": "board game,element,component,extension,plugin", + "set_id": 1 + }, + { + "name": "qr-code-bold", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "question-bold", + "content": "", + "style": "outline", + "tags": "information,help,support,questions", + "set_id": 1 + }, + { + "name": "question-mark-bold", + "content": "", + "style": "outline", + "tags": "*new*,?,information,help,support,questions,punctuation,symbol", + "set_id": 1 + }, + { + "name": "queue-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,playlist", + "set_id": 1 + }, + { + "name": "quotes-bold", + "content": "", + "style": "outline", + "tags": "quoations,quotation marks,double-quotes,writing,books", + "set_id": 1 + }, + { + "name": "rabbit-bold", + "content": "", + "style": "outline", + "tags": "*new*,hare,fast,animal", + "set_id": 1 + }, + { + "name": "racquet-bold", + "content": "", + "style": "outline", + "tags": "*new*,sports,tennis,squash,pickleball", + "set_id": 1 + }, + { + "name": "radical-bold", + "content": "", + "style": "outline", + "tags": "√,radix,radicand,square root,squareroot,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "radio-bold", + "content": "", + "style": "outline", + "tags": "broadcast,fm,am,xm,transmitter,receiver", + "set_id": 1 + }, + { + "name": "radio-button-bold", + "content": "", + "style": "outline", + "tags": "input,checkbox,checked", + "set_id": 1 + }, + { + "name": "radioactive-bold", + "content": "", + "style": "outline", + "tags": "radiation,danger,warning,nuclear,atomic", + "set_id": 1 + }, + { + "name": "rainbow-bold", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,arc,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "rainbow-cloud-bold", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,cloudy,partly cloudy,partly sunny,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "ranking-bold", + "content": "", + "style": "outline", + "tags": "*new*,medal,rank,leaderboard,winner,sports", + "set_id": 1 + }, + { + "name": "read-cv-logo-bold", + "content": "", + "style": "outline", + "tags": "resume,jobs,logos", + "set_id": 1 + }, + { + "name": "receipt-bold", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense", + "set_id": 1 + }, + { + "name": "receipt-x-bold", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense,cancel", + "set_id": 1 + }, + { + "name": "record-bold", + "content": "", + "style": "outline", + "tags": "music,audio,recording,recorder,voice memo", + "set_id": 1 + }, + { + "name": "rectangle-bold", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "rectangle-dashed-bold", + "content": "", + "style": "outline", + "tags": "*new*,4,shapes,polygons,box,missing", + "set_id": 1 + }, + { + "name": "recycle-bold", + "content": "", + "style": "outline", + "tags": "recycling,trash,environmental,green", + "set_id": 1 + }, + { + "name": "reddit-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,subreddit,snoo,social media", + "set_id": 1 + }, + { + "name": "repeat-bold", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "repeat-once-bold", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "replit-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,logos,ide,editor,coding", + "set_id": 1 + }, + { + "name": "resize-bold", + "content": "", + "style": "outline", + "tags": "*new*,maximize,expand,grow", + "set_id": 1 + }, + { + "name": "rewind-bold", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "rewind-circle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "road-horizon-bold", + "content": "", + "style": "outline", + "tags": "trip,drive,road,travel,transportation,highway", + "set_id": 1 + }, + { + "name": "robot-bold", + "content": "", + "style": "outline", + "tags": "automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "rocket-bold", + "content": "", + "style": "outline", + "tags": "spaceship,launch,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rocket-launch-bold", + "content": "", + "style": "outline", + "tags": "*updated*,spaceship,flying,blastoff,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rows-bold", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "rows-plus-bottom-bold", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rows-plus-top-bold", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rss-bold", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rss-simple-bold", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rug-bold", + "content": "", + "style": "outline", + "tags": "*updated*,tapestry,carpet", + "set_id": 1 + }, + { + "name": "ruler-bold", + "content": "", + "style": "outline", + "tags": "measure,scale,distance", + "set_id": 1 + }, + { + "name": "sailboat-bold", + "content": "", + "style": "outline", + "tags": "*new*,sailing,ship,vehicles,transportation,sports,places,locations", + "set_id": 1 + }, + { + "name": "scales-bold", + "content": "", + "style": "outline", + "tags": "measure,balance,law,justice,government", + "set_id": 1 + }, + { + "name": "scan-bold", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "scan-smiley-bold", + "content": "", + "style": "outline", + "tags": "*new*,facial recognition,face unlock,scanner", + "set_id": 1 + }, + { + "name": "scissors-bold", + "content": "", + "style": "outline", + "tags": "*updated*,cut,snip,clipboard", + "set_id": 1 + }, + { + "name": "scooter-bold", + "content": "", + "style": "outline", + "tags": "vehicles,transportation,travel,transit", + "set_id": 1 + }, + { + "name": "screencast-bold", + "content": "", + "style": "outline", + "tags": "apple,airplay,screencasting,screen share,television,tv", + "set_id": 1 + }, + { + "name": "screwdriver-bold", + "content": "", + "style": "outline", + "tags": "*new*,tools,construction,flathead,drill", + "set_id": 1 + }, + { + "name": "scribble-bold", + "content": "", + "style": "outline", + "tags": "*new*,doodles,squiggle,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scribble-loop-bold", + "content": "", + "style": "outline", + "tags": "doodles,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scroll-bold", + "content": "", + "style": "outline", + "tags": "*updated*,parchment,paper,script,spell,fantasy", + "set_id": 1 + }, + { + "name": "seal-bold", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-check-bold", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-percent-bold", + "content": "", + "style": "outline", + "tags": "*new*,badge,discount,sale,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-question-bold", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-warning-bold", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,errors,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seat-bold", + "content": "", + "style": "outline", + "tags": "*new*,chair,car seat,airplane seat,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "seatbelt-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,safety", + "set_id": 1 + }, + { + "name": "security-camera-bold", + "content": "", + "style": "outline", + "tags": "*new*,cctv,surveillance,video,monitor,motion detector,safety", + "set_id": 1 + }, + { + "name": "selection-bold", + "content": "", + "style": "outline", + "tags": "marquis,select,square dashed", + "set_id": 1 + }, + { + "name": "selection-all-bold", + "content": "", + "style": "outline", + "tags": "marquis,select all", + "set_id": 1 + }, + { + "name": "selection-background-bold", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-foreground-bold", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-inverse-bold", + "content": "", + "style": "outline", + "tags": "marquis,invert", + "set_id": 1 + }, + { + "name": "selection-plus-bold", + "content": "", + "style": "outline", + "tags": "marquis,add", + "set_id": 1 + }, + { + "name": "selection-slash-bold", + "content": "", + "style": "outline", + "tags": "marquis,unselect", + "set_id": 1 + }, + { + "name": "shapes-bold", + "content": "", + "style": "outline", + "tags": "geometry,square,circle,triangle", + "set_id": 1 + }, + { + "name": "share-bold", + "content": "", + "style": "outline", + "tags": "send to,export,arrows", + "set_id": 1 + }, + { + "name": "share-fat-bold", + "content": "", + "style": "outline", + "tags": "export,send to", + "set_id": 1 + }, + { + "name": "share-network-bold", + "content": "", + "style": "outline", + "tags": "send to,export", + "set_id": 1 + }, + { + "name": "shield-bold", + "content": "", + "style": "outline", + "tags": "badge,security,secured,defense,defended,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-check-bold", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-checkered-bold", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-chevron-bold", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-plus-bold", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-slash-bold", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,disabled", + "set_id": 1 + }, + { + "name": "shield-star-bold", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-warning-bold", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,errors", + "set_id": 1 + }, + { + "name": "shipping-container-bold", + "content": "", + "style": "outline", + "tags": "*new*,shipping,transportation,places,locations", + "set_id": 1 + }, + { + "name": "shirt-folded-bold", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "shooting-star-bold", + "content": "", + "style": "outline", + "tags": "wish,comet,meteor", + "set_id": 1 + }, + { + "name": "shopping-bag-bold", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-bag-open-bold", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-bold", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-simple-bold", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shovel-bold", + "content": "", + "style": "outline", + "tags": "*new*,tools,digging,construction", + "set_id": 1 + }, + { + "name": "shower-bold", + "content": "", + "style": "outline", + "tags": "bath,bathtub,bathroom,faucet", + "set_id": 1 + }, + { + "name": "shrimp-bold", + "content": "", + "style": "outline", + "tags": "food,seafood,prawn", + "set_id": 1 + }, + { + "name": "shuffle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-angular-bold", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-simple-bold", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "sidebar-bold", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sidebar-simple-bold", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sigma-bold", + "content": "", + "style": "outline", + "tags": "σ,symbol,mathematics,sum", + "set_id": 1 + }, + { + "name": "sign-in-bold", + "content": "", + "style": "outline", + "tags": "*updated*,signin,login,log in,enter", + "set_id": 1 + }, + { + "name": "sign-out-bold", + "content": "", + "style": "outline", + "tags": "*updated*,signout,logout,log out,exit", + "set_id": 1 + }, + { + "name": "signature-bold", + "content": "", + "style": "outline", + "tags": "*updated*,sign,autograph,verify", + "set_id": 1 + }, + { + "name": "signpost-bold", + "content": "", + "style": "outline", + "tags": "direction,traffic,road sign,transit,transportation", + "set_id": 1 + }, + { + "name": "sim-card-bold", + "content": "", + "style": "outline", + "tags": "*updated*,cellular,cellphone,mobile", + "set_id": 1 + }, + { + "name": "siren-bold", + "content": "", + "style": "outline", + "tags": "alarm,police,lights,warning", + "set_id": 1 + }, + { + "name": "sketch-logo-bold", + "content": "", + "style": "outline", + "tags": "drawing,art,illustration,ui,interface,prototype,prototyping,gemstone,diamond", + "set_id": 1 + }, + { + "name": "skip-back-bold", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-back-circle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-forward-bold", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skip-forward-circle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skull-bold", + "content": "", + "style": "outline", + "tags": "death,dead,kill", + "set_id": 1 + }, + { + "name": "skype-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,chat,video conference", + "set_id": 1 + }, + { + "name": "slack-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,messaging", + "set_id": 1 + }, + { + "name": "sliders-bold", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "sliders-horizontal-bold", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "slideshow-bold", + "content": "", + "style": "outline", + "tags": "pictures,images,photography,gallery,carousel", + "set_id": 1 + }, + { + "name": "smiley-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-angry-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,mad,frown", + "set_id": 1 + }, + { + "name": "smiley-blank-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,no face", + "set_id": 1 + }, + { + "name": "smiley-meh-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,neutral", + "set_id": 1 + }, + { + "name": "smiley-melting-bold", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,embarrassment,sarcasm,shame,hot,heat", + "set_id": 1 + }, + { + "name": "smiley-nervous-bold", + "content": "", + "style": "outline", + "tags": "*updated*,face,emoji,anxious,uncomfortable,uneasy,queasy,sick,ill", + "set_id": 1 + }, + { + "name": "smiley-sad-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,unhappy,frowning", + "set_id": 1 + }, + { + "name": "smiley-sticker-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-wink-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,winking,flirting,cute", + "set_id": 1 + }, + { + "name": "smiley-x-eyes-bold", + "content": "", + "style": "outline", + "tags": "face,emoji,dead,killed,unconscious", + "set_id": 1 + }, + { + "name": "snapchat-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,messaging,social media", + "set_id": 1 + }, + { + "name": "sneaker-bold", + "content": "", + "style": "outline", + "tags": "clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "sneaker-move-bold", + "content": "", + "style": "outline", + "tags": "*updated*,clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "snowflake-bold", + "content": "", + "style": "outline", + "tags": "meteorology,snowy,snowing,snowstorm", + "set_id": 1 + }, + { + "name": "soccer-ball-bold", + "content": "", + "style": "outline", + "tags": "*updated*,sports,football,mls", + "set_id": 1 + }, + { + "name": "sock-bold", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "solar-panel-bold", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "solar-roof-bold", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "sort-ascending-bold", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,increasing,a to z,arrows,list", + "set_id": 1 + }, + { + "name": "sort-descending-bold", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,decreasing,z to a,arrows,list", + "set_id": 1 + }, + { + "name": "soundcloud-logo-bold", + "content": "", + "style": "outline", + "tags": "music,social media,logos", + "set_id": 1 + }, + { + "name": "spade-bold", + "content": "", + "style": "outline", + "tags": "spades,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "sparkle-bold", + "content": "", + "style": "outline", + "tags": "star,rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "speaker-hifi-bold", + "content": "", + "style": "outline", + "tags": "music,audio,sound,stereo", + "set_id": 1 + }, + { + "name": "speaker-high-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-low-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-none-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-high-bold", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-low-bold", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-none-bold", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-slash-bold", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-simple-x-bold", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speaker-slash-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-x-bold", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speedometer-bold", + "content": "", + "style": "outline", + "tags": "*new*,gauge,dashboard,meter,speed,odometer,performance", + "set_id": 1 + }, + { + "name": "sphere-bold", + "content": "", + "style": "outline", + "tags": "*new*,circle,ball,3d,mesh,cad,model", + "set_id": 1 + }, + { + "name": "spinner-bold", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-ball-bold", + "content": "", + "style": "outline", + "tags": "*new*,loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-gap-bold", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spiral-bold", + "content": "", + "style": "outline", + "tags": "*updated*,spin,rotate,dizzy", + "set_id": 1 + }, + { + "name": "split-horizontal-bold", + "content": "", + "style": "outline", + "tags": "resize,columns", + "set_id": 1 + }, + { + "name": "split-vertical-bold", + "content": "", + "style": "outline", + "tags": "resize,rows", + "set_id": 1 + }, + { + "name": "spotify-logo-bold", + "content": "", + "style": "outline", + "tags": "music,player,streaming", + "set_id": 1 + }, + { + "name": "spray-bottle-bold", + "content": "", + "style": "outline", + "tags": "*new*,cleaner,cleaning", + "set_id": 1 + }, + { + "name": "square-bold", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "square-half-bold", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-half-bottom-bold", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-logo-bold", + "content": "", + "style": "outline", + "tags": "squareup,payment", + "set_id": 1 + }, + { + "name": "square-split-horizontal-bold", + "content": "", + "style": "outline", + "tags": "shapes,polygons,columns", + "set_id": 1 + }, + { + "name": "square-split-vertical-bold", + "content": "", + "style": "outline", + "tags": "shapes,polygons,rows", + "set_id": 1 + }, + { + "name": "squares-four-bold", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,apps,applications,grid,table,microsoft,logos", + "set_id": 1 + }, + { + "name": "stack-bold", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stack-minus-bold", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,remove,delete", + "set_id": 1 + }, + { + "name": "stack-overflow-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,code", + "set_id": 1 + }, + { + "name": "stack-plus-bold", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,add", + "set_id": 1 + }, + { + "name": "stack-simple-bold", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stairs-bold", + "content": "", + "style": "outline", + "tags": "staircase,steps,escalator,exit,signs", + "set_id": 1 + }, + { + "name": "stamp-bold", + "content": "", + "style": "outline", + "tags": "clone,seal,official", + "set_id": 1 + }, + { + "name": "standard-definition-bold", + "content": "", + "style": "outline", + "tags": "*new*,sd,resolution,video", + "set_id": 1 + }, + { + "name": "star-bold", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-and-crescent-bold", + "content": "", + "style": "outline", + "tags": "islam,muslim,moon,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "star-four-bold", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-half-bold", + "content": "", + "style": "outline", + "tags": "rate,ratings", + "set_id": 1 + }, + { + "name": "star-of-david-bold", + "content": "", + "style": "outline", + "tags": "judaism,jewish,hexagram,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "steam-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,gaming,games", + "set_id": 1 + }, + { + "name": "steering-wheel-bold", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobiles,driving", + "set_id": 1 + }, + { + "name": "steps-bold", + "content": "", + "style": "outline", + "tags": "stairs,staircase,exit,signs", + "set_id": 1 + }, + { + "name": "stethoscope-bold", + "content": "", + "style": "outline", + "tags": "hospital,medical,medicine,injury,safety,emergency,doctor,heart", + "set_id": 1 + }, + { + "name": "sticker-bold", + "content": "", + "style": "outline", + "tags": "stickers,sticker pack,labels", + "set_id": 1 + }, + { + "name": "stool-bold", + "content": "", + "style": "outline", + "tags": "chair,seat,furniture", + "set_id": 1 + }, + { + "name": "stop-bold", + "content": "", + "style": "outline", + "tags": "music,audio", + "set_id": 1 + }, + { + "name": "stop-circle-bold", + "content": "", + "style": "outline", + "tags": "music,audio,round", + "set_id": 1 + }, + { + "name": "storefront-bold", + "content": "", + "style": "outline", + "tags": "shops,shopping,markets,stores,buildings,places,locations", + "set_id": 1 + }, + { + "name": "strategy-bold", + "content": "", + "style": "outline", + "tags": "sports,strategem,plan,tic-tac-toe", + "set_id": 1 + }, + { + "name": "stripe-logo-bold", + "content": "", + "style": "outline", + "tags": "payment", + "set_id": 1 + }, + { + "name": "student-bold", + "content": "", + "style": "outline", + "tags": "pupil,graduate,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "subset-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,⊆,subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subset-proper-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,⊂,proper subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subtitles-bold", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "subtitles-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,subtitles,television,tv,transcribed,transcription,accessibility,a11y,disabled", + "set_id": 1 + }, + { + "name": "subtract-bold", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subtract-square-bold", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subway-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,underground,train,tunnel,metro,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "suitcase-bold", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "suitcase-rolling-bold", + "content": "", + "style": "outline", + "tags": "suitcase,luggage,travel,transportation", + "set_id": 1 + }, + { + "name": "suitcase-simple-bold", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "sun-bold", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,lighten,brighten", + "set_id": 1 + }, + { + "name": "sun-dim-bold", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,darken", + "set_id": 1 + }, + { + "name": "sun-horizon-bold", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,sunrise,sunset", + "set_id": 1 + }, + { + "name": "sunglasses-bold", + "content": "", + "style": "outline", + "tags": "vision,sun,spectacles", + "set_id": 1 + }, + { + "name": "superset-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,⊇,superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "superset-proper-of-bold", + "content": "", + "style": "outline", + "tags": "*new*,⊃,proper superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "swap-bold", + "content": "", + "style": "outline", + "tags": "layers,replace,exchange,reverse", + "set_id": 1 + }, + { + "name": "swatches-bold", + "content": "", + "style": "outline", + "tags": "colors,color picker,samples,pantone", + "set_id": 1 + }, + { + "name": "swimming-pool-bold", + "content": "", + "style": "outline", + "tags": "swim,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "sword-bold", + "content": "", + "style": "outline", + "tags": "weapon,knife,dagger,gladius,video games,rpg,gaming,war", + "set_id": 1 + }, + { + "name": "synagogue-bold", + "content": "", + "style": "outline", + "tags": "jewish,judaism,temple,religion,worship", + "set_id": 1 + }, + { + "name": "syringe-bold", + "content": "", + "style": "outline", + "tags": "needle,hypodermic,vaccine,medicine,doctor,shot,hospital", + "set_id": 1 + }, + { + "name": "t-shirt-bold", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "table-bold", + "content": "", + "style": "outline", + "tags": "tables,tabular,speadsheets,excel,grid,form", + "set_id": 1 + }, + { + "name": "tabs-bold", + "content": "", + "style": "outline", + "tags": "*updated*,browser,window,folders,files", + "set_id": 1 + }, + { + "name": "tag-bold", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "tag-chevron-bold", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale", + "set_id": 1 + }, + { + "name": "tag-simple-bold", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "target-bold", + "content": "", + "style": "outline", + "tags": "bullseye,radar,archery,accuracy,precision", + "set_id": 1 + }, + { + "name": "taxi-bold", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,livery,limousine,uber", + "set_id": 1 + }, + { + "name": "tea-bag-bold", + "content": "", + "style": "outline", + "tags": "*new*,drinks,beverages,sachet,caffeine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "telegram-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "television-bold", + "content": "", + "style": "outline", + "tags": "screen,tv,displays", + "set_id": 1 + }, + { + "name": "television-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,screen,tv,displays", + "set_id": 1 + }, + { + "name": "tennis-ball-bold", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "tent-bold", + "content": "", + "style": "outline", + "tags": "camping,outdoors,tarp", + "set_id": 1 + }, + { + "name": "terminal-bold", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "terminal-window-bold", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "test-tube-bold", + "content": "", + "style": "outline", + "tags": "science,chemistry,experiment,vial", + "set_id": 1 + }, + { + "name": "text-a-underline-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "text-aa-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-align-center-bold", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,centered", + "set_id": 1 + }, + { + "name": "text-align-justify-bold", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,justified", + "set_id": 1 + }, + { + "name": "text-align-left-bold", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush left", + "set_id": 1 + }, + { + "name": "text-align-right-bold", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush right", + "set_id": 1 + }, + { + "name": "text-b-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,bold,boldface,emphasis", + "set_id": 1 + }, + { + "name": "text-columns-bold", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,article", + "set_id": 1 + }, + { + "name": "text-h-bold", + "content": "", + "style": "outline", + "tags": "heading,typography,print", + "set_id": 1 + }, + { + "name": "text-h-five-bold", + "content": "", + "style": "outline", + "tags": "heading,h5,typography,print", + "set_id": 1 + }, + { + "name": "text-h-four-bold", + "content": "", + "style": "outline", + "tags": "*updated*,heading,h4,typography,print", + "set_id": 1 + }, + { + "name": "text-h-one-bold", + "content": "", + "style": "outline", + "tags": "heading,h1,typography,print", + "set_id": 1 + }, + { + "name": "text-h-six-bold", + "content": "", + "style": "outline", + "tags": "heading,h6,typography,print", + "set_id": 1 + }, + { + "name": "text-h-three-bold", + "content": "", + "style": "outline", + "tags": "heading,h3,typography,print", + "set_id": 1 + }, + { + "name": "text-h-two-bold", + "content": "", + "style": "outline", + "tags": "heading,h2,typography,print", + "set_id": 1 + }, + { + "name": "text-indent-bold", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,menu", + "set_id": 1 + }, + { + "name": "text-italic-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,slant,oblique,stress,emphasis,calligraphy", + "set_id": 1 + }, + { + "name": "text-outdent-bold", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,unindent,dedent,menu", + "set_id": 1 + }, + { + "name": "text-strikethrough-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,struck,remove,delete,change", + "set_id": 1 + }, + { + "name": "text-subscript-bold", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,power,exponent,calculator", + "set_id": 1 + }, + { + "name": "text-superscript-bold", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,calculator", + "set_id": 1 + }, + { + "name": "text-t-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-t-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,typography,typeface,print,font,formatting,clear", + "set_id": 1 + }, + { + "name": "text-underline-bold", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "textbox-bold", + "content": "", + "style": "outline", + "tags": "input,cursor,field", + "set_id": 1 + }, + { + "name": "thermometer-bold", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "thermometer-cold-bold", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit", + "set_id": 1 + }, + { + "name": "thermometer-hot-bold", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,warm", + "set_id": 1 + }, + { + "name": "thermometer-simple-bold", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "threads-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,meta,instagram,social media", + "set_id": 1 + }, + { + "name": "three-d-bold", + "content": "", + "style": "outline", + "tags": "*new*,3d,cad,model", + "set_id": 1 + }, + { + "name": "thumbs-down-bold", + "content": "", + "style": "outline", + "tags": "dislike,hate,emoji,no", + "set_id": 1 + }, + { + "name": "thumbs-up-bold", + "content": "", + "style": "outline", + "tags": "like,love,favorited,favorites,emoji,yes", + "set_id": 1 + }, + { + "name": "ticket-bold", + "content": "", + "style": "outline", + "tags": "ticketstub,movie ticket,entry,admissions,events", + "set_id": 1 + }, + { + "name": "tidal-logo-bold", + "content": "", + "style": "outline", + "tags": "music,logos", + "set_id": 1 + }, + { + "name": "tiktok-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "tilde-bold", + "content": "", + "style": "outline", + "tags": "*new*,~,∼,proportional,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "timer-bold", + "content": "", + "style": "outline", + "tags": "clock,alarm,schedule,events,stopwatch,sports", + "set_id": 1 + }, + { + "name": "tip-jar-bold", + "content": "", + "style": "outline", + "tags": "*new*,give,deposit,donation,savings,money", + "set_id": 1 + }, + { + "name": "tipi-bold", + "content": "", + "style": "outline", + "tags": "teepee,lodge,tent,outdoors,camping,tarp", + "set_id": 1 + }, + { + "name": "tire-bold", + "content": "", + "style": "outline", + "tags": "*new*,wheel,vehicles,transportation", + "set_id": 1 + }, + { + "name": "toggle-left-bold", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toggle-right-bold", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toilet-bold", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toilet-paper-bold", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toolbox-bold", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "tooth-bold", + "content": "", + "style": "outline", + "tags": "teeth,dentistry,medical,medicine,doctor,cavity", + "set_id": 1 + }, + { + "name": "tornado-bold", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,twister,storm,wind,disaster", + "set_id": 1 + }, + { + "name": "tote-bold", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "tote-simple-bold", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "towel-bold", + "content": "", + "style": "outline", + "tags": "*new*,clothing,linen,hotel,beach,pool,swimming,shower,bath", + "set_id": 1 + }, + { + "name": "tractor-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "trademark-bold", + "content": "", + "style": "outline", + "tags": "tm,®,™,intellectual property", + "set_id": 1 + }, + { + "name": "trademark-registered-bold", + "content": "", + "style": "outline", + "tags": "®,™,intellectual property", + "set_id": 1 + }, + { + "name": "traffic-cone-bold", + "content": "", + "style": "outline", + "tags": "pylon,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-sign-bold", + "content": "", + "style": "outline", + "tags": "road signs,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-signal-bold", + "content": "", + "style": "outline", + "tags": "stop light,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "train-bold", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-regional-bold", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,freight,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-simple-bold", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "tram-bold", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,light rail,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "translate-bold", + "content": "", + "style": "outline", + "tags": "translation,languages,internationalization,i18n,speech", + "set_id": 1 + }, + { + "name": "trash-bold", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "trash-simple-bold", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "tray-bold", + "content": "", + "style": "outline", + "tags": "inbox,mailbox,bin", + "set_id": 1 + }, + { + "name": "tray-arrow-down-bold", + "content": "", + "style": "outline", + "tags": "inbox,saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "tray-arrow-up-bold", + "content": "", + "style": "outline", + "tags": "*new*,outbox,archival,unarchive,uploaded,uploading", + "set_id": 1 + }, + { + "name": "treasure-chest-bold", + "content": "", + "style": "outline", + "tags": "*new*,loot,lootbox,inventory,rewards,gaming,pirate", + "set_id": 1 + }, + { + "name": "tree-bold", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-evergreen-bold", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,pine,conifer,green,environmental", + "set_id": 1 + }, + { + "name": "tree-palm-bold", + "content": "", + "style": "outline", + "tags": "tropical,beach,plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-structure-bold", + "content": "", + "style": "outline", + "tags": "data structures,family tree,genealogy,hierarchy,taxonomy,charts,flowchart", + "set_id": 1 + }, + { + "name": "tree-view-bold", + "content": "", + "style": "outline", + "tags": "*new*,hierarchy", + "set_id": 1 + }, + { + "name": "trend-down-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,decrease,arrows", + "set_id": 1 + }, + { + "name": "trend-up-bold", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,increase,arrows", + "set_id": 1 + }, + { + "name": "triangle-bold", + "content": "", + "style": "outline", + "tags": "3,shapes,polygons", + "set_id": 1 + }, + { + "name": "triangle-dashed-bold", + "content": "", + "style": "outline", + "tags": "*new*,3,shapes,polygons,missing", + "set_id": 1 + }, + { + "name": "trolley-bold", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trolley-suitcase-bold", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trophy-bold", + "content": "", + "style": "outline", + "tags": "ribbons,medals,winning,victory,awards,prize", + "set_id": 1 + }, + { + "name": "truck-bold", + "content": "", + "style": "outline", + "tags": "trucks,cars,vehicles,automobile,shipping,delivery", + "set_id": 1 + }, + { + "name": "truck-trailer-bold", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,automobile,shipping,tractor,semi", + "set_id": 1 + }, + { + "name": "tumblr-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,social media,logos", + "set_id": 1 + }, + { + "name": "twitch-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,streaming,livestream,gaming,video games,social media", + "set_id": 1 + }, + { + "name": "twitter-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,social media,tweets,birds", + "set_id": 1 + }, + { + "name": "umbrella-bold", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "umbrella-simple-bold", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "union-bold", + "content": "", + "style": "outline", + "tags": "*new*,∪,union,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "unite-bold", + "content": "", + "style": "outline", + "tags": "*updated*,round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "unite-square-bold", + "content": "", + "style": "outline", + "tags": "join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "upload-bold", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "upload-simple-bold", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "usb-bold", + "content": "", + "style": "outline", + "tags": "serial,port,plug,peripheral,device", + "set_id": 1 + }, + { + "name": "user-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-check-bold", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-circle-check-bold", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-dashed-bold", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,pending,missing,removed", + "set_id": 1 + }, + { + "name": "user-circle-gear-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-circle-minus-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-circle-plus-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-focus-bold", + "content": "", + "style": "outline", + "tags": "identification,biometrics,facial recognition,profile,person,account,autofocus", + "set_id": 1 + }, + { + "name": "user-gear-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-list-bold", + "content": "", + "style": "outline", + "tags": "person,users,profiles,accounts,members,address book", + "set_id": 1 + }, + { + "name": "user-minus-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-plus-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-rectangle-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-sound-bold", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,speech,speaking,voice", + "set_id": 1 + }, + { + "name": "user-square-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-switch-bold", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,login,logout,signin,signout,settings,preferences", + "set_id": 1 + }, + { + "name": "users-bold", + "content": "", + "style": "outline", + "tags": "user,group,team,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-four-bold", + "content": "", + "style": "outline", + "tags": "user,group,team,department,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-three-bold", + "content": "", + "style": "outline", + "tags": "user,group,team,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "van-bold", + "content": "", + "style": "outline", + "tags": "westfalia,microbus,vanagon,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "vault-bold", + "content": "", + "style": "outline", + "tags": "safe,bank,security,secured,authentication,authenticated,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "vector-three-bold", + "content": "", + "style": "outline", + "tags": "*new*,3d,xyz,cartesian,coordinates,plane,volume,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vector-two-bold", + "content": "", + "style": "outline", + "tags": "*new*,2d,xy,cartesian,coordinates,plane,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vibrate-bold", + "content": "", + "style": "outline", + "tags": "audio,volume,viration,ringer,calls,silent,silenced", + "set_id": 1 + }, + { + "name": "video-bold", + "content": "", + "style": "outline", + "tags": "training,course,education,tutorial", + "set_id": 1 + }, + { + "name": "video-camera-bold", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "video-camera-slash-bold", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording,disabled", + "set_id": 1 + }, + { + "name": "video-conference-bold", + "content": "", + "style": "outline", + "tags": "*new*,video call,zoom,skype,discord,facetime,meeting", + "set_id": 1 + }, + { + "name": "vignette-bold", + "content": "", + "style": "outline", + "tags": "photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "vinyl-record-bold", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music,ep,lp", + "set_id": 1 + }, + { + "name": "virtual-reality-bold", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,headset,metaverse", + "set_id": 1 + }, + { + "name": "virus-bold", + "content": "", + "style": "outline", + "tags": "germs,disease,illness", + "set_id": 1 + }, + { + "name": "visor-bold", + "content": "", + "style": "outline", + "tags": "*new*,goggles,vision", + "set_id": 1 + }, + { + "name": "voicemail-bold", + "content": "", + "style": "outline", + "tags": "phonecalls,missed,recording,telephone,landline", + "set_id": 1 + }, + { + "name": "volleyball-bold", + "content": "", + "style": "outline", + "tags": "sports", + "set_id": 1 + }, + { + "name": "wall-bold", + "content": "", + "style": "outline", + "tags": "firewall,security,secured,blocks,bricks", + "set_id": 1 + }, + { + "name": "wallet-bold", + "content": "", + "style": "outline", + "tags": "money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "warehouse-bold", + "content": "", + "style": "outline", + "tags": "storage,industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "warning-bold", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-circle-bold", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,round", + "set_id": 1 + }, + { + "name": "warning-diamond-bold", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-octagon-bold", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,8,eight", + "set_id": 1 + }, + { + "name": "washing-machine-bold", + "content": "", + "style": "outline", + "tags": "*new*,clothing,laundry,cleaning", + "set_id": 1 + }, + { + "name": "watch-bold", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,clock,wristwatch,wearable", + "set_id": 1 + }, + { + "name": "wave-sawtooth-bold", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-sine-bold", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-square-bold", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-triangle-bold", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "waveform-bold", + "content": "", + "style": "outline", + "tags": "*updated*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waveform-slash-bold", + "content": "", + "style": "outline", + "tags": "*new*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waves-bold", + "content": "", + "style": "outline", + "tags": "ocean,tides,surf", + "set_id": 1 + }, + { + "name": "webcam-bold", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webcam-slash-bold", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webhooks-logo-bold", + "content": "", + "style": "outline", + "tags": "api", + "set_id": 1 + }, + { + "name": "wechat-logo-bold", + "content": "", + "style": "outline", + "tags": "weixin,logos", + "set_id": 1 + }, + { + "name": "whatsapp-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "wheelchair-bold", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wheelchair-motion-bold", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wifi-high-bold", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-low-bold", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-medium-bold", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-none-bold", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-slash-bold", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disabled,disconnected", + "set_id": 1 + }, + { + "name": "wifi-x-bold", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "wind-bold", + "content": "", + "style": "outline", + "tags": "meteorology,windy,stormy,blustery,gusty,air", + "set_id": 1 + }, + { + "name": "windmill-bold", + "content": "", + "style": "outline", + "tags": "*new*,turbine,energy,renewable,sustainability,countryside,landscape,green,power,buildings", + "set_id": 1 + }, + { + "name": "windows-logo-bold", + "content": "", + "style": "outline", + "tags": "microsoft,computers", + "set_id": 1 + }, + { + "name": "wine-bold", + "content": "", + "style": "outline", + "tags": "drinks,beverages,vineyard,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "wrench-bold", + "content": "", + "style": "outline", + "tags": "settings,setup,preferences,tools,machinery,mechanical,repairs", + "set_id": 1 + }, + { + "name": "x-bold", + "content": "", + "style": "outline", + "tags": "×,closed,cancelled,dismissed,times,multiply,mulitplication,product,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "x-circle-bold", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed,round", + "set_id": 1 + }, + { + "name": "x-logo-bold", + "content": "", + "style": "outline", + "tags": "*new*,twitter,logos,social media,tweets", + "set_id": 1 + }, + { + "name": "x-square-bold", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed", + "set_id": 1 + }, + { + "name": "yarn-bold", + "content": "", + "style": "outline", + "tags": "*new*,knitting,sewing", + "set_id": 1 + }, + { + "name": "yin-yang-bold", + "content": "", + "style": "outline", + "tags": "symbol,good,evil,black,white", + "set_id": 1 + }, + { + "name": "youtube-logo-bold", + "content": "", + "style": "outline", + "tags": "logos,google,videos,movies,social media", + "set_id": 1 + }, + { + "name": "acorn-fill", + "content": "", + "style": "outline", + "tags": "*new*,savings,nut,vegetable,veggies,food,groceries,market", + "set_id": 1 + }, + { + "name": "address-book-fill", + "content": "", + "style": "outline", + "tags": "contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "address-book-tabs-fill", + "content": "", + "style": "outline", + "tags": "*new*,contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "air-traffic-control-fill", + "content": "", + "style": "outline", + "tags": "airport,travel,transportation,buildings", + "set_id": 1 + }, + { + "name": "airplane-fill", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "airplane-in-flight-fill", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-landing-fill", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-takeoff-fill", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplane-taxiing-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-tilt-fill", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplay-fill", + "content": "", + "style": "outline", + "tags": "apple,screencasting,television,tv", + "set_id": 1 + }, + { + "name": "alarm-fill", + "content": "", + "style": "outline", + "tags": "times,timer,clock,schedule,events,watch", + "set_id": 1 + }, + { + "name": "alien-fill", + "content": "", + "style": "outline", + "tags": "ufo,space,flying saucer,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "align-bottom-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-bottom-simple-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-center-horizontal-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-horizontal-simple-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-simple-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-left-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-left-simple-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-right-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-right-simple-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-top-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "align-top-simple-fill", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "amazon-logo-fill", + "content": "", + "style": "outline", + "tags": "ecommerce,shopping,logos", + "set_id": 1 + }, + { + "name": "ambulance-fill", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,doctor,vehicles", + "set_id": 1 + }, + { + "name": "anchor-fill", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "anchor-simple-fill", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "android-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,google,mobile,phone,cellular,cellphone", + "set_id": 1 + }, + { + "name": "angle-fill", + "content": "", + "style": "outline", + "tags": "*new*,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "angular-logo-fill", + "content": "", + "style": "outline", + "tags": "framework,javascript,google,web", + "set_id": 1 + }, + { + "name": "aperture-fill", + "content": "", + "style": "outline", + "tags": "photography,cameras,pictures,lens", + "set_id": 1 + }, + { + "name": "app-store-logo-fill", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "app-window-fill", + "content": "", + "style": "outline", + "tags": "windows,software,programs,applications", + "set_id": 1 + }, + { + "name": "apple-logo-fill", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "apple-podcasts-logo-fill", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "approximate-equals-fill", + "content": "", + "style": "outline", + "tags": "*new*,≈,is approximately equal to,congruent,equality,equivalent,equivalence,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "archive-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "armchair-fill", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "arrow-arc-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-arc-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply-all", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply,re", + "set_id": 1 + }, + { + "name": "arrow-bend-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,forward,fwd", + "set_id": 1 + }, + { + "name": "arrow-circle-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-clockwise-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-counter-clockwise-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-fat-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,caps lock,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,shift,outlined", + "set_id": 1 + }, + { + "name": "arrow-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,bottom", + "set_id": 1 + }, + { + "name": "arrow-line-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,top", + "set_id": 1 + }, + { + "name": "arrow-line-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-in-fill", + "content": "", + "style": "outline", + "tags": "import,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-out-fill", + "content": "", + "style": "outline", + "tags": "export,external,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-u-down-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-down-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-down-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-up-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-left-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-right-fill", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-clockwise-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,sync,synchronize,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-counter-clockwise-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-down-up-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-horizontal-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,left,right", + "set_id": 1 + }, + { + "name": "arrows-in-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-cardinal-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-line-horizontal-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-line-vertical-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize", + "set_id": 1 + }, + { + "name": "arrows-left-right-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-merge-fill", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,join,combine", + "set_id": 1 + }, + { + "name": "arrows-out-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,grow", + "set_id": 1 + }, + { + "name": "arrows-out-cardinal-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,pan,move,grow", + "set_id": 1 + }, + { + "name": "arrows-out-line-horizontal-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-line-vertical-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize", + "set_id": 1 + }, + { + "name": "arrows-split-fill", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,fork", + "set_id": 1 + }, + { + "name": "arrows-vertical-fill", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,up,down", + "set_id": 1 + }, + { + "name": "article-fill", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-medium-fill", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-ny-times-fill", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,news,newspaper,nyt,new york times", + "set_id": 1 + }, + { + "name": "asclepius-fill", + "content": "", + "style": "outline", + "tags": "*new*,caduceus,staff,mythology,rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor,hospital,snake,mercury,hermes", + "set_id": 1 + }, + { + "name": "asterisk-fill", + "content": "", + "style": "outline", + "tags": "star,wildcard,bullet point,6,emergency", + "set_id": 1 + }, + { + "name": "asterisk-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,star,wildcard,bullet point,5,emergency", + "set_id": 1 + }, + { + "name": "at-fill", + "content": "", + "style": "outline", + "tags": "@,address,email,at symbol,commercial at,arobase", + "set_id": 1 + }, + { + "name": "atom-fill", + "content": "", + "style": "outline", + "tags": "atomic,nucleus,nuclear,reactor,science,physics,electron,automation,react", + "set_id": 1 + }, + { + "name": "avocado-fill", + "content": "", + "style": "outline", + "tags": "*new*,food,vegetable,veggie,fruit,groceries,market", + "set_id": 1 + }, + { + "name": "axe-fill", + "content": "", + "style": "outline", + "tags": "*new*,tools,carpentry,forestry,construction", + "set_id": 1 + }, + { + "name": "baby-fill", + "content": "", + "style": "outline", + "tags": "infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "baby-carriage-fill", + "content": "", + "style": "outline", + "tags": "*new*,pram,stroller,infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "backpack-fill", + "content": "", + "style": "outline", + "tags": "knapsack,camping,school,bag", + "set_id": 1 + }, + { + "name": "backspace-fill", + "content": "", + "style": "outline", + "tags": "keyboard,remove,delete", + "set_id": 1 + }, + { + "name": "bag-fill", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "bag-simple-fill", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "balloon-fill", + "content": "", + "style": "outline", + "tags": "helium,birthday,party", + "set_id": 1 + }, + { + "name": "bandaids-fill", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,first aid,injury", + "set_id": 1 + }, + { + "name": "bank-fill", + "content": "", + "style": "outline", + "tags": "banking,checking,money,savings,deposit,withdraw,places,locations", + "set_id": 1 + }, + { + "name": "barbell-fill", + "content": "", + "style": "outline", + "tags": "gym,weights,dumbbells,strength training,workout,exercises,fitness", + "set_id": 1 + }, + { + "name": "barcode-fill", + "content": "", + "style": "outline", + "tags": "upc,qr,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "barn-fill", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,buildings,farming,agriculture", + "set_id": 1 + }, + { + "name": "barricade-fill", + "content": "", + "style": "outline", + "tags": "construction,safety,gate", + "set_id": 1 + }, + { + "name": "baseball-fill", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "baseball-cap-fill", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sports,hat", + "set_id": 1 + }, + { + "name": "baseball-helmet-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,mlb", + "set_id": 1 + }, + { + "name": "basket-fill", + "content": "", + "style": "outline", + "tags": "ecommerce,market,cart,buying,shopping,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "basketball-fill", + "content": "", + "style": "outline", + "tags": "sports,nba", + "set_id": 1 + }, + { + "name": "bathtub-fill", + "content": "", + "style": "outline", + "tags": "bath,shower,bathroom,faucet", + "set_id": 1 + }, + { + "name": "battery-charging-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-charging-vertical-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-empty-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-full-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,filled", + "set_id": 1 + }, + { + "name": "battery-high-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-low-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-medium-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-vertical-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-empty-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-vertical-full-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-high-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-low-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-medium-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-warning-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "battery-warning-vertical-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "beach-ball-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,ocean,party", + "set_id": 1 + }, + { + "name": "beanie-fill", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,sports,hat,winter", + "set_id": 1 + }, + { + "name": "bed-fill", + "content": "", + "style": "outline", + "tags": "hotels,accommodations,sleeping,places,locations,medical,hospital", + "set_id": 1 + }, + { + "name": "beer-bottle-fill", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "beer-stein-fill", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "behance-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,illustration,ui,interface", + "set_id": 1 + }, + { + "name": "bell-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-ringing-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-ringing-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-slash-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,silent,silenced,disabled", + "set_id": 1 + }, + { + "name": "bell-simple-z-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "bell-slash-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,silent,silenced,ringer,calls,disabled", + "set_id": 1 + }, + { + "name": "bell-z-fill", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "belt-fill", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "bezier-curve-fill", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "bicycle-fill", + "content": "", + "style": "outline", + "tags": "bikers,bicycling,cyclists,transit,transportation,commuter,exercises,fitness", + "set_id": 1 + }, + { + "name": "binary-fill", + "content": "", + "style": "outline", + "tags": "*new*,digital,0,1,programming,coding,executable", + "set_id": 1 + }, + { + "name": "binoculars-fill", + "content": "", + "style": "outline", + "tags": "telescope,glasses,search,find,explore", + "set_id": 1 + }, + { + "name": "biohazard-fill", + "content": "", + "style": "outline", + "tags": "*new*,contamination,quarantine,toxic,poison,danger,caution", + "set_id": 1 + }, + { + "name": "bird-fill", + "content": "", + "style": "outline", + "tags": "*updated*,animals,pets", + "set_id": 1 + }, + { + "name": "blueprint-fill", + "content": "", + "style": "outline", + "tags": "*new*,architecture,layout,floorplan,building,construction", + "set_id": 1 + }, + { + "name": "bluetooth-fill", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-connected-fill", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-slash-fill", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,disabled", + "set_id": 1 + }, + { + "name": "bluetooth-x-fill", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "boat-fill", + "content": "", + "style": "outline", + "tags": "ferry,ship,cruise,vehicles,public transit,transportation,commuter,traveling,sailing,places,locations", + "set_id": 1 + }, + { + "name": "bomb-fill", + "content": "", + "style": "outline", + "tags": "*new*,gaming,grenade,explosive,war,weapon,fuse", + "set_id": 1 + }, + { + "name": "bone-fill", + "content": "", + "style": "outline", + "tags": "dogbone", + "set_id": 1 + }, + { + "name": "book-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-bookmark-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library,favorites,favorited", + "set_id": 1 + }, + { + "name": "book-open-fill", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-text-fill", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-user-fill", + "content": "", + "style": "outline", + "tags": "*new*,reading,reader,easy read,library,places,locations", + "set_id": 1 + }, + { + "name": "bookmark-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmark-simple-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-simple-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "books-fill", + "content": "", + "style": "outline", + "tags": "reading,reader,bookshelf,library,places,locations", + "set_id": 1 + }, + { + "name": "boot-fill", + "content": "", + "style": "outline", + "tags": "hiking,shoes,sports,exercise", + "set_id": 1 + }, + { + "name": "boules-fill", + "content": "", + "style": "outline", + "tags": "*new*,balls,sports,pétanque,raffa,bocce,boule lyonnaise,lawn bowls", + "set_id": 1 + }, + { + "name": "bounding-box-fill", + "content": "", + "style": "outline", + "tags": "polygon,shapes,outline,corners,rectangle", + "set_id": 1 + }, + { + "name": "bowl-food-fill", + "content": "", + "style": "outline", + "tags": "ramen,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowl-steam-fill", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowling-ball-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,alley", + "set_id": 1 + }, + { + "name": "box-arrow-down-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "box-arrow-up-fill", + "content": "", + "style": "outline", + "tags": "*new*,unarchive,archival,upload", + "set_id": 1 + }, + { + "name": "boxing-glove-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,combat,martial arts,fight,gym", + "set_id": 1 + }, + { + "name": "brackets-angle-fill", + "content": "", + "style": "outline", + "tags": "code,angle brackets,angle braces", + "set_id": 1 + }, + { + "name": "brackets-curly-fill", + "content": "", + "style": "outline", + "tags": "code,curly brackets,curly braces", + "set_id": 1 + }, + { + "name": "brackets-round-fill", + "content": "", + "style": "outline", + "tags": "code,parentheses,round brackets,round braces", + "set_id": 1 + }, + { + "name": "brackets-square-fill", + "content": "", + "style": "outline", + "tags": "code,square brackets,square braces,array", + "set_id": 1 + }, + { + "name": "brain-fill", + "content": "", + "style": "outline", + "tags": "mind,mental", + "set_id": 1 + }, + { + "name": "brandy-fill", + "content": "", + "style": "outline", + "tags": "drinks,beverages,whiskey,cocktail,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "bread-fill", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,bakery,sandwich,gluten,loaf,toast,slice", + "set_id": 1 + }, + { + "name": "bridge-fill", + "content": "", + "style": "outline", + "tags": "travel,transportation,infrastucture", + "set_id": 1 + }, + { + "name": "briefcase-fill", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "briefcase-metal-fill", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "broadcast-fill", + "content": "", + "style": "outline", + "tags": "radio,hotspot,wifi,emit", + "set_id": 1 + }, + { + "name": "broom-fill", + "content": "", + "style": "outline", + "tags": "sweeping,cleaning", + "set_id": 1 + }, + { + "name": "browser-fill", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "browsers-fill", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "bug-fill", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-beetle-fill", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-droid-fill", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,android,google", + "set_id": 1 + }, + { + "name": "building-fill", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "building-apartment-fill", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,buildings", + "set_id": 1 + }, + { + "name": "building-office-fill", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "buildings-fill", + "content": "", + "style": "outline", + "tags": "places,locations,company,business", + "set_id": 1 + }, + { + "name": "bulldozer-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,construction,earth mover,dig,digger", + "set_id": 1 + }, + { + "name": "bus-fill", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "butterfly-fill", + "content": "", + "style": "outline", + "tags": "animals,insects,moth", + "set_id": 1 + }, + { + "name": "cable-car-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,gondola,skiing,mountains,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "cactus-fill", + "content": "", + "style": "outline", + "tags": "*updated*,plants,cacti,desert,western", + "set_id": 1 + }, + { + "name": "cake-fill", + "content": "", + "style": "outline", + "tags": "dessert,birthday,celebration,event", + "set_id": 1 + }, + { + "name": "calculator-fill", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "calendar-fill", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,12", + "set_id": 1 + }, + { + "name": "calendar-blank-fill", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,none", + "set_id": 1 + }, + { + "name": "calendar-check-fill", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,todo,checklist", + "set_id": 1 + }, + { + "name": "calendar-dot-fill", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,today", + "set_id": 1 + }, + { + "name": "calendar-dots-fill", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule", + "set_id": 1 + }, + { + "name": "calendar-heart-fill", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-minus-fill", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete", + "set_id": 1 + }, + { + "name": "calendar-plus-fill", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,add", + "set_id": 1 + }, + { + "name": "calendar-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete,cancel. unavailable", + "set_id": 1 + }, + { + "name": "calendar-star-fill", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-x-fill", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,closed,cancelled", + "set_id": 1 + }, + { + "name": "call-bell-fill", + "content": "", + "style": "outline", + "tags": "service bell,reception,attendant,concierge bell", + "set_id": 1 + }, + { + "name": "camera-fill", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens", + "set_id": 1 + }, + { + "name": "camera-plus-fill", + "content": "", + "style": "outline", + "tags": "photography,pictures,album,add", + "set_id": 1 + }, + { + "name": "camera-rotate-fill", + "content": "", + "style": "outline", + "tags": "photography,pictures,orientation,portrait,landscape,selfie,flip", + "set_id": 1 + }, + { + "name": "camera-slash-fill", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens,disabled", + "set_id": 1 + }, + { + "name": "campfire-fill", + "content": "", + "style": "outline", + "tags": "camping,flame,bonfire,outdoors", + "set_id": 1 + }, + { + "name": "car-fill", + "content": "", + "style": "outline", + "tags": "*updated*,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-battery-fill", + "content": "", + "style": "outline", + "tags": "*new*,charged,charger,charging,power,voltage,electricity", + "set_id": 1 + }, + { + "name": "car-profile-fill", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-simple-fill", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "cardholder-fill", + "content": "", + "style": "outline", + "tags": "wallet,money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cards-fill", + "content": "", + "style": "outline", + "tags": "card,slides,slideshow,windows,website,webpage,layers", + "set_id": 1 + }, + { + "name": "cards-three-fill", + "content": "", + "style": "outline", + "tags": "*new*,card,slides,slideshow,windows,website,webpage,layers,stack", + "set_id": 1 + }, + { + "name": "caret-circle-double-down-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-left-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-right-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-up-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-down-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-left-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-right-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-down-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-down-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-left-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-right-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-up-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-down-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-left-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-down-fill", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-left-fill", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-right-fill", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-up-fill", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-right-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-down-fill", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "carrot-fill", + "content": "", + "style": "outline", + "tags": "food,vegetable,veggie,groceries,market", + "set_id": 1 + }, + { + "name": "cash-register-fill", + "content": "", + "style": "outline", + "tags": "*new*,retail,point-of-sale,pos,transaction,sales,till", + "set_id": 1 + }, + { + "name": "cassette-tape-fill", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music", + "set_id": 1 + }, + { + "name": "castle-turret-fill", + "content": "", + "style": "outline", + "tags": "*updated*,chess,rook", + "set_id": 1 + }, + { + "name": "cat-fill", + "content": "", + "style": "outline", + "tags": "pets,animals,kitty,kitten", + "set_id": 1 + }, + { + "name": "cell-signal-full-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-high-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-low-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-medium-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-none-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-slash-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,disconnected,disabled,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-x-fill", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,disconnected,errors,service", + "set_id": 1 + }, + { + "name": "cell-tower-fill", + "content": "", + "style": "outline", + "tags": "*new*,wireless,cellular,broadcast,phone,mobile,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "certificate-fill", + "content": "", + "style": "outline", + "tags": "*updated*,awards,certification,degree,diploma", + "set_id": 1 + }, + { + "name": "chair-fill", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "chalkboard-fill", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-teacher-fill", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,education,school,college,university", + "set_id": 1 + }, + { + "name": "champagne-fill", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,wine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "charging-station-fill", + "content": "", + "style": "outline", + "tags": "ev,charge,fuel,pump", + "set_id": 1 + }, + { + "name": "chart-bar-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-bar-horizontal-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-donut-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-line-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-down-fill", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-up-fill", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-pie-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-pie-slice-fill", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-polar-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-scatter-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "chat-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-dots-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-text-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-dots-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-text-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-dots-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-dots-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-text-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-text-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-circle-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chats-teardrop-fill", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "check-fill", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-circle-fill", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,round,ok,done", + "set_id": 1 + }, + { + "name": "check-fat-fill", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-square-fill", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "check-square-offset-fill", + "content": "", + "style": "outline", + "tags": "*updated*,todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "checkerboard-fill", + "content": "", + "style": "outline", + "tags": "*new*,crossword", + "set_id": 1 + }, + { + "name": "checks-fill", + "content": "", + "style": "outline", + "tags": "*updated*,todo,task,to-do,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "cheers-fill", + "content": "", + "style": "outline", + "tags": "*new*,glass,drinks,beverages,champagne,toast,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "cheese-fill", + "content": "", + "style": "outline", + "tags": "*new*,dairy,wedge,food,dining", + "set_id": 1 + }, + { + "name": "chef-hat-fill", + "content": "", + "style": "outline", + "tags": "*new*,cooking,cuisine,kitchen,clothes,clothing", + "set_id": 1 + }, + { + "name": "cherries-fill", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,cherry,groceries,market", + "set_id": 1 + }, + { + "name": "church-fill", + "content": "", + "style": "outline", + "tags": "christ,christianity,cathedral,religion,worship", + "set_id": 1 + }, + { + "name": "cigarette-fill", + "content": "", + "style": "outline", + "tags": "*new*,smoking,tobacco", + "set_id": 1 + }, + { + "name": "cigarette-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,non-smoking,tobacco", + "set_id": 1 + }, + { + "name": "circle-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-dashed-fill", + "content": "", + "style": "outline", + "tags": "missing,round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-half-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-half-tilt-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-notch-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,loading,loader,spinner,waiting,progress", + "set_id": 1 + }, + { + "name": "circles-four-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,4", + "set_id": 1 + }, + { + "name": "circles-three-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,asana", + "set_id": 1 + }, + { + "name": "circles-three-plus-fill", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,+", + "set_id": 1 + }, + { + "name": "circuitry-fill", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit,electronics,motherboard", + "set_id": 1 + }, + { + "name": "city-fill", + "content": "", + "style": "outline", + "tags": "*new*,skyline,skyscrapers,places,locations,buildings", + "set_id": 1 + }, + { + "name": "clipboard-fill", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clipboard-text-fill", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clock-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-afternoon-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-clockwise-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,restore,fast forward,update", + "set_id": 1 + }, + { + "name": "clock-countdown-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-counter-clockwise-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,backup,rewind,history", + "set_id": 1 + }, + { + "name": "clock-user-fill", + "content": "", + "style": "outline", + "tags": "*new*,times,timer,shift,schedule,events,watch", + "set_id": 1 + }, + { + "name": "closed-captioning-fill", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "cloud-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,meteorology,cloudy,overcast", + "set_id": 1 + }, + { + "name": "cloud-arrow-down-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,download", + "set_id": 1 + }, + { + "name": "cloud-arrow-up-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,upload", + "set_id": 1 + }, + { + "name": "cloud-check-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,synchronized", + "set_id": 1 + }, + { + "name": "cloud-fog-fill", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,foggy,mist,haze", + "set_id": 1 + }, + { + "name": "cloud-lightning-fill", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,stormy,thunderstorm", + "set_id": 1 + }, + { + "name": "cloud-moon-fill", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,night,evening", + "set_id": 1 + }, + { + "name": "cloud-rain-fill", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,rainy,raining,stormy,rainstorm", + "set_id": 1 + }, + { + "name": "cloud-slash-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,disabled", + "set_id": 1 + }, + { + "name": "cloud-snow-fill", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,snowy,snowing,stormy,snowstorm", + "set_id": 1 + }, + { + "name": "cloud-sun-fill", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,partly sunny", + "set_id": 1 + }, + { + "name": "cloud-warning-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "cloud-x-fill", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "clover-fill", + "content": "", + "style": "outline", + "tags": "*new*,four leaf clover,plants,luck,lucky,irish", + "set_id": 1 + }, + { + "name": "club-fill", + "content": "", + "style": "outline", + "tags": "clubs,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "coat-hanger-fill", + "content": "", + "style": "outline", + "tags": "clothing,clothes,closet", + "set_id": 1 + }, + { + "name": "coda-logo-fill", + "content": "", + "style": "outline", + "tags": "project management,productivity,documentation,wiki,logos", + "set_id": 1 + }, + { + "name": "code-fill", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-block-fill", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-simple-fill", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "codepen-logo-fill", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "codesandbox-logo-fill", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "coffee-fill", + "content": "", + "style": "outline", + "tags": "tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coffee-bean-fill", + "content": "", + "style": "outline", + "tags": "*new*,tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coin-fill", + "content": "", + "style": "outline", + "tags": "coins,cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coin-vertical-fill", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coins-fill", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "columns-fill", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "columns-plus-left-fill", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "columns-plus-right-fill", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,append,insert", + "set_id": 1 + }, + { + "name": "command-fill", + "content": "", + "style": "outline", + "tags": "apple,keyboard,shortcut,modifier,looped square,bowen knot,saint john's arms", + "set_id": 1 + }, + { + "name": "compass-fill", + "content": "", + "style": "outline", + "tags": "navigation,directions,maps,safari,apple", + "set_id": 1 + }, + { + "name": "compass-rose-fill", + "content": "", + "style": "outline", + "tags": "*new*,navigation,directions,maps,cardinal,cartography", + "set_id": 1 + }, + { + "name": "compass-tool-fill", + "content": "", + "style": "outline", + "tags": "drawing,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "computer-tower-fill", + "content": "", + "style": "outline", + "tags": "desktop,pc,imac", + "set_id": 1 + }, + { + "name": "confetti-fill", + "content": "", + "style": "outline", + "tags": "tada,party,emoji", + "set_id": 1 + }, + { + "name": "contactless-payment-fill", + "content": "", + "style": "outline", + "tags": "purchase,credit card,nfc", + "set_id": 1 + }, + { + "name": "control-fill", + "content": "", + "style": "outline", + "tags": "ctrl,key,keyboard,shortcut,caret", + "set_id": 1 + }, + { + "name": "cookie-fill", + "content": "", + "style": "outline", + "tags": "privacy,dessert,food,dining", + "set_id": 1 + }, + { + "name": "cooking-pot-fill", + "content": "", + "style": "outline", + "tags": "stew,kitchen,steaming,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "copy-fill", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copy-simple-fill", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copyleft-fill", + "content": "", + "style": "outline", + "tags": "🄯,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "copyright-fill", + "content": "", + "style": "outline", + "tags": "©,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "corners-in-fill", + "content": "", + "style": "outline", + "tags": "*updated*,collapse,windowed,minimized", + "set_id": 1 + }, + { + "name": "corners-out-fill", + "content": "", + "style": "outline", + "tags": "*updated*,expand,fullscreen,maximized", + "set_id": 1 + }, + { + "name": "couch-fill", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "court-basketball-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,nba", + "set_id": 1 + }, + { + "name": "cow-fill", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,beef,bull,milk,dairy", + "set_id": 1 + }, + { + "name": "cowboy-hat-fill", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,stetson", + "set_id": 1 + }, + { + "name": "cpu-fill", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "crane-fill", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "crane-tower-fill", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "credit-card-fill", + "content": "", + "style": "outline", + "tags": "debit,visa,mastercard,money,payment,paying,purchase,swipe", + "set_id": 1 + }, + { + "name": "cricket-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,ball,bat", + "set_id": 1 + }, + { + "name": "crop-fill", + "content": "", + "style": "outline", + "tags": "photography,clip,screenshots", + "set_id": 1 + }, + { + "name": "cross-fill", + "content": "", + "style": "outline", + "tags": "dagger,crucifix,christ,christianity,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "crosshair-fill", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crosshair-simple-fill", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crown-fill", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-cross-fill", + "content": "", + "style": "outline", + "tags": "*new*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "cube-fill", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks", + "set_id": 1 + }, + { + "name": "cube-focus-fill", + "content": "", + "style": "outline", + "tags": "augmented reality,ar,virual reality,vr,3d,scan", + "set_id": 1 + }, + { + "name": "cube-transparent-fill", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks,necker", + "set_id": 1 + }, + { + "name": "currency-btc-fill", + "content": "", + "style": "outline", + "tags": "money,btc,bitcoin,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-circle-dollar-fill", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-cny-fill", + "content": "", + "style": "outline", + "tags": "money,yuan,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-fill", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-simple-fill", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eth-fill", + "content": "", + "style": "outline", + "tags": "money,ethereum,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eur-fill", + "content": "", + "style": "outline", + "tags": "money,euros,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-gbp-fill", + "content": "", + "style": "outline", + "tags": "money,pounds sterling,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-inr-fill", + "content": "", + "style": "outline", + "tags": "money,rupees,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-jpy-fill", + "content": "", + "style": "outline", + "tags": "money,yen,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-krw-fill", + "content": "", + "style": "outline", + "tags": "money,won,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-kzt-fill", + "content": "", + "style": "outline", + "tags": "money,kazakhstan,tenge,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-ngn-fill", + "content": "", + "style": "outline", + "tags": "money,nigeria,naira,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-rub-fill", + "content": "", + "style": "outline", + "tags": "money,rubles,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cursor-fill", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse,click", + "set_id": 1 + }, + { + "name": "cursor-click-fill", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse", + "set_id": 1 + }, + { + "name": "cursor-text-fill", + "content": "", + "style": "outline", + "tags": "i-beam,input,select", + "set_id": 1 + }, + { + "name": "cylinder-fill", + "content": "", + "style": "outline", + "tags": "shapes,tube", + "set_id": 1 + }, + { + "name": "database-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "desk-fill", + "content": "", + "style": "outline", + "tags": "*new*,furniture,workspace,table", + "set_id": 1 + }, + { + "name": "desktop-fill", + "content": "", + "style": "outline", + "tags": "computer,pc,imac,tower", + "set_id": 1 + }, + { + "name": "desktop-tower-fill", + "content": "", + "style": "outline", + "tags": "*updated*,computer,pc,imac", + "set_id": 1 + }, + { + "name": "detective-fill", + "content": "", + "style": "outline", + "tags": "incognito,police,law enforcement,spy,secret", + "set_id": 1 + }, + { + "name": "dev-to-logo-fill", + "content": "", + "style": "outline", + "tags": "reading,writing,social media,logos", + "set_id": 1 + }, + { + "name": "device-mobile-fill", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-camera-fill", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-speaker-fill", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-rotate-fill", + "content": "", + "style": "outline", + "tags": "*new*,orientation,landscape,portrait,spin,flip", + "set_id": 1 + }, + { + "name": "device-tablet-fill", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-camera-fill", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-speaker-fill", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "devices-fill", + "content": "", + "style": "outline", + "tags": "responsive,cellphone,cellular,tablet,destop", + "set_id": 1 + }, + { + "name": "diamond-fill", + "content": "", + "style": "outline", + "tags": "rectangle,shapes,polygons,diamonds,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "diamonds-four-fill", + "content": "", + "style": "outline", + "tags": "shapes,grid,component", + "set_id": 1 + }, + { + "name": "dice-five-fill", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,5", + "set_id": 1 + }, + { + "name": "dice-four-fill", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,4", + "set_id": 1 + }, + { + "name": "dice-one-fill", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,1", + "set_id": 1 + }, + { + "name": "dice-six-fill", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,6", + "set_id": 1 + }, + { + "name": "dice-three-fill", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,3", + "set_id": 1 + }, + { + "name": "dice-two-fill", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,2", + "set_id": 1 + }, + { + "name": "disc-fill", + "content": "", + "style": "outline", + "tags": "cd-rom,compact disk,album,record", + "set_id": 1 + }, + { + "name": "disco-ball-fill", + "content": "", + "style": "outline", + "tags": "*new*,danging,club,70s", + "set_id": 1 + }, + { + "name": "discord-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging,chat", + "set_id": 1 + }, + { + "name": "divide-fill", + "content": "", + "style": "outline", + "tags": "division,divisor,dividend,quotient,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "dna-fill", + "content": "", + "style": "outline", + "tags": "double helix,gene,genetics", + "set_id": 1 + }, + { + "name": "dog-fill", + "content": "", + "style": "outline", + "tags": "pets,animals,puppy", + "set_id": 1 + }, + { + "name": "door-fill", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "door-open-fill", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "dot-fill", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dot-outline-fill", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dots-nine-fill", + "content": "", + "style": "outline", + "tags": "grid,circles,shapes,polygons,9", + "set_id": 1 + }, + { + "name": "dots-six-fill", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-six-vertical-fill", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-three-fill", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-fill", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-vertical-fill", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-fill", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-vertical-fill", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-vertical-fill", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "download-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk", + "set_id": 1 + }, + { + "name": "download-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk,import", + "set_id": 1 + }, + { + "name": "dress-fill", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "dresser-fill", + "content": "", + "style": "outline", + "tags": "*new*,furniture,bedroom,storage,drawers,wardrobe", + "set_id": 1 + }, + { + "name": "dribbble-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,round,basketball,sports,design", + "set_id": 1 + }, + { + "name": "drone-fill", + "content": "", + "style": "outline", + "tags": "*new*,aerial,uav,photography,remote", + "set_id": 1 + }, + { + "name": "drop-fill", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,raining,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-half-fill", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-half-bottom-fill", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-simple-fill", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur,disabled", + "set_id": 1 + }, + { + "name": "dropbox-logo-fill", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "ear-fill", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound", + "set_id": 1 + }, + { + "name": "ear-slash-fill", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound,mute,accessible", + "set_id": 1 + }, + { + "name": "egg-fill", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch", + "set_id": 1 + }, + { + "name": "egg-crack-fill", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch,break", + "set_id": 1 + }, + { + "name": "eject-fill", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "eject-simple-fill", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "elevator-fill", + "content": "", + "style": "outline", + "tags": "lift", + "set_id": 1 + }, + { + "name": "empty-fill", + "content": "", + "style": "outline", + "tags": "*new*,∅,empty set,member,mathematics,arithmetic,calculator,null", + "set_id": 1 + }, + { + "name": "engine-fill", + "content": "", + "style": "outline", + "tags": "*updated*,motor,repair,vehicles,automobile", + "set_id": 1 + }, + { + "name": "envelope-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-open-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-open-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "equalizer-fill", + "content": "", + "style": "outline", + "tags": "music,audio,meter,volume,spectrum,eq,deezer", + "set_id": 1 + }, + { + "name": "equals-fill", + "content": "", + "style": "outline", + "tags": "=,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "eraser-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,undo,deleted", + "set_id": 1 + }, + { + "name": "escalator-down-fill", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "escalator-up-fill", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "exam-fill", + "content": "", + "style": "outline", + "tags": "text,examination,paper,school,grade", + "set_id": 1 + }, + { + "name": "exclamation-mark-fill", + "content": "", + "style": "outline", + "tags": "*new*,!,alert,warning,caution,interjection,punctuation,symbol", + "set_id": 1 + }, + { + "name": "exclude-fill", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "exclude-square-fill", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "export-fill", + "content": "", + "style": "outline", + "tags": "share,send to,arrows", + "set_id": 1 + }, + { + "name": "eye-fill", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view", + "set_id": 1 + }, + { + "name": "eye-closed-fill", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,private", + "set_id": 1 + }, + { + "name": "eye-slash-fill", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,eyelashes,disabled,private", + "set_id": 1 + }, + { + "name": "eyedropper-fill", + "content": "", + "style": "outline", + "tags": "colors,color picker,sample,arts", + "set_id": 1 + }, + { + "name": "eyedropper-sample-fill", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "eyeglasses-fill", + "content": "", + "style": "outline", + "tags": "vision,spectacles", + "set_id": 1 + }, + { + "name": "eyes-fill", + "content": "", + "style": "outline", + "tags": "*new*,look,glance", + "set_id": 1 + }, + { + "name": "face-mask-fill", + "content": "", + "style": "outline", + "tags": "ppe,facemask,covid-19,coronavirus,flu,cold", + "set_id": 1 + }, + { + "name": "facebook-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "factory-fill", + "content": "", + "style": "outline", + "tags": "industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "faders-fill", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "faders-horizontal-fill", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "fallout-shelter-fill", + "content": "", + "style": "outline", + "tags": "*new*,radiation,radioactive,nuclear,bunker,contamination,quarantine,toxic,danger,caution", + "set_id": 1 + }, + { + "name": "fan-fill", + "content": "", + "style": "outline", + "tags": "desk fan,air conditioning", + "set_id": 1 + }, + { + "name": "farm-fill", + "content": "", + "style": "outline", + "tags": "*new*,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "fast-forward-fill", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "fast-forward-circle-fill", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "feather-fill", + "content": "", + "style": "outline", + "tags": "bird", + "set_id": 1 + }, + { + "name": "fediverse-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,social media,decentralized", + "set_id": 1 + }, + { + "name": "figma-logo-fill", + "content": "", + "style": "outline", + "tags": "*updated*,logos,drawing,art,illustration,ui,interface,prototype,prototyping", + "set_id": 1 + }, + { + "name": "file-fill", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,page", + "set_id": 1 + }, + { + "name": "file-archive-fill", + "content": "", + "style": "outline", + "tags": "documents,zip,compression", + "set_id": 1 + }, + { + "name": "file-arrow-down-fill", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,download,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-arrow-up-fill", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,upload,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-audio-fill", + "content": "", + "style": "outline", + "tags": "documents,music,sound", + "set_id": 1 + }, + { + "name": "file-c-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents,code", + "set_id": 1 + }, + { + "name": "file-c-sharp-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c#", + "set_id": 1 + }, + { + "name": "file-cloud-fill", + "content": "", + "style": "outline", + "tags": "documents,sync", + "set_id": 1 + }, + { + "name": "file-code-fill", + "content": "", + "style": "outline", + "tags": "documents", + "set_id": 1 + }, + { + "name": "file-cpp-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c++", + "set_id": 1 + }, + { + "name": "file-css-fill", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-csv-fill", + "content": "", + "style": "outline", + "tags": "documents,data", + "set_id": 1 + }, + { + "name": "file-dashed-fill", + "content": "", + "style": "outline", + "tags": "documents,files,browse,draft,open,dotted", + "set_id": 1 + }, + { + "name": "file-doc-fill", + "content": "", + "style": "outline", + "tags": "documents,word,microsoft", + "set_id": 1 + }, + { + "name": "file-html-fill", + "content": "", + "style": "outline", + "tags": "*updated*,documents,code", + "set_id": 1 + }, + { + "name": "file-image-fill", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ini-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-jpg-fill", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph,jpeg", + "set_id": 1 + }, + { + "name": "file-js-fill", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-jsx-fill", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-lock-fill", + "content": "", + "style": "outline", + "tags": "documents,secure,locked,private", + "set_id": 1 + }, + { + "name": "file-magnifying-glass-fill", + "content": "", + "style": "outline", + "tags": "documents,files,search,find,locate,browse,missing", + "set_id": 1 + }, + { + "name": "file-md-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents,notes,markdown", + "set_id": 1 + }, + { + "name": "file-minus-fill", + "content": "", + "style": "outline", + "tags": "documents,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "file-pdf-fill", + "content": "", + "style": "outline", + "tags": "documents,files,acrobat", + "set_id": 1 + }, + { + "name": "file-plus-fill", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "file-png-fill", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ppt-fill", + "content": "", + "style": "outline", + "tags": "documents,powerpoint,microsoft", + "set_id": 1 + }, + { + "name": "file-py-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,python", + "set_id": 1 + }, + { + "name": "file-rs-fill", + "content": "", + "style": "outline", + "tags": "documents,code,rust", + "set_id": 1 + }, + { + "name": "file-sql-fill", + "content": "", + "style": "outline", + "tags": "documents,database", + "set_id": 1 + }, + { + "name": "file-svg-fill", + "content": "", + "style": "outline", + "tags": "documents,images,vector", + "set_id": 1 + }, + { + "name": "file-text-fill", + "content": "", + "style": "outline", + "tags": "documents,files,save,write", + "set_id": 1 + }, + { + "name": "file-ts-fill", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-tsx-fill", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-txt-fill", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-video-fill", + "content": "", + "style": "outline", + "tags": "documents,movie", + "set_id": 1 + }, + { + "name": "file-vue-fill", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-x-fill", + "content": "", + "style": "outline", + "tags": "documents,files,cancelled,deleted,removed,errors", + "set_id": 1 + }, + { + "name": "file-xls-fill", + "content": "", + "style": "outline", + "tags": "documents,excel,microsoft", + "set_id": 1 + }, + { + "name": "file-zip-fill", + "content": "", + "style": "outline", + "tags": "documents,archive,compression", + "set_id": 1 + }, + { + "name": "files-fill", + "content": "", + "style": "outline", + "tags": "documents,open,library", + "set_id": 1 + }, + { + "name": "film-reel-fill", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "film-script-fill", + "content": "", + "style": "outline", + "tags": "screenplay,movie", + "set_id": 1 + }, + { + "name": "film-slate-fill", + "content": "", + "style": "outline", + "tags": "*updated*,clapper,movie", + "set_id": 1 + }, + { + "name": "film-strip-fill", + "content": "", + "style": "outline", + "tags": "camera,photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "fingerprint-fill", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "fingerprint-simple-fill", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "finn-the-human-fill", + "content": "", + "style": "outline", + "tags": "adventure time,cartoons,television,tv,character", + "set_id": 1 + }, + { + "name": "fire-fill", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-extinguisher-fill", + "content": "", + "style": "outline", + "tags": "safety,prevention,emergency,hazard,danger,caution", + "set_id": 1 + }, + { + "name": "fire-simple-fill", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-truck-fill", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,firefighter", + "set_id": 1 + }, + { + "name": "first-aid-fill", + "content": "", + "style": "outline", + "tags": "hospital,cross,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "first-aid-kit-fill", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "fish-fill", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "fish-simple-fill", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "flag-fill", + "content": "", + "style": "outline", + "tags": "country,countries,finished,completed,flags", + "set_id": 1 + }, + { + "name": "flag-banner-fill", + "content": "", + "style": "outline", + "tags": "ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-banner-fold-fill", + "content": "", + "style": "outline", + "tags": "*new*,ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-checkered-fill", + "content": "", + "style": "outline", + "tags": "flags,race,racing,finish line", + "set_id": 1 + }, + { + "name": "flag-pennant-fill", + "content": "", + "style": "outline", + "tags": "flags,race,sports,team", + "set_id": 1 + }, + { + "name": "flame-fill", + "content": "", + "style": "outline", + "tags": "fire,burning,match,lighter", + "set_id": 1 + }, + { + "name": "flashlight-fill", + "content": "", + "style": "outline", + "tags": "torch,find,search,locate", + "set_id": 1 + }, + { + "name": "flask-fill", + "content": "", + "style": "outline", + "tags": "beaker,science,chemistry,experiment,erlenmeyer", + "set_id": 1 + }, + { + "name": "flip-horizontal-fill", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "flip-vertical-fill", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "floppy-disk-fill", + "content": "", + "style": "outline", + "tags": "diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "floppy-disk-back-fill", + "content": "", + "style": "outline", + "tags": "*updated*,diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "flow-arrow-fill", + "content": "", + "style": "outline", + "tags": "*updated*,flowchart,arrowhead", + "set_id": 1 + }, + { + "name": "flower-fill", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flower-lotus-fill", + "content": "", + "style": "outline", + "tags": "plants,green,environmental,spirituality", + "set_id": 1 + }, + { + "name": "flower-tulip-fill", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flying-saucer-fill", + "content": "", + "style": "outline", + "tags": "ufo,space,aliens,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "folder-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-dashed-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-lock-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-minus-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-open-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,load", + "set_id": 1 + }, + { + "name": "folder-plus-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-simple-dashed-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-simple-lock-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-simple-minus-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-simple-plus-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-star-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-simple-user-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folder-star-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-user-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folders-fill", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,copy,copied,duplicated", + "set_id": 1 + }, + { + "name": "football-fill", + "content": "", + "style": "outline", + "tags": "sports,american football,nfl", + "set_id": 1 + }, + { + "name": "football-helmet-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,american football,nfl", + "set_id": 1 + }, + { + "name": "footprints-fill", + "content": "", + "style": "outline", + "tags": "path,trail,walk,route,hike,hiking", + "set_id": 1 + }, + { + "name": "fork-knife-fill", + "content": "", + "style": "outline", + "tags": "food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "four-k-fill", + "content": "", + "style": "outline", + "tags": "*new*,uhd,resolution,video", + "set_id": 1 + }, + { + "name": "frame-corners-fill", + "content": "", + "style": "outline", + "tags": "expand,fullscreen,maximized,resize,windowed,capture", + "set_id": 1 + }, + { + "name": "framer-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,interface,ui,motion,prototype,prototyping", + "set_id": 1 + }, + { + "name": "function-fill", + "content": "", + "style": "outline", + "tags": "mathematics,arithmetic,f-stop", + "set_id": 1 + }, + { + "name": "funnel-fill", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-fill", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-x-fill", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-x-fill", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "game-controller-fill", + "content": "", + "style": "outline", + "tags": "gaming,video games,nintendo switch,sony playstation,microsoft xbox", + "set_id": 1 + }, + { + "name": "garage-fill", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,buildings,transportation", + "set_id": 1 + }, + { + "name": "gas-can-fill", + "content": "", + "style": "outline", + "tags": "jerrycan,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gas-pump-fill", + "content": "", + "style": "outline", + "tags": "gas station,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gauge-fill", + "content": "", + "style": "outline", + "tags": "dashboard,meter,speed,speedometer,odometer,performance", + "set_id": 1 + }, + { + "name": "gavel-fill", + "content": "", + "style": "outline", + "tags": "judge,justice,legal,law,court,hammer,government", + "set_id": 1 + }, + { + "name": "gear-fill", + "content": "", + "style": "outline", + "tags": "8,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-fine-fill", + "content": "", + "style": "outline", + "tags": "setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-six-fill", + "content": "", + "style": "outline", + "tags": "6,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gender-female-fill", + "content": "", + "style": "outline", + "tags": "woman,feminine,venus", + "set_id": 1 + }, + { + "name": "gender-intersex-fill", + "content": "", + "style": "outline", + "tags": "transgender,non-binary", + "set_id": 1 + }, + { + "name": "gender-male-fill", + "content": "", + "style": "outline", + "tags": "man,masculine,mars", + "set_id": 1 + }, + { + "name": "gender-neuter-fill", + "content": "", + "style": "outline", + "tags": "agender,non-binary,asexual", + "set_id": 1 + }, + { + "name": "gender-nonbinary-fill", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "gender-transgender-fill", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "ghost-fill", + "content": "", + "style": "outline", + "tags": "pac-man,spirit,scary,halloween", + "set_id": 1 + }, + { + "name": "gif-fill", + "content": "", + "style": "outline", + "tags": "gifs,.gif,giphy", + "set_id": 1 + }, + { + "name": "gift-fill", + "content": "", + "style": "outline", + "tags": "presents,holiday,birthday", + "set_id": 1 + }, + { + "name": "git-branch-fill", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "git-commit-fill", + "content": "", + "style": "outline", + "tags": "github,vcs,source control,version control,versioning,commits", + "set_id": 1 + }, + { + "name": "git-diff-fill", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,difference,compare", + "set_id": 1 + }, + { + "name": "git-fork-fill", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-merge-fill", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-pull-request-fill", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,merge request", + "set_id": 1 + }, + { + "name": "github-logo-fill", + "content": "", + "style": "outline", + "tags": "octocat,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-fill", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-simple-fill", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "globe-fill", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-hemisphere-east-fill", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,europe,africa,asia,australia", + "set_id": 1 + }, + { + "name": "globe-hemisphere-west-fill", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,north america,south america", + "set_id": 1 + }, + { + "name": "globe-simple-fill", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-simple-x-fill", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-stand-fill", + "content": "", + "style": "outline", + "tags": "world,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-x-fill", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "goggles-fill", + "content": "", + "style": "outline", + "tags": "swim,swimming,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "golf-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,pga,tee,ball", + "set_id": 1 + }, + { + "name": "goodreads-logo-fill", + "content": "", + "style": "outline", + "tags": "*updated*,reading,books,social media,logos", + "set_id": 1 + }, + { + "name": "google-cardboard-logo-fill", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,logos", + "set_id": 1 + }, + { + "name": "google-chrome-logo-fill", + "content": "", + "style": "outline", + "tags": "web browsers,internet", + "set_id": 1 + }, + { + "name": "google-drive-logo-fill", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "google-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,search engine,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-photos-logo-fill", + "content": "", + "style": "outline", + "tags": "album,pictures,photography", + "set_id": 1 + }, + { + "name": "google-play-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,games,apps,applications,play store,app store,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-podcasts-logo-fill", + "content": "", + "style": "outline", + "tags": "audio", + "set_id": 1 + }, + { + "name": "gps-fill", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-fix-fill", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation,disabled", + "set_id": 1 + }, + { + "name": "gradient-fill", + "content": "", + "style": "outline", + "tags": "fade,ombre,opacity", + "set_id": 1 + }, + { + "name": "graduation-cap-fill", + "content": "", + "style": "outline", + "tags": "classroom,teacher,education,school,college,university,degree,graduate,hat", + "set_id": 1 + }, + { + "name": "grains-fill", + "content": "", + "style": "outline", + "tags": "wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "grains-slash-fill", + "content": "", + "style": "outline", + "tags": "gluten-free,wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "graph-fill", + "content": "", + "style": "outline", + "tags": "nodes,tree", + "set_id": 1 + }, + { + "name": "graphics-card-fill", + "content": "", + "style": "outline", + "tags": "*new*,graphics card,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "greater-than-fill", + "content": "", + "style": "outline", + "tags": "*new*,>,greater than,gt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "greater-than-or-equal-fill", + "content": "", + "style": "outline", + "tags": "*new*,≥,greater than or equal,gte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "grid-four-fill", + "content": "", + "style": "outline", + "tags": "4,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "grid-nine-fill", + "content": "", + "style": "outline", + "tags": "9,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "guitar-fill", + "content": "", + "style": "outline", + "tags": "music,instrument", + "set_id": 1 + }, + { + "name": "hair-dryer-fill", + "content": "", + "style": "outline", + "tags": "*new*,blow dryer,beauty,grooming,salon", + "set_id": 1 + }, + { + "name": "hamburger-fill", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "hammer-fill", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "hand-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,backhand", + "set_id": 1 + }, + { + "name": "hand-arrow-down-fill", + "content": "", + "style": "outline", + "tags": "*new*,take,receive,remove,withdraw,emoji", + "set_id": 1 + }, + { + "name": "hand-arrow-up-fill", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,deposit,donation,emoji", + "set_id": 1 + }, + { + "name": "hand-coins-fill", + "content": "", + "style": "outline", + "tags": "donation,payment,money,paying,purchase", + "set_id": 1 + }, + { + "name": "hand-deposit-fill", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,donation,atm,emoji", + "set_id": 1 + }, + { + "name": "hand-eye-fill", + "content": "", + "style": "outline", + "tags": "*updated*,emoji,hamsa,evil eye", + "set_id": 1 + }, + { + "name": "hand-fist-fill", + "content": "", + "style": "outline", + "tags": "emoji,power,protest,blm", + "set_id": 1 + }, + { + "name": "hand-grabbing-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,drag,hold", + "set_id": 1 + }, + { + "name": "hand-heart-fill", + "content": "", + "style": "outline", + "tags": "donation,care,emoji", + "set_id": 1 + }, + { + "name": "hand-palm-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,palm,stop,wait,hamsa,5", + "set_id": 1 + }, + { + "name": "hand-peace-fill", + "content": "", + "style": "outline", + "tags": "*new*,emoji,victory", + "set_id": 1 + }, + { + "name": "hand-pointing-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,fingers,clicks,mouse", + "set_id": 1 + }, + { + "name": "hand-soap-fill", + "content": "", + "style": "outline", + "tags": "dispenser,pump,sanitizer,disinfectant,lotion,bottle", + "set_id": 1 + }, + { + "name": "hand-swipe-left-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-swipe-right-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-tap-fill", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-waving-fill", + "content": "", + "style": "outline", + "tags": "emoji,palm,wave,hello,goodbye", + "set_id": 1 + }, + { + "name": "hand-withdraw-fill", + "content": "", + "style": "outline", + "tags": "*new*,take,remove,withdrawal,atm,emoji", + "set_id": 1 + }, + { + "name": "handbag-fill", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "handbag-simple-fill", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "hands-clapping-fill", + "content": "", + "style": "outline", + "tags": "emoji,clap,applause", + "set_id": 1 + }, + { + "name": "hands-praying-fill", + "content": "", + "style": "outline", + "tags": "emoji,religion,worship,prayer,thanks,thank you", + "set_id": 1 + }, + { + "name": "handshake-fill", + "content": "", + "style": "outline", + "tags": "emoji,deal,agreement", + "set_id": 1 + }, + { + "name": "hard-drive-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-drives-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-hat-fill", + "content": "", + "style": "outline", + "tags": "*new*,safety,construction,industry,helmet,ppe", + "set_id": 1 + }, + { + "name": "hash-fill", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "hash-straight-fill", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "head-circuit-fill", + "content": "", + "style": "outline", + "tags": "*new*,automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "headlights-fill", + "content": "", + "style": "outline", + "tags": "brights,high beams", + "set_id": 1 + }, + { + "name": "headphones-fill", + "content": "", + "style": "outline", + "tags": "music,audio,listening", + "set_id": 1 + }, + { + "name": "headset-fill", + "content": "", + "style": "outline", + "tags": "music,audio,listening,gaming,voice chat,microphone,headphones,support,customer-service,call-center", + "set_id": 1 + }, + { + "name": "heart-fill", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-break-fill", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heart-half-fill", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited", + "set_id": 1 + }, + { + "name": "heart-straight-fill", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-straight-break-fill", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heartbeat-fill", + "content": "", + "style": "outline", + "tags": "wellness,healthy,ecg,ekg,vitals,monitor", + "set_id": 1 + }, + { + "name": "hexagon-fill", + "content": "", + "style": "outline", + "tags": "6,shapes,polygons", + "set_id": 1 + }, + { + "name": "high-definition-fill", + "content": "", + "style": "outline", + "tags": "*new*,hd,resolution,video", + "set_id": 1 + }, + { + "name": "high-heel-fill", + "content": "", + "style": "outline", + "tags": "*updated*,pumps,clothes,clothing,shoes", + "set_id": 1 + }, + { + "name": "highlighter-fill", + "content": "", + "style": "outline", + "tags": "*new*,marker,write,writing,editing", + "set_id": 1 + }, + { + "name": "highlighter-circle-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "hockey-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,nhl,stick,puck", + "set_id": 1 + }, + { + "name": "hoodie-fill", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sweatshirt", + "set_id": 1 + }, + { + "name": "horse-fill", + "content": "", + "style": "outline", + "tags": "animals,equestrian,chess,knight,sports", + "set_id": 1 + }, + { + "name": "hospital-fill", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,medical,medicine,emergency,doctor,buildings", + "set_id": 1 + }, + { + "name": "hourglass-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-high-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-low-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-medium-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-high-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-low-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-medium-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "house-fill", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-line-fill", + "content": "", + "style": "outline", + "tags": "*updated*,homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-simple-fill", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "hurricane-fill", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,cyclone,storm,disaster,wind", + "set_id": 1 + }, + { + "name": "ice-cream-fill", + "content": "", + "style": "outline", + "tags": "food,dessert,cone", + "set_id": 1 + }, + { + "name": "identification-badge-fill", + "content": "", + "style": "outline", + "tags": "license,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "identification-card-fill", + "content": "", + "style": "outline", + "tags": "license,badge,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "image-fill", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "image-broken-fill", + "content": "", + "style": "outline", + "tags": "*new*,pictures,photographs,photography,wallpapers,gallery,landscape,missing,error,404", + "set_id": 1 + }, + { + "name": "image-square-fill", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "images-fill", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "images-square-fill", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "infinity-fill", + "content": "", + "style": "outline", + "tags": "infinite,lemniscate,figure-eight,mathematics,arithmetic,calculator,∞", + "set_id": 1 + }, + { + "name": "info-fill", + "content": "", + "style": "outline", + "tags": "information,help,support", + "set_id": 1 + }, + { + "name": "instagram-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,social media,photography,camera", + "set_id": 1 + }, + { + "name": "intersect-fill", + "content": "", + "style": "outline", + "tags": "round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "intersect-square-fill", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection", + "set_id": 1 + }, + { + "name": "intersect-three-fill", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection,gender,pronouns", + "set_id": 1 + }, + { + "name": "intersection-fill", + "content": "", + "style": "outline", + "tags": "*new*,∩,intersection,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "invoice-fill", + "content": "", + "style": "outline", + "tags": "*new*,receipt,expense,bill", + "set_id": 1 + }, + { + "name": "island-fill", + "content": "", + "style": "outline", + "tags": "*new*,geography,beach,ocean,tropical,palm,vacation,trip,locations,places", + "set_id": 1 + }, + { + "name": "jar-fill", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jar-label-fill", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jeep-fill", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,automobile,suv,cars,trucks,wrangler,off-road,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "joystick-fill", + "content": "", + "style": "outline", + "tags": "*new*,gaming,game controller,video games,arcade game,atari", + "set_id": 1 + }, + { + "name": "kanban-fill", + "content": "", + "style": "outline", + "tags": "scheduling,tasks,project management,process,lean,agile", + "set_id": 1 + }, + { + "name": "key-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "key-return-fill", + "content": "", + "style": "outline", + "tags": "keyboard,enter", + "set_id": 1 + }, + { + "name": "keyboard-fill", + "content": "", + "style": "outline", + "tags": "typing,type,keys,input", + "set_id": 1 + }, + { + "name": "keyhole-fill", + "content": "", + "style": "outline", + "tags": "lock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "knife-fill", + "content": "", + "style": "outline", + "tags": "tools,food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "ladder-fill", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "ladder-simple-fill", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "lamp-fill", + "content": "", + "style": "outline", + "tags": "light,furniture,appliances", + "set_id": 1 + }, + { + "name": "lamp-pendant-fill", + "content": "", + "style": "outline", + "tags": "*new*,light,furniture,appliances", + "set_id": 1 + }, + { + "name": "laptop-fill", + "content": "", + "style": "outline", + "tags": "computer,notebook,pc,macbook", + "set_id": 1 + }, + { + "name": "lasso-fill", + "content": "", + "style": "outline", + "tags": "*new*,select,selection,loop,rope,cowboy", + "set_id": 1 + }, + { + "name": "lastfm-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,scrobble,music,social media", + "set_id": 1 + }, + { + "name": "layout-fill", + "content": "", + "style": "outline", + "tags": "wireframe,sidebar,ui,interface", + "set_id": 1 + }, + { + "name": "leaf-fill", + "content": "", + "style": "outline", + "tags": "plants,trees,branches,leaves,nodes,green,environmental", + "set_id": 1 + }, + { + "name": "lectern-fill", + "content": "", + "style": "outline", + "tags": "*new*,lecture,podium,pulpit,stand,speech,presentation,keynote", + "set_id": 1 + }, + { + "name": "lego-fill", + "content": "", + "style": "outline", + "tags": "*new*,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "lego-smiley-fill", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "less-than-fill", + "content": "", + "style": "outline", + "tags": "*new*,<,less than,lt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "less-than-or-equal-fill", + "content": "", + "style": "outline", + "tags": "*new*,≤,less than or equal,lte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "letter-circle-h-fill", + "content": "", + "style": "outline", + "tags": "*new*,hospital,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-p-fill", + "content": "", + "style": "outline", + "tags": "*new*,parking lot,valet,vehicles,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-v-fill", + "content": "", + "style": "outline", + "tags": "*new*,vegan,letter,glyph,character", + "set_id": 1 + }, + { + "name": "lifebuoy-fill", + "content": "", + "style": "outline", + "tags": "lifebelt,lifesaver,safety,help,support,nautical,boats,ships", + "set_id": 1 + }, + { + "name": "lightbulb-fill", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lightbulb-filament-fill", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lighthouse-fill", + "content": "", + "style": "outline", + "tags": "buildings,nautical,navigation,boats,ships,safety", + "set_id": 1 + }, + { + "name": "lightning-fill", + "content": "", + "style": "outline", + "tags": "meteorology,stormy,thunderstorm,thunderbolt,charged,charger,charging,power,electricity,flash", + "set_id": 1 + }, + { + "name": "lightning-a-fill", + "content": "", + "style": "outline", + "tags": "flash,auto", + "set_id": 1 + }, + { + "name": "lightning-slash-fill", + "content": "", + "style": "outline", + "tags": "thunderbolt,charged,charger,charging,power,electricity,disabled,flash", + "set_id": 1 + }, + { + "name": "line-segment-fill", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-segments-fill", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-vertical-fill", + "content": "", + "style": "outline", + "tags": "*new*,bar,pipe,|,divider. symbol", + "set_id": 1 + }, + { + "name": "link-fill", + "content": "", + "style": "outline", + "tags": "*updated*,anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-break-fill", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-fill", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-break-fill", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-fill", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-break-fill", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "linkedin-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,jobs,employment,social media", + "set_id": 1 + }, + { + "name": "linktree-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,social media,links", + "set_id": 1 + }, + { + "name": "linux-logo-fill", + "content": "", + "style": "outline", + "tags": "penguin,computer,animals", + "set_id": 1 + }, + { + "name": "list-fill", + "content": "", + "style": "outline", + "tags": "*updated*,hamburger menu,overflow menu,sidebar,3,ul,ol,unordered list,ordered list,checklist,lines", + "set_id": 1 + }, + { + "name": "list-bullets-fill", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,bulleted list,checklist", + "set_id": 1 + }, + { + "name": "list-checks-fill", + "content": "", + "style": "outline", + "tags": "*updated*,checklist,todo", + "set_id": 1 + }, + { + "name": "list-dashes-fill", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,dashed list,checklist", + "set_id": 1 + }, + { + "name": "list-heart-fill", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "list-magnifying-glass-fill", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "list-numbers-fill", + "content": "", + "style": "outline", + "tags": "*updated*,ol,ordered list,numbered list,checklist", + "set_id": 1 + }, + { + "name": "list-plus-fill", + "content": "", + "style": "outline", + "tags": "*updated*,ul,ol,unordered list,ordered list,checklist,add,+", + "set_id": 1 + }, + { + "name": "list-star-fill", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "lock-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-open-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-laminated-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-laminated-open-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-open-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-simple-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-simple-open-fill", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lockers-fill", + "content": "", + "style": "outline", + "tags": "locker room,gym,storage", + "set_id": 1 + }, + { + "name": "log-fill", + "content": "", + "style": "outline", + "tags": "*new*,tree,stump,stick,branch", + "set_id": 1 + }, + { + "name": "magic-wand-fill", + "content": "", + "style": "outline", + "tags": "selection,wizard,games", + "set_id": 1 + }, + { + "name": "magnet-fill", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnet-straight-fill", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnifying-glass-fill", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "magnifying-glass-minus-fill", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom out,-", + "set_id": 1 + }, + { + "name": "magnifying-glass-plus-fill", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom in,+", + "set_id": 1 + }, + { + "name": "mailbox-fill", + "content": "", + "style": "outline", + "tags": "*new*,email,letters,messaging,post", + "set_id": 1 + }, + { + "name": "map-pin-fill", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-area-fill", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-line-fill", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-plus-fill", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,add,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-fill", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-area-fill", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-line-fill", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-trifold-fill", + "content": "", + "style": "outline", + "tags": "maps,places,locations,cartography,geography", + "set_id": 1 + }, + { + "name": "markdown-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,markup,editor,.md", + "set_id": 1 + }, + { + "name": "marker-circle-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "martini-fill", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,cocktails,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "mask-happy-fill", + "content": "", + "style": "outline", + "tags": "theater,costume,smile,smiling,thalia", + "set_id": 1 + }, + { + "name": "mask-sad-fill", + "content": "", + "style": "outline", + "tags": "theater,costume,cry,crying,melpomene", + "set_id": 1 + }, + { + "name": "mastodon-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,fediverse,social media,decentralized", + "set_id": 1 + }, + { + "name": "math-operations-fill", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,calculator,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "matrix-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,matrix protocol,brands,logos", + "set_id": 1 + }, + { + "name": "medal-fill", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,rosette", + "set_id": 1 + }, + { + "name": "medal-military-fill", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,military", + "set_id": 1 + }, + { + "name": "medium-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,reading,writing,news,social media", + "set_id": 1 + }, + { + "name": "megaphone-fill", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "megaphone-simple-fill", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "member-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,∈,is element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "memory-fill", + "content": "", + "style": "outline", + "tags": "*new*,ram,microchip,computer,circuit,electronics", + "set_id": 1 + }, + { + "name": "messenger-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,facebook,social media", + "set_id": 1 + }, + { + "name": "meta-logo-fill", + "content": "", + "style": "outline", + "tags": "*updated*,facebook,logos,social media,logos", + "set_id": 1 + }, + { + "name": "meteor-fill", + "content": "", + "style": "outline", + "tags": "*new*,astronomy,asteroid,fireball", + "set_id": 1 + }, + { + "name": "metronome-fill", + "content": "", + "style": "outline", + "tags": "music,beat,tempo,bpm", + "set_id": 1 + }, + { + "name": "microphone-fill", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio", + "set_id": 1 + }, + { + "name": "microphone-slash-fill", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio,muted,disabled", + "set_id": 1 + }, + { + "name": "microphone-stage-fill", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,performance,concert", + "set_id": 1 + }, + { + "name": "microscope-fill", + "content": "", + "style": "outline", + "tags": "*new*,science,biology,experiment,magnify", + "set_id": 1 + }, + { + "name": "microsoft-excel-logo-fill", + "content": "", + "style": "outline", + "tags": "tables,spreadsheets,tabular", + "set_id": 1 + }, + { + "name": "microsoft-outlook-logo-fill", + "content": "", + "style": "outline", + "tags": "email,logos", + "set_id": 1 + }, + { + "name": "microsoft-powerpoint-logo-fill", + "content": "", + "style": "outline", + "tags": "slides,slideshow,presentation", + "set_id": 1 + }, + { + "name": "microsoft-teams-logo-fill", + "content": "", + "style": "outline", + "tags": "chat,video conference", + "set_id": 1 + }, + { + "name": "microsoft-word-logo-fill", + "content": "", + "style": "outline", + "tags": "documents,word processor,doc,docx", + "set_id": 1 + }, + { + "name": "minus-fill", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,line,horizontal,divider", + "set_id": 1 + }, + { + "name": "minus-circle-fill", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,round", + "set_id": 1 + }, + { + "name": "minus-square-fill", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "money-fill", + "content": "", + "style": "outline", + "tags": "cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "money-wavy-fill", + "content": "", + "style": "outline", + "tags": "*new*,cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "monitor-fill", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays", + "set_id": 1 + }, + { + "name": "monitor-arrow-up-fill", + "content": "", + "style": "outline", + "tags": "*new*,screen,screencast,screenshare,upload,video,movie", + "set_id": 1 + }, + { + "name": "monitor-play-fill", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays,screencast,video,movie", + "set_id": 1 + }, + { + "name": "moon-fill", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing", + "set_id": 1 + }, + { + "name": "moon-stars-fill", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing,constellation", + "set_id": 1 + }, + { + "name": "moped-fill", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "moped-front-fill", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "mosque-fill", + "content": "", + "style": "outline", + "tags": "islam,muslim,religion,worship", + "set_id": 1 + }, + { + "name": "motorcycle-fill", + "content": "", + "style": "outline", + "tags": "vehicles,motorbike,transportation,travel", + "set_id": 1 + }, + { + "name": "mountains-fill", + "content": "", + "style": "outline", + "tags": "*updated*,hills,outdoors,terrain,geology,adventure", + "set_id": 1 + }, + { + "name": "mouse-fill", + "content": "", + "style": "outline", + "tags": "*updated*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-left-click-fill", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-middle-click-fill", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-right-click-fill", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-scroll-fill", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-simple-fill", + "content": "", + "style": "outline", + "tags": "clicks,input", + "set_id": 1 + }, + { + "name": "music-note-fill", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-note-simple-fill", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-fill", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-minus-fill", + "content": "", + "style": "outline", + "tags": "*new*,songs,audio,playlist,albums,remove,subtract", + "set_id": 1 + }, + { + "name": "music-notes-plus-fill", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums,add", + "set_id": 1 + }, + { + "name": "music-notes-simple-fill", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "navigation-arrow-fill", + "content": "", + "style": "outline", + "tags": "location,directions,compass,gps", + "set_id": 1 + }, + { + "name": "needle-fill", + "content": "", + "style": "outline", + "tags": "sewing,thread,awl,tailor", + "set_id": 1 + }, + { + "name": "network-fill", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan", + "set_id": 1 + }, + { + "name": "network-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,error", + "set_id": 1 + }, + { + "name": "network-x-fill", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,disabled", + "set_id": 1 + }, + { + "name": "newspaper-fill", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "newspaper-clipping-fill", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "not-equals-fill", + "content": "", + "style": "outline", + "tags": "*new*,≠,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-member-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,∉,is not element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-subset-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,⊄,not subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-superset-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,⊉,not superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "notches-fill", + "content": "", + "style": "outline", + "tags": "textarea,resize,drag handle,knurling", + "set_id": 1 + }, + { + "name": "note-fill", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-blank-fill", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-pencil-fill", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "notebook-fill", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,journal,diary,logs,logbook", + "set_id": 1 + }, + { + "name": "notepad-fill", + "content": "", + "style": "outline", + "tags": "*updated*,logs,logbook,notes,note-taking,memorandum,journal,diary", + "set_id": 1 + }, + { + "name": "notification-fill", + "content": "", + "style": "outline", + "tags": "badge,pip", + "set_id": 1 + }, + { + "name": "notion-logo-fill", + "content": "", + "style": "outline", + "tags": "documentation,productivity,wiki,logos", + "set_id": 1 + }, + { + "name": "nuclear-plant-fill", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "number-circle-eight-fill", + "content": "", + "style": "outline", + "tags": "8,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-five-fill", + "content": "", + "style": "outline", + "tags": "5,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-four-fill", + "content": "", + "style": "outline", + "tags": "*updated*,4,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-nine-fill", + "content": "", + "style": "outline", + "tags": "9,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-one-fill", + "content": "", + "style": "outline", + "tags": "1,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-seven-fill", + "content": "", + "style": "outline", + "tags": "7,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-six-fill", + "content": "", + "style": "outline", + "tags": "6,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-three-fill", + "content": "", + "style": "outline", + "tags": "3,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-two-fill", + "content": "", + "style": "outline", + "tags": "2,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-zero-fill", + "content": "", + "style": "outline", + "tags": "0,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-eight-fill", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-five-fill", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-four-fill", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-nine-fill", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-one-fill", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-seven-fill", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-six-fill", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-eight-fill", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-five-fill", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-four-fill", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-nine-fill", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-one-fill", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-seven-fill", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-six-fill", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-three-fill", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-two-fill", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-zero-fill", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-three-fill", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-two-fill", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-zero-fill", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "numpad-fill", + "content": "", + "style": "outline", + "tags": "*new*,dialer,dialpad,call-center,telephone,landline,password,passcode", + "set_id": 1 + }, + { + "name": "nut-fill", + "content": "", + "style": "outline", + "tags": "bolts,screws,machinery,tools,hexagon", + "set_id": 1 + }, + { + "name": "ny-times-logo-fill", + "content": "", + "style": "outline", + "tags": "nyt,new york times,logos,reading,writing,news,newspaper", + "set_id": 1 + }, + { + "name": "octagon-fill", + "content": "", + "style": "outline", + "tags": "8,shapes,polygons", + "set_id": 1 + }, + { + "name": "office-chair-fill", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "onigiri-fill", + "content": "", + "style": "outline", + "tags": "*new*,rice ball,japanese,food,restaurant", + "set_id": 1 + }, + { + "name": "open-ai-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,artificial intelligence,ai,chatgpt,llm,logos", + "set_id": 1 + }, + { + "name": "option-fill", + "content": "", + "style": "outline", + "tags": "keyboard,shortcut,modifier", + "set_id": 1 + }, + { + "name": "orange-fill", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "orange-slice-fill", + "content": "", + "style": "outline", + "tags": "food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "oven-fill", + "content": "", + "style": "outline", + "tags": "*new*,stove,stovetop,food,cooking,cuisine,kitchen", + "set_id": 1 + }, + { + "name": "package-fill", + "content": "", + "style": "outline", + "tags": "packages,boxes,delivery,mail,postal service,bundles,library,libraries,shipping", + "set_id": 1 + }, + { + "name": "paint-brush-fill", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-broad-fill", + "content": "", + "style": "outline", + "tags": "fill,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-household-fill", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-bucket-fill", + "content": "", + "style": "outline", + "tags": "*updated*,paintbucket,colors,color picker,fill,arts", + "set_id": 1 + }, + { + "name": "paint-roller-fill", + "content": "", + "style": "outline", + "tags": "colors,color picker,fill,arts,theme", + "set_id": 1 + }, + { + "name": "palette-fill", + "content": "", + "style": "outline", + "tags": "paint,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "panorama-fill", + "content": "", + "style": "outline", + "tags": "*new*,image,picture,photography,landscape,360", + "set_id": 1 + }, + { + "name": "pants-fill", + "content": "", + "style": "outline", + "tags": "clothing,clothes,jeans", + "set_id": 1 + }, + { + "name": "paper-plane-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-right-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-tilt-fill", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paperclip-fill", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "paperclip-horizontal-fill", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "parachute-fill", + "content": "", + "style": "outline", + "tags": "skydiving,safety", + "set_id": 1 + }, + { + "name": "paragraph-fill", + "content": "", + "style": "outline", + "tags": "pilcrow", + "set_id": 1 + }, + { + "name": "parallelogram-fill", + "content": "", + "style": "outline", + "tags": "shapes,bandcamp,logos", + "set_id": 1 + }, + { + "name": "park-fill", + "content": "", + "style": "outline", + "tags": "bench,outdoors", + "set_id": 1 + }, + { + "name": "password-fill", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "path-fill", + "content": "", + "style": "outline", + "tags": "transit,travel,trail,gps,navigation,route,destination,vector", + "set_id": 1 + }, + { + "name": "patreon-logo-fill", + "content": "", + "style": "outline", + "tags": "*updated*,crowdfunding,logos", + "set_id": 1 + }, + { + "name": "pause-fill", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "pause-circle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop,round", + "set_id": 1 + }, + { + "name": "paw-print-fill", + "content": "", + "style": "outline", + "tags": "pets,pet store,pet shop,animals,cat,dog,veterinarian", + "set_id": 1 + }, + { + "name": "paypal-logo-fill", + "content": "", + "style": "outline", + "tags": "payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "peace-fill", + "content": "", + "style": "outline", + "tags": "love,hippies,peace sign,symbols", + "set_id": 1 + }, + { + "name": "pen-fill", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pen-nib-fill", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pen-nib-straight-fill", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pencil-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-circle-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-line-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-ruler-fill", + "content": "", + "style": "outline", + "tags": "*new*,drawing,drafting,construction,tools", + "set_id": 1 + }, + { + "name": "pencil-simple-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-line-fill", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-slash-fill", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pencil-slash-fill", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pentagon-fill", + "content": "", + "style": "outline", + "tags": "*new*,shapes,polygons,5", + "set_id": 1 + }, + { + "name": "pentagram-fill", + "content": "", + "style": "outline", + "tags": "star,wicca,satan,satanism,religion,spirituality,evil,magic", + "set_id": 1 + }, + { + "name": "pepper-fill", + "content": "", + "style": "outline", + "tags": "food,spicy,chile,vegetable", + "set_id": 1 + }, + { + "name": "percent-fill", + "content": "", + "style": "outline", + "tags": "%,percentage,percentile,ratio,delta,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "person-fill", + "content": "", + "style": "outline", + "tags": "walking,human,woman,man,body,transit,transportation,travel,commuter,user", + "set_id": 1 + }, + { + "name": "person-arms-spread-fill", + "content": "", + "style": "outline", + "tags": "accessibility,vitruvian,stretch,sports", + "set_id": 1 + }, + { + "name": "person-simple-fill", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-bike-fill", + "content": "", + "style": "outline", + "tags": "pedestrian,biking,bicycle,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-circle-fill", + "content": "", + "style": "outline", + "tags": "*new*,human,accessibility,a11y,vitruvius,vitruvian", + "set_id": 1 + }, + { + "name": "person-simple-hike-fill", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,climbing,mountaineering,bouldering", + "set_id": 1 + }, + { + "name": "person-simple-run-fill", + "content": "", + "style": "outline", + "tags": "pedestrian,running,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-ski-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,skiing,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-snowboard-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,snowboarding,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-swim-fill", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,swimming,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-tai-chi-fill", + "content": "", + "style": "outline", + "tags": "*new*,mindfulness,martial arts,meditation,sports,exercise,yoga", + "set_id": 1 + }, + { + "name": "person-simple-throw-fill", + "content": "", + "style": "outline", + "tags": "pedestrian,tennis,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-walk-fill", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "perspective-fill", + "content": "", + "style": "outline", + "tags": "3d,skew,warp,trapezoid", + "set_id": 1 + }, + { + "name": "phone-fill", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-call-fill", + "content": "", + "style": "outline", + "tags": "calls,calling,ringing,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-disconnect-fill", + "content": "", + "style": "outline", + "tags": "calls,hang up,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-incoming-fill", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-list-fill", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-outgoing-fill", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-pause-fill", + "content": "", + "style": "outline", + "tags": "*new*,calls,hold,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-plus-fill", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk,conference,add", + "set_id": 1 + }, + { + "name": "phone-slash-fill", + "content": "", + "style": "outline", + "tags": "calls,disabled,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-transfer-fill", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-x-fill", + "content": "", + "style": "outline", + "tags": "calls,missed,errors,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phosphor-logo-fill", + "content": "", + "style": "outline", + "tags": "logos", + "set_id": 1 + }, + { + "name": "pi-fill", + "content": "", + "style": "outline", + "tags": "π,symbol,mathematics,circle", + "set_id": 1 + }, + { + "name": "piano-keys-fill", + "content": "", + "style": "outline", + "tags": "music,instrument,keyboard", + "set_id": 1 + }, + { + "name": "picnic-table-fill", + "content": "", + "style": "outline", + "tags": "*new*,bench,park,outdoors", + "set_id": 1 + }, + { + "name": "picture-in-picture-fill", + "content": "", + "style": "outline", + "tags": "pip,pop-out,minimize,maximize", + "set_id": 1 + }, + { + "name": "piggy-bank-fill", + "content": "", + "style": "outline", + "tags": "savings,deposit,money,coins", + "set_id": 1 + }, + { + "name": "pill-fill", + "content": "", + "style": "outline", + "tags": "capsule,medicine,rx,pharmacy,pharmacist,pharmaceuticals,prescription,drugs", + "set_id": 1 + }, + { + "name": "ping-pong-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,paddle", + "set_id": 1 + }, + { + "name": "pint-glass-fill", + "content": "", + "style": "outline", + "tags": "*new*,water,beverage,drinks,beverages,food,dining", + "set_id": 1 + }, + { + "name": "pinterest-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,vision board,mood board,social media", + "set_id": 1 + }, + { + "name": "pinwheel-fill", + "content": "", + "style": "outline", + "tags": "toys,whirligig", + "set_id": 1 + }, + { + "name": "pipe-fill", + "content": "", + "style": "outline", + "tags": "*new*,tube,plumber,plumbing,construction", + "set_id": 1 + }, + { + "name": "pipe-wrench-fill", + "content": "", + "style": "outline", + "tags": "*new*,plumber,plumbing,tools,construction", + "set_id": 1 + }, + { + "name": "pix-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "pizza-fill", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "placeholder-fill", + "content": "", + "style": "outline", + "tags": "empty,notdef,tofu,rectangle slash,missing", + "set_id": 1 + }, + { + "name": "planet-fill", + "content": "", + "style": "outline", + "tags": "saturn,world,globe,astronomy,space", + "set_id": 1 + }, + { + "name": "plant-fill", + "content": "", + "style": "outline", + "tags": "sprout,vegan,farm,farming,garden,gardening", + "set_id": 1 + }, + { + "name": "play-fill", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start", + "set_id": 1 + }, + { + "name": "play-circle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,round", + "set_id": 1 + }, + { + "name": "play-pause-fill", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "playlist-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,queue", + "set_id": 1 + }, + { + "name": "plug-fill", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plug-charging-fill", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,charge,charging", + "set_id": 1 + }, + { + "name": "plugs-fill", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,disconnected", + "set_id": 1 + }, + { + "name": "plugs-connected-fill", + "content": "", + "style": "outline", + "tags": "*updated*,outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plus-fill", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "plus-circle-fill", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,round,+", + "set_id": 1 + }, + { + "name": "plus-minus-fill", + "content": "", + "style": "outline", + "tags": "plus or minus,plus/minus,add/subtract,addition,sum,subtraction,difference,mathematics,arithmetic,calculator,+,-,±", + "set_id": 1 + }, + { + "name": "plus-square-fill", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "poker-chip-fill", + "content": "", + "style": "outline", + "tags": "chips,tokens,cards,gambling,casino", + "set_id": 1 + }, + { + "name": "police-car-fill", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,law enforcement", + "set_id": 1 + }, + { + "name": "polygon-fill", + "content": "", + "style": "outline", + "tags": "shapes,drawing", + "set_id": 1 + }, + { + "name": "popcorn-fill", + "content": "", + "style": "outline", + "tags": "food,movies,theater", + "set_id": 1 + }, + { + "name": "popsicle-fill", + "content": "", + "style": "outline", + "tags": "*new*,ice cream,dessert,summer,food", + "set_id": 1 + }, + { + "name": "potted-plant-fill", + "content": "", + "style": "outline", + "tags": "sprout,vegan,garden,gardening", + "set_id": 1 + }, + { + "name": "power-fill", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,on,off,on/off,switch,power switch", + "set_id": 1 + }, + { + "name": "prescription-fill", + "content": "", + "style": "outline", + "tags": "rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor", + "set_id": 1 + }, + { + "name": "presentation-fill", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "presentation-chart-fill", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,graphs,graphing,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "printer-fill", + "content": "", + "style": "outline", + "tags": "printing", + "set_id": 1 + }, + { + "name": "prohibit-fill", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "prohibit-inset-fill", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "projector-screen-fill", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,movies,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "projector-screen-chart-fill", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "pulse-fill", + "content": "", + "style": "outline", + "tags": "activity,heartbeat,medical,ecg,ekg,vitals,monitor,medicine", + "set_id": 1 + }, + { + "name": "push-pin-fill", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-fill", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-slash-fill", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "push-pin-slash-fill", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "puzzle-piece-fill", + "content": "", + "style": "outline", + "tags": "board game,element,component,extension,plugin", + "set_id": 1 + }, + { + "name": "qr-code-fill", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "question-fill", + "content": "", + "style": "outline", + "tags": "information,help,support,questions", + "set_id": 1 + }, + { + "name": "question-mark-fill", + "content": "", + "style": "outline", + "tags": "*new*,?,information,help,support,questions,punctuation,symbol", + "set_id": 1 + }, + { + "name": "queue-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,playlist", + "set_id": 1 + }, + { + "name": "quotes-fill", + "content": "", + "style": "outline", + "tags": "quoations,quotation marks,double-quotes,writing,books", + "set_id": 1 + }, + { + "name": "rabbit-fill", + "content": "", + "style": "outline", + "tags": "*new*,hare,fast,animal", + "set_id": 1 + }, + { + "name": "racquet-fill", + "content": "", + "style": "outline", + "tags": "*new*,sports,tennis,squash,pickleball", + "set_id": 1 + }, + { + "name": "radical-fill", + "content": "", + "style": "outline", + "tags": "√,radix,radicand,square root,squareroot,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "radio-fill", + "content": "", + "style": "outline", + "tags": "broadcast,fm,am,xm,transmitter,receiver", + "set_id": 1 + }, + { + "name": "radio-button-fill", + "content": "", + "style": "outline", + "tags": "input,checkbox,checked", + "set_id": 1 + }, + { + "name": "radioactive-fill", + "content": "", + "style": "outline", + "tags": "radiation,danger,warning,nuclear,atomic", + "set_id": 1 + }, + { + "name": "rainbow-fill", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,arc,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "rainbow-cloud-fill", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,cloudy,partly cloudy,partly sunny,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "ranking-fill", + "content": "", + "style": "outline", + "tags": "*new*,medal,rank,leaderboard,winner,sports", + "set_id": 1 + }, + { + "name": "read-cv-logo-fill", + "content": "", + "style": "outline", + "tags": "resume,jobs,logos", + "set_id": 1 + }, + { + "name": "receipt-fill", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense", + "set_id": 1 + }, + { + "name": "receipt-x-fill", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense,cancel", + "set_id": 1 + }, + { + "name": "record-fill", + "content": "", + "style": "outline", + "tags": "music,audio,recording,recorder,voice memo", + "set_id": 1 + }, + { + "name": "rectangle-fill", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "rectangle-dashed-fill", + "content": "", + "style": "outline", + "tags": "*new*,4,shapes,polygons,box,missing", + "set_id": 1 + }, + { + "name": "recycle-fill", + "content": "", + "style": "outline", + "tags": "recycling,trash,environmental,green", + "set_id": 1 + }, + { + "name": "reddit-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,subreddit,snoo,social media", + "set_id": 1 + }, + { + "name": "repeat-fill", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "repeat-once-fill", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "replit-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,logos,ide,editor,coding", + "set_id": 1 + }, + { + "name": "resize-fill", + "content": "", + "style": "outline", + "tags": "*new*,maximize,expand,grow", + "set_id": 1 + }, + { + "name": "rewind-fill", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "rewind-circle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "road-horizon-fill", + "content": "", + "style": "outline", + "tags": "trip,drive,road,travel,transportation,highway", + "set_id": 1 + }, + { + "name": "robot-fill", + "content": "", + "style": "outline", + "tags": "automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "rocket-fill", + "content": "", + "style": "outline", + "tags": "spaceship,launch,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rocket-launch-fill", + "content": "", + "style": "outline", + "tags": "*updated*,spaceship,flying,blastoff,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rows-fill", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "rows-plus-bottom-fill", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rows-plus-top-fill", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rss-fill", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rss-simple-fill", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rug-fill", + "content": "", + "style": "outline", + "tags": "*updated*,tapestry,carpet", + "set_id": 1 + }, + { + "name": "ruler-fill", + "content": "", + "style": "outline", + "tags": "measure,scale,distance", + "set_id": 1 + }, + { + "name": "sailboat-fill", + "content": "", + "style": "outline", + "tags": "*new*,sailing,ship,vehicles,transportation,sports,places,locations", + "set_id": 1 + }, + { + "name": "scales-fill", + "content": "", + "style": "outline", + "tags": "measure,balance,law,justice,government", + "set_id": 1 + }, + { + "name": "scan-fill", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "scan-smiley-fill", + "content": "", + "style": "outline", + "tags": "*new*,facial recognition,face unlock,scanner", + "set_id": 1 + }, + { + "name": "scissors-fill", + "content": "", + "style": "outline", + "tags": "*updated*,cut,snip,clipboard", + "set_id": 1 + }, + { + "name": "scooter-fill", + "content": "", + "style": "outline", + "tags": "vehicles,transportation,travel,transit", + "set_id": 1 + }, + { + "name": "screencast-fill", + "content": "", + "style": "outline", + "tags": "apple,airplay,screencasting,screen share,television,tv", + "set_id": 1 + }, + { + "name": "screwdriver-fill", + "content": "", + "style": "outline", + "tags": "*new*,tools,construction,flathead,drill", + "set_id": 1 + }, + { + "name": "scribble-fill", + "content": "", + "style": "outline", + "tags": "*new*,doodles,squiggle,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scribble-loop-fill", + "content": "", + "style": "outline", + "tags": "doodles,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scroll-fill", + "content": "", + "style": "outline", + "tags": "*updated*,parchment,paper,script,spell,fantasy", + "set_id": 1 + }, + { + "name": "seal-fill", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-check-fill", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-percent-fill", + "content": "", + "style": "outline", + "tags": "*new*,badge,discount,sale,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-question-fill", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-warning-fill", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,errors,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seat-fill", + "content": "", + "style": "outline", + "tags": "*new*,chair,car seat,airplane seat,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "seatbelt-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,safety", + "set_id": 1 + }, + { + "name": "security-camera-fill", + "content": "", + "style": "outline", + "tags": "*new*,cctv,surveillance,video,monitor,motion detector,safety", + "set_id": 1 + }, + { + "name": "selection-fill", + "content": "", + "style": "outline", + "tags": "marquis,select,square dashed", + "set_id": 1 + }, + { + "name": "selection-all-fill", + "content": "", + "style": "outline", + "tags": "marquis,select all", + "set_id": 1 + }, + { + "name": "selection-background-fill", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-foreground-fill", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-inverse-fill", + "content": "", + "style": "outline", + "tags": "marquis,invert", + "set_id": 1 + }, + { + "name": "selection-plus-fill", + "content": "", + "style": "outline", + "tags": "marquis,add", + "set_id": 1 + }, + { + "name": "selection-slash-fill", + "content": "", + "style": "outline", + "tags": "marquis,unselect", + "set_id": 1 + }, + { + "name": "shapes-fill", + "content": "", + "style": "outline", + "tags": "geometry,square,circle,triangle", + "set_id": 1 + }, + { + "name": "share-fill", + "content": "", + "style": "outline", + "tags": "send to,export,arrows", + "set_id": 1 + }, + { + "name": "share-fat-fill", + "content": "", + "style": "outline", + "tags": "export,send to", + "set_id": 1 + }, + { + "name": "share-network-fill", + "content": "", + "style": "outline", + "tags": "send to,export", + "set_id": 1 + }, + { + "name": "shield-fill", + "content": "", + "style": "outline", + "tags": "badge,security,secured,defense,defended,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-check-fill", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-checkered-fill", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-chevron-fill", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-plus-fill", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-slash-fill", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,disabled", + "set_id": 1 + }, + { + "name": "shield-star-fill", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-warning-fill", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,errors", + "set_id": 1 + }, + { + "name": "shipping-container-fill", + "content": "", + "style": "outline", + "tags": "*new*,shipping,transportation,places,locations", + "set_id": 1 + }, + { + "name": "shirt-folded-fill", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "shooting-star-fill", + "content": "", + "style": "outline", + "tags": "wish,comet,meteor", + "set_id": 1 + }, + { + "name": "shopping-bag-fill", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-bag-open-fill", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-fill", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-simple-fill", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shovel-fill", + "content": "", + "style": "outline", + "tags": "*new*,tools,digging,construction", + "set_id": 1 + }, + { + "name": "shower-fill", + "content": "", + "style": "outline", + "tags": "bath,bathtub,bathroom,faucet", + "set_id": 1 + }, + { + "name": "shrimp-fill", + "content": "", + "style": "outline", + "tags": "food,seafood,prawn", + "set_id": 1 + }, + { + "name": "shuffle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-angular-fill", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-simple-fill", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "sidebar-fill", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sidebar-simple-fill", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sigma-fill", + "content": "", + "style": "outline", + "tags": "σ,symbol,mathematics,sum", + "set_id": 1 + }, + { + "name": "sign-in-fill", + "content": "", + "style": "outline", + "tags": "*updated*,signin,login,log in,enter", + "set_id": 1 + }, + { + "name": "sign-out-fill", + "content": "", + "style": "outline", + "tags": "*updated*,signout,logout,log out,exit", + "set_id": 1 + }, + { + "name": "signature-fill", + "content": "", + "style": "outline", + "tags": "*updated*,sign,autograph,verify", + "set_id": 1 + }, + { + "name": "signpost-fill", + "content": "", + "style": "outline", + "tags": "direction,traffic,road sign,transit,transportation", + "set_id": 1 + }, + { + "name": "sim-card-fill", + "content": "", + "style": "outline", + "tags": "*updated*,cellular,cellphone,mobile", + "set_id": 1 + }, + { + "name": "siren-fill", + "content": "", + "style": "outline", + "tags": "alarm,police,lights,warning", + "set_id": 1 + }, + { + "name": "sketch-logo-fill", + "content": "", + "style": "outline", + "tags": "drawing,art,illustration,ui,interface,prototype,prototyping,gemstone,diamond", + "set_id": 1 + }, + { + "name": "skip-back-fill", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-back-circle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-forward-fill", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skip-forward-circle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skull-fill", + "content": "", + "style": "outline", + "tags": "death,dead,kill", + "set_id": 1 + }, + { + "name": "skype-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,chat,video conference", + "set_id": 1 + }, + { + "name": "slack-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,messaging", + "set_id": 1 + }, + { + "name": "sliders-fill", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "sliders-horizontal-fill", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "slideshow-fill", + "content": "", + "style": "outline", + "tags": "pictures,images,photography,gallery,carousel", + "set_id": 1 + }, + { + "name": "smiley-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-angry-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,mad,frown", + "set_id": 1 + }, + { + "name": "smiley-blank-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,no face", + "set_id": 1 + }, + { + "name": "smiley-meh-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,neutral", + "set_id": 1 + }, + { + "name": "smiley-melting-fill", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,embarrassment,sarcasm,shame,hot,heat", + "set_id": 1 + }, + { + "name": "smiley-nervous-fill", + "content": "", + "style": "outline", + "tags": "*updated*,face,emoji,anxious,uncomfortable,uneasy,queasy,sick,ill", + "set_id": 1 + }, + { + "name": "smiley-sad-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,unhappy,frowning", + "set_id": 1 + }, + { + "name": "smiley-sticker-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-wink-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,winking,flirting,cute", + "set_id": 1 + }, + { + "name": "smiley-x-eyes-fill", + "content": "", + "style": "outline", + "tags": "face,emoji,dead,killed,unconscious", + "set_id": 1 + }, + { + "name": "snapchat-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,messaging,social media", + "set_id": 1 + }, + { + "name": "sneaker-fill", + "content": "", + "style": "outline", + "tags": "clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "sneaker-move-fill", + "content": "", + "style": "outline", + "tags": "*updated*,clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "snowflake-fill", + "content": "", + "style": "outline", + "tags": "meteorology,snowy,snowing,snowstorm", + "set_id": 1 + }, + { + "name": "soccer-ball-fill", + "content": "", + "style": "outline", + "tags": "*updated*,sports,football,mls", + "set_id": 1 + }, + { + "name": "sock-fill", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "solar-panel-fill", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "solar-roof-fill", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "sort-ascending-fill", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,increasing,a to z,arrows,list", + "set_id": 1 + }, + { + "name": "sort-descending-fill", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,decreasing,z to a,arrows,list", + "set_id": 1 + }, + { + "name": "soundcloud-logo-fill", + "content": "", + "style": "outline", + "tags": "music,social media,logos", + "set_id": 1 + }, + { + "name": "spade-fill", + "content": "", + "style": "outline", + "tags": "spades,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "sparkle-fill", + "content": "", + "style": "outline", + "tags": "star,rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "speaker-hifi-fill", + "content": "", + "style": "outline", + "tags": "music,audio,sound,stereo", + "set_id": 1 + }, + { + "name": "speaker-high-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-low-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-none-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-high-fill", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-low-fill", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-none-fill", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-slash-fill", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-simple-x-fill", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speaker-slash-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-x-fill", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speedometer-fill", + "content": "", + "style": "outline", + "tags": "*new*,gauge,dashboard,meter,speed,odometer,performance", + "set_id": 1 + }, + { + "name": "sphere-fill", + "content": "", + "style": "outline", + "tags": "*new*,circle,ball,3d,mesh,cad,model", + "set_id": 1 + }, + { + "name": "spinner-fill", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-ball-fill", + "content": "", + "style": "outline", + "tags": "*new*,loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-gap-fill", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spiral-fill", + "content": "", + "style": "outline", + "tags": "*updated*,spin,rotate,dizzy", + "set_id": 1 + }, + { + "name": "split-horizontal-fill", + "content": "", + "style": "outline", + "tags": "resize,columns", + "set_id": 1 + }, + { + "name": "split-vertical-fill", + "content": "", + "style": "outline", + "tags": "resize,rows", + "set_id": 1 + }, + { + "name": "spotify-logo-fill", + "content": "", + "style": "outline", + "tags": "music,player,streaming", + "set_id": 1 + }, + { + "name": "spray-bottle-fill", + "content": "", + "style": "outline", + "tags": "*new*,cleaner,cleaning", + "set_id": 1 + }, + { + "name": "square-fill", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "square-half-fill", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-half-bottom-fill", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-logo-fill", + "content": "", + "style": "outline", + "tags": "squareup,payment", + "set_id": 1 + }, + { + "name": "square-split-horizontal-fill", + "content": "", + "style": "outline", + "tags": "shapes,polygons,columns", + "set_id": 1 + }, + { + "name": "square-split-vertical-fill", + "content": "", + "style": "outline", + "tags": "shapes,polygons,rows", + "set_id": 1 + }, + { + "name": "squares-four-fill", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,apps,applications,grid,table,microsoft,logos", + "set_id": 1 + }, + { + "name": "stack-fill", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stack-minus-fill", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,remove,delete", + "set_id": 1 + }, + { + "name": "stack-overflow-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,code", + "set_id": 1 + }, + { + "name": "stack-plus-fill", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,add", + "set_id": 1 + }, + { + "name": "stack-simple-fill", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stairs-fill", + "content": "", + "style": "outline", + "tags": "staircase,steps,escalator,exit,signs", + "set_id": 1 + }, + { + "name": "stamp-fill", + "content": "", + "style": "outline", + "tags": "clone,seal,official", + "set_id": 1 + }, + { + "name": "standard-definition-fill", + "content": "", + "style": "outline", + "tags": "*new*,sd,resolution,video", + "set_id": 1 + }, + { + "name": "star-fill", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-and-crescent-fill", + "content": "", + "style": "outline", + "tags": "islam,muslim,moon,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "star-four-fill", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-half-fill", + "content": "", + "style": "outline", + "tags": "rate,ratings", + "set_id": 1 + }, + { + "name": "star-of-david-fill", + "content": "", + "style": "outline", + "tags": "judaism,jewish,hexagram,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "steam-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,gaming,games", + "set_id": 1 + }, + { + "name": "steering-wheel-fill", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobiles,driving", + "set_id": 1 + }, + { + "name": "steps-fill", + "content": "", + "style": "outline", + "tags": "stairs,staircase,exit,signs", + "set_id": 1 + }, + { + "name": "stethoscope-fill", + "content": "", + "style": "outline", + "tags": "hospital,medical,medicine,injury,safety,emergency,doctor,heart", + "set_id": 1 + }, + { + "name": "sticker-fill", + "content": "", + "style": "outline", + "tags": "stickers,sticker pack,labels", + "set_id": 1 + }, + { + "name": "stool-fill", + "content": "", + "style": "outline", + "tags": "chair,seat,furniture", + "set_id": 1 + }, + { + "name": "stop-fill", + "content": "", + "style": "outline", + "tags": "music,audio", + "set_id": 1 + }, + { + "name": "stop-circle-fill", + "content": "", + "style": "outline", + "tags": "music,audio,round", + "set_id": 1 + }, + { + "name": "storefront-fill", + "content": "", + "style": "outline", + "tags": "shops,shopping,markets,stores,buildings,places,locations", + "set_id": 1 + }, + { + "name": "strategy-fill", + "content": "", + "style": "outline", + "tags": "sports,strategem,plan,tic-tac-toe", + "set_id": 1 + }, + { + "name": "stripe-logo-fill", + "content": "", + "style": "outline", + "tags": "payment", + "set_id": 1 + }, + { + "name": "student-fill", + "content": "", + "style": "outline", + "tags": "pupil,graduate,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "subset-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,⊆,subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subset-proper-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,⊂,proper subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subtitles-fill", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "subtitles-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,subtitles,television,tv,transcribed,transcription,accessibility,a11y,disabled", + "set_id": 1 + }, + { + "name": "subtract-fill", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subtract-square-fill", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subway-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,underground,train,tunnel,metro,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "suitcase-fill", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "suitcase-rolling-fill", + "content": "", + "style": "outline", + "tags": "suitcase,luggage,travel,transportation", + "set_id": 1 + }, + { + "name": "suitcase-simple-fill", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "sun-fill", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,lighten,brighten", + "set_id": 1 + }, + { + "name": "sun-dim-fill", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,darken", + "set_id": 1 + }, + { + "name": "sun-horizon-fill", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,sunrise,sunset", + "set_id": 1 + }, + { + "name": "sunglasses-fill", + "content": "", + "style": "outline", + "tags": "vision,sun,spectacles", + "set_id": 1 + }, + { + "name": "superset-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,⊇,superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "superset-proper-of-fill", + "content": "", + "style": "outline", + "tags": "*new*,⊃,proper superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "swap-fill", + "content": "", + "style": "outline", + "tags": "layers,replace,exchange,reverse", + "set_id": 1 + }, + { + "name": "swatches-fill", + "content": "", + "style": "outline", + "tags": "colors,color picker,samples,pantone", + "set_id": 1 + }, + { + "name": "swimming-pool-fill", + "content": "", + "style": "outline", + "tags": "swim,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "sword-fill", + "content": "", + "style": "outline", + "tags": "weapon,knife,dagger,gladius,video games,rpg,gaming,war", + "set_id": 1 + }, + { + "name": "synagogue-fill", + "content": "", + "style": "outline", + "tags": "jewish,judaism,temple,religion,worship", + "set_id": 1 + }, + { + "name": "syringe-fill", + "content": "", + "style": "outline", + "tags": "needle,hypodermic,vaccine,medicine,doctor,shot,hospital", + "set_id": 1 + }, + { + "name": "t-shirt-fill", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "table-fill", + "content": "", + "style": "outline", + "tags": "tables,tabular,speadsheets,excel,grid,form", + "set_id": 1 + }, + { + "name": "tabs-fill", + "content": "", + "style": "outline", + "tags": "*updated*,browser,window,folders,files", + "set_id": 1 + }, + { + "name": "tag-fill", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "tag-chevron-fill", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale", + "set_id": 1 + }, + { + "name": "tag-simple-fill", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "target-fill", + "content": "", + "style": "outline", + "tags": "bullseye,radar,archery,accuracy,precision", + "set_id": 1 + }, + { + "name": "taxi-fill", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,livery,limousine,uber", + "set_id": 1 + }, + { + "name": "tea-bag-fill", + "content": "", + "style": "outline", + "tags": "*new*,drinks,beverages,sachet,caffeine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "telegram-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "television-fill", + "content": "", + "style": "outline", + "tags": "screen,tv,displays", + "set_id": 1 + }, + { + "name": "television-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,screen,tv,displays", + "set_id": 1 + }, + { + "name": "tennis-ball-fill", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "tent-fill", + "content": "", + "style": "outline", + "tags": "camping,outdoors,tarp", + "set_id": 1 + }, + { + "name": "terminal-fill", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "terminal-window-fill", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "test-tube-fill", + "content": "", + "style": "outline", + "tags": "science,chemistry,experiment,vial", + "set_id": 1 + }, + { + "name": "text-a-underline-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "text-aa-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-align-center-fill", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,centered", + "set_id": 1 + }, + { + "name": "text-align-justify-fill", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,justified", + "set_id": 1 + }, + { + "name": "text-align-left-fill", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush left", + "set_id": 1 + }, + { + "name": "text-align-right-fill", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush right", + "set_id": 1 + }, + { + "name": "text-b-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,bold,boldface,emphasis", + "set_id": 1 + }, + { + "name": "text-columns-fill", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,article", + "set_id": 1 + }, + { + "name": "text-h-fill", + "content": "", + "style": "outline", + "tags": "heading,typography,print", + "set_id": 1 + }, + { + "name": "text-h-five-fill", + "content": "", + "style": "outline", + "tags": "heading,h5,typography,print", + "set_id": 1 + }, + { + "name": "text-h-four-fill", + "content": "", + "style": "outline", + "tags": "*updated*,heading,h4,typography,print", + "set_id": 1 + }, + { + "name": "text-h-one-fill", + "content": "", + "style": "outline", + "tags": "heading,h1,typography,print", + "set_id": 1 + }, + { + "name": "text-h-six-fill", + "content": "", + "style": "outline", + "tags": "heading,h6,typography,print", + "set_id": 1 + }, + { + "name": "text-h-three-fill", + "content": "", + "style": "outline", + "tags": "heading,h3,typography,print", + "set_id": 1 + }, + { + "name": "text-h-two-fill", + "content": "", + "style": "outline", + "tags": "heading,h2,typography,print", + "set_id": 1 + }, + { + "name": "text-indent-fill", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,menu", + "set_id": 1 + }, + { + "name": "text-italic-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,slant,oblique,stress,emphasis,calligraphy", + "set_id": 1 + }, + { + "name": "text-outdent-fill", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,unindent,dedent,menu", + "set_id": 1 + }, + { + "name": "text-strikethrough-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,struck,remove,delete,change", + "set_id": 1 + }, + { + "name": "text-subscript-fill", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,power,exponent,calculator", + "set_id": 1 + }, + { + "name": "text-superscript-fill", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,calculator", + "set_id": 1 + }, + { + "name": "text-t-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-t-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,typography,typeface,print,font,formatting,clear", + "set_id": 1 + }, + { + "name": "text-underline-fill", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "textbox-fill", + "content": "", + "style": "outline", + "tags": "input,cursor,field", + "set_id": 1 + }, + { + "name": "thermometer-fill", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "thermometer-cold-fill", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit", + "set_id": 1 + }, + { + "name": "thermometer-hot-fill", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,warm", + "set_id": 1 + }, + { + "name": "thermometer-simple-fill", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "threads-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,meta,instagram,social media", + "set_id": 1 + }, + { + "name": "three-d-fill", + "content": "", + "style": "outline", + "tags": "*new*,3d,cad,model", + "set_id": 1 + }, + { + "name": "thumbs-down-fill", + "content": "", + "style": "outline", + "tags": "dislike,hate,emoji,no", + "set_id": 1 + }, + { + "name": "thumbs-up-fill", + "content": "", + "style": "outline", + "tags": "like,love,favorited,favorites,emoji,yes", + "set_id": 1 + }, + { + "name": "ticket-fill", + "content": "", + "style": "outline", + "tags": "ticketstub,movie ticket,entry,admissions,events", + "set_id": 1 + }, + { + "name": "tidal-logo-fill", + "content": "", + "style": "outline", + "tags": "music,logos", + "set_id": 1 + }, + { + "name": "tiktok-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "tilde-fill", + "content": "", + "style": "outline", + "tags": "*new*,~,∼,proportional,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "timer-fill", + "content": "", + "style": "outline", + "tags": "clock,alarm,schedule,events,stopwatch,sports", + "set_id": 1 + }, + { + "name": "tip-jar-fill", + "content": "", + "style": "outline", + "tags": "*new*,give,deposit,donation,savings,money", + "set_id": 1 + }, + { + "name": "tipi-fill", + "content": "", + "style": "outline", + "tags": "teepee,lodge,tent,outdoors,camping,tarp", + "set_id": 1 + }, + { + "name": "tire-fill", + "content": "", + "style": "outline", + "tags": "*new*,wheel,vehicles,transportation", + "set_id": 1 + }, + { + "name": "toggle-left-fill", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toggle-right-fill", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toilet-fill", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toilet-paper-fill", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toolbox-fill", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "tooth-fill", + "content": "", + "style": "outline", + "tags": "teeth,dentistry,medical,medicine,doctor,cavity", + "set_id": 1 + }, + { + "name": "tornado-fill", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,twister,storm,wind,disaster", + "set_id": 1 + }, + { + "name": "tote-fill", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "tote-simple-fill", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "towel-fill", + "content": "", + "style": "outline", + "tags": "*new*,clothing,linen,hotel,beach,pool,swimming,shower,bath", + "set_id": 1 + }, + { + "name": "tractor-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "trademark-fill", + "content": "", + "style": "outline", + "tags": "tm,®,™,intellectual property", + "set_id": 1 + }, + { + "name": "trademark-registered-fill", + "content": "", + "style": "outline", + "tags": "®,™,intellectual property", + "set_id": 1 + }, + { + "name": "traffic-cone-fill", + "content": "", + "style": "outline", + "tags": "pylon,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-sign-fill", + "content": "", + "style": "outline", + "tags": "road signs,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-signal-fill", + "content": "", + "style": "outline", + "tags": "stop light,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "train-fill", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-regional-fill", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,freight,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-simple-fill", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "tram-fill", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,light rail,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "translate-fill", + "content": "", + "style": "outline", + "tags": "translation,languages,internationalization,i18n,speech", + "set_id": 1 + }, + { + "name": "trash-fill", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "trash-simple-fill", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "tray-fill", + "content": "", + "style": "outline", + "tags": "inbox,mailbox,bin", + "set_id": 1 + }, + { + "name": "tray-arrow-down-fill", + "content": "", + "style": "outline", + "tags": "inbox,saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "tray-arrow-up-fill", + "content": "", + "style": "outline", + "tags": "*new*,outbox,archival,unarchive,uploaded,uploading", + "set_id": 1 + }, + { + "name": "treasure-chest-fill", + "content": "", + "style": "outline", + "tags": "*new*,loot,lootbox,inventory,rewards,gaming,pirate", + "set_id": 1 + }, + { + "name": "tree-fill", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-evergreen-fill", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,pine,conifer,green,environmental", + "set_id": 1 + }, + { + "name": "tree-palm-fill", + "content": "", + "style": "outline", + "tags": "tropical,beach,plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-structure-fill", + "content": "", + "style": "outline", + "tags": "data structures,family tree,genealogy,hierarchy,taxonomy,charts,flowchart", + "set_id": 1 + }, + { + "name": "tree-view-fill", + "content": "", + "style": "outline", + "tags": "*new*,hierarchy", + "set_id": 1 + }, + { + "name": "trend-down-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,decrease,arrows", + "set_id": 1 + }, + { + "name": "trend-up-fill", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,increase,arrows", + "set_id": 1 + }, + { + "name": "triangle-fill", + "content": "", + "style": "outline", + "tags": "3,shapes,polygons", + "set_id": 1 + }, + { + "name": "triangle-dashed-fill", + "content": "", + "style": "outline", + "tags": "*new*,3,shapes,polygons,missing", + "set_id": 1 + }, + { + "name": "trolley-fill", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trolley-suitcase-fill", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trophy-fill", + "content": "", + "style": "outline", + "tags": "ribbons,medals,winning,victory,awards,prize", + "set_id": 1 + }, + { + "name": "truck-fill", + "content": "", + "style": "outline", + "tags": "trucks,cars,vehicles,automobile,shipping,delivery", + "set_id": 1 + }, + { + "name": "truck-trailer-fill", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,automobile,shipping,tractor,semi", + "set_id": 1 + }, + { + "name": "tumblr-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,social media,logos", + "set_id": 1 + }, + { + "name": "twitch-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,streaming,livestream,gaming,video games,social media", + "set_id": 1 + }, + { + "name": "twitter-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,social media,tweets,birds", + "set_id": 1 + }, + { + "name": "umbrella-fill", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "umbrella-simple-fill", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "union-fill", + "content": "", + "style": "outline", + "tags": "*new*,∪,union,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "unite-fill", + "content": "", + "style": "outline", + "tags": "*updated*,round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "unite-square-fill", + "content": "", + "style": "outline", + "tags": "join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "upload-fill", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "upload-simple-fill", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "usb-fill", + "content": "", + "style": "outline", + "tags": "serial,port,plug,peripheral,device", + "set_id": 1 + }, + { + "name": "user-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-check-fill", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-circle-check-fill", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-dashed-fill", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,pending,missing,removed", + "set_id": 1 + }, + { + "name": "user-circle-gear-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-circle-minus-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-circle-plus-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-focus-fill", + "content": "", + "style": "outline", + "tags": "identification,biometrics,facial recognition,profile,person,account,autofocus", + "set_id": 1 + }, + { + "name": "user-gear-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-list-fill", + "content": "", + "style": "outline", + "tags": "person,users,profiles,accounts,members,address book", + "set_id": 1 + }, + { + "name": "user-minus-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-plus-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-rectangle-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-sound-fill", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,speech,speaking,voice", + "set_id": 1 + }, + { + "name": "user-square-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-switch-fill", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,login,logout,signin,signout,settings,preferences", + "set_id": 1 + }, + { + "name": "users-fill", + "content": "", + "style": "outline", + "tags": "user,group,team,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-four-fill", + "content": "", + "style": "outline", + "tags": "user,group,team,department,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-three-fill", + "content": "", + "style": "outline", + "tags": "user,group,team,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "van-fill", + "content": "", + "style": "outline", + "tags": "westfalia,microbus,vanagon,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "vault-fill", + "content": "", + "style": "outline", + "tags": "safe,bank,security,secured,authentication,authenticated,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "vector-three-fill", + "content": "", + "style": "outline", + "tags": "*new*,3d,xyz,cartesian,coordinates,plane,volume,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vector-two-fill", + "content": "", + "style": "outline", + "tags": "*new*,2d,xy,cartesian,coordinates,plane,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vibrate-fill", + "content": "", + "style": "outline", + "tags": "audio,volume,viration,ringer,calls,silent,silenced", + "set_id": 1 + }, + { + "name": "video-fill", + "content": "", + "style": "outline", + "tags": "training,course,education,tutorial", + "set_id": 1 + }, + { + "name": "video-camera-fill", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "video-camera-slash-fill", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording,disabled", + "set_id": 1 + }, + { + "name": "video-conference-fill", + "content": "", + "style": "outline", + "tags": "*new*,video call,zoom,skype,discord,facetime,meeting", + "set_id": 1 + }, + { + "name": "vignette-fill", + "content": "", + "style": "outline", + "tags": "photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "vinyl-record-fill", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music,ep,lp", + "set_id": 1 + }, + { + "name": "virtual-reality-fill", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,headset,metaverse", + "set_id": 1 + }, + { + "name": "virus-fill", + "content": "", + "style": "outline", + "tags": "germs,disease,illness", + "set_id": 1 + }, + { + "name": "visor-fill", + "content": "", + "style": "outline", + "tags": "*new*,goggles,vision", + "set_id": 1 + }, + { + "name": "voicemail-fill", + "content": "", + "style": "outline", + "tags": "phonecalls,missed,recording,telephone,landline", + "set_id": 1 + }, + { + "name": "volleyball-fill", + "content": "", + "style": "outline", + "tags": "sports", + "set_id": 1 + }, + { + "name": "wall-fill", + "content": "", + "style": "outline", + "tags": "firewall,security,secured,blocks,bricks", + "set_id": 1 + }, + { + "name": "wallet-fill", + "content": "", + "style": "outline", + "tags": "money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "warehouse-fill", + "content": "", + "style": "outline", + "tags": "storage,industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "warning-fill", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-circle-fill", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,round", + "set_id": 1 + }, + { + "name": "warning-diamond-fill", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-octagon-fill", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,8,eight", + "set_id": 1 + }, + { + "name": "washing-machine-fill", + "content": "", + "style": "outline", + "tags": "*new*,clothing,laundry,cleaning", + "set_id": 1 + }, + { + "name": "watch-fill", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,clock,wristwatch,wearable", + "set_id": 1 + }, + { + "name": "wave-sawtooth-fill", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-sine-fill", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-square-fill", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-triangle-fill", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "waveform-fill", + "content": "", + "style": "outline", + "tags": "*updated*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waveform-slash-fill", + "content": "", + "style": "outline", + "tags": "*new*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waves-fill", + "content": "", + "style": "outline", + "tags": "ocean,tides,surf", + "set_id": 1 + }, + { + "name": "webcam-fill", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webcam-slash-fill", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webhooks-logo-fill", + "content": "", + "style": "outline", + "tags": "api", + "set_id": 1 + }, + { + "name": "wechat-logo-fill", + "content": "", + "style": "outline", + "tags": "weixin,logos", + "set_id": 1 + }, + { + "name": "whatsapp-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "wheelchair-fill", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wheelchair-motion-fill", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wifi-high-fill", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-low-fill", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-medium-fill", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-none-fill", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-slash-fill", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disabled,disconnected", + "set_id": 1 + }, + { + "name": "wifi-x-fill", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "wind-fill", + "content": "", + "style": "outline", + "tags": "meteorology,windy,stormy,blustery,gusty,air", + "set_id": 1 + }, + { + "name": "windmill-fill", + "content": "", + "style": "outline", + "tags": "*new*,turbine,energy,renewable,sustainability,countryside,landscape,green,power,buildings", + "set_id": 1 + }, + { + "name": "windows-logo-fill", + "content": "", + "style": "outline", + "tags": "microsoft,computers", + "set_id": 1 + }, + { + "name": "wine-fill", + "content": "", + "style": "outline", + "tags": "drinks,beverages,vineyard,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "wrench-fill", + "content": "", + "style": "outline", + "tags": "settings,setup,preferences,tools,machinery,mechanical,repairs", + "set_id": 1 + }, + { + "name": "x-fill", + "content": "", + "style": "outline", + "tags": "×,closed,cancelled,dismissed,times,multiply,mulitplication,product,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "x-circle-fill", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed,round", + "set_id": 1 + }, + { + "name": "x-logo-fill", + "content": "", + "style": "outline", + "tags": "*new*,twitter,logos,social media,tweets", + "set_id": 1 + }, + { + "name": "x-square-fill", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed", + "set_id": 1 + }, + { + "name": "yarn-fill", + "content": "", + "style": "outline", + "tags": "*new*,knitting,sewing", + "set_id": 1 + }, + { + "name": "yin-yang-fill", + "content": "", + "style": "outline", + "tags": "symbol,good,evil,black,white", + "set_id": 1 + }, + { + "name": "youtube-logo-fill", + "content": "", + "style": "outline", + "tags": "logos,google,videos,movies,social media", + "set_id": 1 + }, + { + "name": "acorn-duotone", + "content": "", + "style": "outline", + "tags": "*new*,savings,nut,vegetable,veggies,food,groceries,market", + "set_id": 1 + }, + { + "name": "address-book-duotone", + "content": "", + "style": "outline", + "tags": "contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "address-book-tabs-duotone", + "content": "", + "style": "outline", + "tags": "*new*,contacts,directory,roledex", + "set_id": 1 + }, + { + "name": "air-traffic-control-duotone", + "content": "", + "style": "outline", + "tags": "airport,travel,transportation,buildings", + "set_id": 1 + }, + { + "name": "airplane-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "airplane-in-flight-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-landing-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-takeoff-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplane-taxiing-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,airports,flights,flying,planes,transit,transportation,traveling,arrival", + "set_id": 1 + }, + { + "name": "airplane-tilt-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,airports,flights,flying,planes,transit,transportation,traveling,departure", + "set_id": 1 + }, + { + "name": "airplay-duotone", + "content": "", + "style": "outline", + "tags": "apple,screencasting,television,tv", + "set_id": 1 + }, + { + "name": "alarm-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,clock,schedule,events,watch", + "set_id": 1 + }, + { + "name": "alien-duotone", + "content": "", + "style": "outline", + "tags": "ufo,space,flying saucer,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "align-bottom-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-bottom-simple-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush bottom", + "set_id": 1 + }, + { + "name": "align-center-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-horizontal-simple-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-center-vertical-simple-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,centered,middle", + "set_id": 1 + }, + { + "name": "align-left-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-left-simple-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush left", + "set_id": 1 + }, + { + "name": "align-right-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-right-simple-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush right", + "set_id": 1 + }, + { + "name": "align-top-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "align-top-simple-duotone", + "content": "", + "style": "outline", + "tags": "alignment,arrangement,layout,flush top", + "set_id": 1 + }, + { + "name": "amazon-logo-duotone", + "content": "", + "style": "outline", + "tags": "ecommerce,shopping,logos", + "set_id": 1 + }, + { + "name": "ambulance-duotone", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,doctor,vehicles", + "set_id": 1 + }, + { + "name": "anchor-duotone", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "anchor-simple-duotone", + "content": "", + "style": "outline", + "tags": "nautical,boats,ships,hope,safety,insurance", + "set_id": 1 + }, + { + "name": "android-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,google,mobile,phone,cellular,cellphone", + "set_id": 1 + }, + { + "name": "angle-duotone", + "content": "", + "style": "outline", + "tags": "*new*,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "angular-logo-duotone", + "content": "", + "style": "outline", + "tags": "framework,javascript,google,web", + "set_id": 1 + }, + { + "name": "aperture-duotone", + "content": "", + "style": "outline", + "tags": "photography,cameras,pictures,lens", + "set_id": 1 + }, + { + "name": "app-store-logo-duotone", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "app-window-duotone", + "content": "", + "style": "outline", + "tags": "windows,software,programs,applications", + "set_id": 1 + }, + { + "name": "apple-logo-duotone", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "apple-podcasts-logo-duotone", + "content": "", + "style": "outline", + "tags": "macintosh,imac,iphone,ipad,macos,ios", + "set_id": 1 + }, + { + "name": "approximate-equals-duotone", + "content": "", + "style": "outline", + "tags": "*new*,≈,is approximately equal to,congruent,equality,equivalent,equivalence,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "archive-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "armchair-duotone", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "arrow-arc-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-arc-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply-all", + "set_id": 1 + }, + { + "name": "arrow-bend-double-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-left-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-right-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-bend-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,reply,re", + "set_id": 1 + }, + { + "name": "arrow-bend-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,forward,fwd", + "set_id": 1 + }, + { + "name": "arrow-circle-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-circle-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-clockwise-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-counter-clockwise-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrow-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-left-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-right-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-elbow-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-fat-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-line-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,caps lock,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-lines-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,outlined", + "set_id": 1 + }, + { + "name": "arrow-fat-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,shift,outlined", + "set_id": 1 + }, + { + "name": "arrow-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,bottom", + "set_id": 1 + }, + { + "name": "arrow-line-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,top", + "set_id": 1 + }, + { + "name": "arrow-line-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-line-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-in-duotone", + "content": "", + "style": "outline", + "tags": "import,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-out-duotone", + "content": "", + "style": "outline", + "tags": "export,external,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-square-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-u-down-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-down-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-left-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-down-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-right-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,undo,return,u-turns", + "set_id": 1 + }, + { + "name": "arrow-u-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead,redo,u-turns", + "set_id": 1 + }, + { + "name": "arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-left-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrow-up-right-duotone", + "content": "", + "style": "outline", + "tags": "directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-clockwise-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,redo,refreshing,sync,synchronize,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-counter-clockwise-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,undo,refreshing,rotate,spin,flip", + "set_id": 1 + }, + { + "name": "arrows-down-up-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,left,right", + "set_id": 1 + }, + { + "name": "arrows-in-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-cardinal-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize,shrink", + "set_id": 1 + }, + { + "name": "arrows-in-line-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-line-vertical-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,close,center,align", + "set_id": 1 + }, + { + "name": "arrows-in-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,collapse,minimize,resize", + "set_id": 1 + }, + { + "name": "arrows-left-right-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "arrows-merge-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,join,combine", + "set_id": 1 + }, + { + "name": "arrows-out-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,grow", + "set_id": 1 + }, + { + "name": "arrows-out-cardinal-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize,pan,move,grow", + "set_id": 1 + }, + { + "name": "arrows-out-line-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-line-vertical-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,open,split", + "set_id": 1 + }, + { + "name": "arrows-out-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,pointing,arrowhead,expand,fullscreen,resize", + "set_id": 1 + }, + { + "name": "arrows-split-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,arrowheads,fork", + "set_id": 1 + }, + { + "name": "arrows-vertical-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,directional,pointer,cursor,resize,expand,up,down", + "set_id": 1 + }, + { + "name": "article-duotone", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-medium-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,newspaper", + "set_id": 1 + }, + { + "name": "article-ny-times-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals,text,news,newspaper,nyt,new york times", + "set_id": 1 + }, + { + "name": "asclepius-duotone", + "content": "", + "style": "outline", + "tags": "*new*,caduceus,staff,mythology,rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor,hospital,snake,mercury,hermes", + "set_id": 1 + }, + { + "name": "asterisk-duotone", + "content": "", + "style": "outline", + "tags": "star,wildcard,bullet point,6,emergency", + "set_id": 1 + }, + { + "name": "asterisk-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,star,wildcard,bullet point,5,emergency", + "set_id": 1 + }, + { + "name": "at-duotone", + "content": "", + "style": "outline", + "tags": "@,address,email,at symbol,commercial at,arobase", + "set_id": 1 + }, + { + "name": "atom-duotone", + "content": "", + "style": "outline", + "tags": "atomic,nucleus,nuclear,reactor,science,physics,electron,automation,react", + "set_id": 1 + }, + { + "name": "avocado-duotone", + "content": "", + "style": "outline", + "tags": "*new*,food,vegetable,veggie,fruit,groceries,market", + "set_id": 1 + }, + { + "name": "axe-duotone", + "content": "", + "style": "outline", + "tags": "*new*,tools,carpentry,forestry,construction", + "set_id": 1 + }, + { + "name": "baby-duotone", + "content": "", + "style": "outline", + "tags": "infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "baby-carriage-duotone", + "content": "", + "style": "outline", + "tags": "*new*,pram,stroller,infant,child,children,toddler", + "set_id": 1 + }, + { + "name": "backpack-duotone", + "content": "", + "style": "outline", + "tags": "knapsack,camping,school,bag", + "set_id": 1 + }, + { + "name": "backspace-duotone", + "content": "", + "style": "outline", + "tags": "keyboard,remove,delete", + "set_id": 1 + }, + { + "name": "bag-duotone", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "bag-simple-duotone", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "balloon-duotone", + "content": "", + "style": "outline", + "tags": "helium,birthday,party", + "set_id": 1 + }, + { + "name": "bandaids-duotone", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,first aid,injury", + "set_id": 1 + }, + { + "name": "bank-duotone", + "content": "", + "style": "outline", + "tags": "banking,checking,money,savings,deposit,withdraw,places,locations", + "set_id": 1 + }, + { + "name": "barbell-duotone", + "content": "", + "style": "outline", + "tags": "gym,weights,dumbbells,strength training,workout,exercises,fitness", + "set_id": 1 + }, + { + "name": "barcode-duotone", + "content": "", + "style": "outline", + "tags": "upc,qr,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "barn-duotone", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,buildings,farming,agriculture", + "set_id": 1 + }, + { + "name": "barricade-duotone", + "content": "", + "style": "outline", + "tags": "construction,safety,gate", + "set_id": 1 + }, + { + "name": "baseball-duotone", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "baseball-cap-duotone", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sports,hat", + "set_id": 1 + }, + { + "name": "baseball-helmet-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,mlb", + "set_id": 1 + }, + { + "name": "basket-duotone", + "content": "", + "style": "outline", + "tags": "ecommerce,market,cart,buying,shopping,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "basketball-duotone", + "content": "", + "style": "outline", + "tags": "sports,nba", + "set_id": 1 + }, + { + "name": "bathtub-duotone", + "content": "", + "style": "outline", + "tags": "bath,shower,bathroom,faucet", + "set_id": 1 + }, + { + "name": "battery-charging-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-charging-vertical-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-empty-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-full-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,filled", + "set_id": 1 + }, + { + "name": "battery-high-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-low-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-medium-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-plus-vertical-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-empty-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,dead", + "set_id": 1 + }, + { + "name": "battery-vertical-full-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-high-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-low-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-vertical-medium-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power", + "set_id": 1 + }, + { + "name": "battery-warning-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "battery-warning-vertical-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,power,empty,critical", + "set_id": 1 + }, + { + "name": "beach-ball-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,ocean,party", + "set_id": 1 + }, + { + "name": "beanie-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,sports,hat,winter", + "set_id": 1 + }, + { + "name": "bed-duotone", + "content": "", + "style": "outline", + "tags": "hotels,accommodations,sleeping,places,locations,medical,hospital", + "set_id": 1 + }, + { + "name": "beer-bottle-duotone", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "beer-stein-duotone", + "content": "", + "style": "outline", + "tags": "drinks,beverages,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "behance-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,illustration,ui,interface", + "set_id": 1 + }, + { + "name": "bell-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-ringing-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-ringing-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,calls", + "set_id": 1 + }, + { + "name": "bell-simple-slash-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,silent,silenced,disabled", + "set_id": 1 + }, + { + "name": "bell-simple-z-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "bell-slash-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,silent,silenced,ringer,calls,disabled", + "set_id": 1 + }, + { + "name": "bell-z-duotone", + "content": "", + "style": "outline", + "tags": "alarm,notifications,times,timer,clock,schedule,events,ringer,snooze", + "set_id": 1 + }, + { + "name": "belt-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "bezier-curve-duotone", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "bicycle-duotone", + "content": "", + "style": "outline", + "tags": "bikers,bicycling,cyclists,transit,transportation,commuter,exercises,fitness", + "set_id": 1 + }, + { + "name": "binary-duotone", + "content": "", + "style": "outline", + "tags": "*new*,digital,0,1,programming,coding,executable", + "set_id": 1 + }, + { + "name": "binoculars-duotone", + "content": "", + "style": "outline", + "tags": "telescope,glasses,search,find,explore", + "set_id": 1 + }, + { + "name": "biohazard-duotone", + "content": "", + "style": "outline", + "tags": "*new*,contamination,quarantine,toxic,poison,danger,caution", + "set_id": 1 + }, + { + "name": "bird-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,animals,pets", + "set_id": 1 + }, + { + "name": "blueprint-duotone", + "content": "", + "style": "outline", + "tags": "*new*,architecture,layout,floorplan,building,construction", + "set_id": 1 + }, + { + "name": "bluetooth-duotone", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-connected-duotone", + "content": "", + "style": "outline", + "tags": "wireless,connection,connected,connectivity", + "set_id": 1 + }, + { + "name": "bluetooth-slash-duotone", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,disabled", + "set_id": 1 + }, + { + "name": "bluetooth-x-duotone", + "content": "", + "style": "outline", + "tags": "wireless,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "boat-duotone", + "content": "", + "style": "outline", + "tags": "ferry,ship,cruise,vehicles,public transit,transportation,commuter,traveling,sailing,places,locations", + "set_id": 1 + }, + { + "name": "bomb-duotone", + "content": "", + "style": "outline", + "tags": "*new*,gaming,grenade,explosive,war,weapon,fuse", + "set_id": 1 + }, + { + "name": "bone-duotone", + "content": "", + "style": "outline", + "tags": "dogbone", + "set_id": 1 + }, + { + "name": "book-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-bookmark-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,library,favorites,favorited", + "set_id": 1 + }, + { + "name": "book-open-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-text-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,reading,reader,novel,story,library", + "set_id": 1 + }, + { + "name": "book-open-user-duotone", + "content": "", + "style": "outline", + "tags": "*new*,reading,reader,easy read,library,places,locations", + "set_id": 1 + }, + { + "name": "bookmark-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmark-simple-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "bookmarks-simple-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,novel,story,placeholder,favorites,favorited,library", + "set_id": 1 + }, + { + "name": "books-duotone", + "content": "", + "style": "outline", + "tags": "reading,reader,bookshelf,library,places,locations", + "set_id": 1 + }, + { + "name": "boot-duotone", + "content": "", + "style": "outline", + "tags": "hiking,shoes,sports,exercise", + "set_id": 1 + }, + { + "name": "boules-duotone", + "content": "", + "style": "outline", + "tags": "*new*,balls,sports,pétanque,raffa,bocce,boule lyonnaise,lawn bowls", + "set_id": 1 + }, + { + "name": "bounding-box-duotone", + "content": "", + "style": "outline", + "tags": "polygon,shapes,outline,corners,rectangle", + "set_id": 1 + }, + { + "name": "bowl-food-duotone", + "content": "", + "style": "outline", + "tags": "ramen,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowl-steam-duotone", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,eating,restaurants,dining,locations", + "set_id": 1 + }, + { + "name": "bowling-ball-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,alley", + "set_id": 1 + }, + { + "name": "box-arrow-down-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "box-arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "*new*,unarchive,archival,upload", + "set_id": 1 + }, + { + "name": "boxing-glove-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,combat,martial arts,fight,gym", + "set_id": 1 + }, + { + "name": "brackets-angle-duotone", + "content": "", + "style": "outline", + "tags": "code,angle brackets,angle braces", + "set_id": 1 + }, + { + "name": "brackets-curly-duotone", + "content": "", + "style": "outline", + "tags": "code,curly brackets,curly braces", + "set_id": 1 + }, + { + "name": "brackets-round-duotone", + "content": "", + "style": "outline", + "tags": "code,parentheses,round brackets,round braces", + "set_id": 1 + }, + { + "name": "brackets-square-duotone", + "content": "", + "style": "outline", + "tags": "code,square brackets,square braces,array", + "set_id": 1 + }, + { + "name": "brain-duotone", + "content": "", + "style": "outline", + "tags": "mind,mental", + "set_id": 1 + }, + { + "name": "brandy-duotone", + "content": "", + "style": "outline", + "tags": "drinks,beverages,whiskey,cocktail,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "bread-duotone", + "content": "", + "style": "outline", + "tags": "*new*,food,meal,bakery,sandwich,gluten,loaf,toast,slice", + "set_id": 1 + }, + { + "name": "bridge-duotone", + "content": "", + "style": "outline", + "tags": "travel,transportation,infrastucture", + "set_id": 1 + }, + { + "name": "briefcase-duotone", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "briefcase-metal-duotone", + "content": "", + "style": "outline", + "tags": "suitcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "broadcast-duotone", + "content": "", + "style": "outline", + "tags": "radio,hotspot,wifi,emit", + "set_id": 1 + }, + { + "name": "broom-duotone", + "content": "", + "style": "outline", + "tags": "sweeping,cleaning", + "set_id": 1 + }, + { + "name": "browser-duotone", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "browsers-duotone", + "content": "", + "style": "outline", + "tags": "web browsers,windows,internet,website,webpage,chrome,edge,firefox", + "set_id": 1 + }, + { + "name": "bug-duotone", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-beetle-duotone", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,ladybug", + "set_id": 1 + }, + { + "name": "bug-droid-duotone", + "content": "", + "style": "outline", + "tags": "debug,errors,insect,android,google", + "set_id": 1 + }, + { + "name": "building-duotone", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "building-apartment-duotone", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,buildings", + "set_id": 1 + }, + { + "name": "building-office-duotone", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,company,business,buildings", + "set_id": 1 + }, + { + "name": "buildings-duotone", + "content": "", + "style": "outline", + "tags": "places,locations,company,business", + "set_id": 1 + }, + { + "name": "bulldozer-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,construction,earth mover,dig,digger", + "set_id": 1 + }, + { + "name": "bus-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "butterfly-duotone", + "content": "", + "style": "outline", + "tags": "animals,insects,moth", + "set_id": 1 + }, + { + "name": "cable-car-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,gondola,skiing,mountains,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "cactus-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,plants,cacti,desert,western", + "set_id": 1 + }, + { + "name": "cake-duotone", + "content": "", + "style": "outline", + "tags": "dessert,birthday,celebration,event", + "set_id": 1 + }, + { + "name": "calculator-duotone", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "calendar-duotone", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,12", + "set_id": 1 + }, + { + "name": "calendar-blank-duotone", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,none", + "set_id": 1 + }, + { + "name": "calendar-check-duotone", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,todo,checklist", + "set_id": 1 + }, + { + "name": "calendar-dot-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,today", + "set_id": 1 + }, + { + "name": "calendar-dots-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule", + "set_id": 1 + }, + { + "name": "calendar-heart-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-minus-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete", + "set_id": 1 + }, + { + "name": "calendar-plus-duotone", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,add", + "set_id": 1 + }, + { + "name": "calendar-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,remove,delete,cancel. unavailable", + "set_id": 1 + }, + { + "name": "calendar-star-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dates,times,events,schedule,favorite,star", + "set_id": 1 + }, + { + "name": "calendar-x-duotone", + "content": "", + "style": "outline", + "tags": "dates,times,events,schedule,closed,cancelled", + "set_id": 1 + }, + { + "name": "call-bell-duotone", + "content": "", + "style": "outline", + "tags": "service bell,reception,attendant,concierge bell", + "set_id": 1 + }, + { + "name": "camera-duotone", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens", + "set_id": 1 + }, + { + "name": "camera-plus-duotone", + "content": "", + "style": "outline", + "tags": "photography,pictures,album,add", + "set_id": 1 + }, + { + "name": "camera-rotate-duotone", + "content": "", + "style": "outline", + "tags": "photography,pictures,orientation,portrait,landscape,selfie,flip", + "set_id": 1 + }, + { + "name": "camera-slash-duotone", + "content": "", + "style": "outline", + "tags": "photography,pictures,lens,disabled", + "set_id": 1 + }, + { + "name": "campfire-duotone", + "content": "", + "style": "outline", + "tags": "camping,flame,bonfire,outdoors", + "set_id": 1 + }, + { + "name": "car-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-battery-duotone", + "content": "", + "style": "outline", + "tags": "*new*,charged,charger,charging,power,voltage,electricity", + "set_id": 1 + }, + { + "name": "car-profile-duotone", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "car-simple-duotone", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "cardholder-duotone", + "content": "", + "style": "outline", + "tags": "wallet,money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cards-duotone", + "content": "", + "style": "outline", + "tags": "card,slides,slideshow,windows,website,webpage,layers", + "set_id": 1 + }, + { + "name": "cards-three-duotone", + "content": "", + "style": "outline", + "tags": "*new*,card,slides,slideshow,windows,website,webpage,layers,stack", + "set_id": 1 + }, + { + "name": "caret-circle-double-down-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-left-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-right-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-double-up-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-down-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-left-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-right-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-circle-up-down-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-down-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-left-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-right-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-double-up-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-down-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-left-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-down-duotone", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-left-duotone", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-right-duotone", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-line-up-duotone", + "content": "", + "style": "outline", + "tags": "*new*,chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-right-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "caret-up-down-duotone", + "content": "", + "style": "outline", + "tags": "chevron,directional,pointer,pointing,arrowhead,triangle", + "set_id": 1 + }, + { + "name": "carrot-duotone", + "content": "", + "style": "outline", + "tags": "food,vegetable,veggie,groceries,market", + "set_id": 1 + }, + { + "name": "cash-register-duotone", + "content": "", + "style": "outline", + "tags": "*new*,retail,point-of-sale,pos,transaction,sales,till", + "set_id": 1 + }, + { + "name": "cassette-tape-duotone", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music", + "set_id": 1 + }, + { + "name": "castle-turret-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,chess,rook", + "set_id": 1 + }, + { + "name": "cat-duotone", + "content": "", + "style": "outline", + "tags": "pets,animals,kitty,kitten", + "set_id": 1 + }, + { + "name": "cell-signal-full-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-high-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-low-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-medium-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-none-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-slash-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,disconnected,disabled,reception,service", + "set_id": 1 + }, + { + "name": "cell-signal-x-duotone", + "content": "", + "style": "outline", + "tags": "wireless,cellular,phone,mobile,network,connection,connectivity,reception,disconnected,errors,service", + "set_id": 1 + }, + { + "name": "cell-tower-duotone", + "content": "", + "style": "outline", + "tags": "*new*,wireless,cellular,broadcast,phone,mobile,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "certificate-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,awards,certification,degree,diploma", + "set_id": 1 + }, + { + "name": "chair-duotone", + "content": "", + "style": "outline", + "tags": "seat,furniture", + "set_id": 1 + }, + { + "name": "chalkboard-duotone", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,blackboard,whiteboard,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "chalkboard-teacher-duotone", + "content": "", + "style": "outline", + "tags": "blackboard,whiteboard,classroom,education,school,college,university", + "set_id": 1 + }, + { + "name": "champagne-duotone", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,wine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "charging-station-duotone", + "content": "", + "style": "outline", + "tags": "ev,charge,fuel,pump", + "set_id": 1 + }, + { + "name": "chart-bar-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-bar-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,histogram,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-donut-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-line-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-down-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-line-up-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,analyze,analysis,stocks", + "set_id": 1 + }, + { + "name": "chart-pie-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-pie-slice-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,graphs,graphing,charts,statistics,circle,analyze,analysis", + "set_id": 1 + }, + { + "name": "chart-polar-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,circle", + "set_id": 1 + }, + { + "name": "chart-scatter-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "chat-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-dots-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-centered-text-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-dots-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-circle-text-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chat-dots-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-dots-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-teardrop-text-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "chat-text-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,square,bubble", + "set_id": 1 + }, + { + "name": "chats-circle-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,round,bubble", + "set_id": 1 + }, + { + "name": "chats-teardrop-duotone", + "content": "", + "style": "outline", + "tags": "send,sent,messages,messaging,sms,texting,comment,bubble", + "set_id": 1 + }, + { + "name": "check-duotone", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-circle-duotone", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,round,ok,done", + "set_id": 1 + }, + { + "name": "check-fat-duotone", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "check-square-duotone", + "content": "", + "style": "outline", + "tags": "todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "check-square-offset-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,todo,to-do,task,list,checkbox,rectangle,ok,done", + "set_id": 1 + }, + { + "name": "checkerboard-duotone", + "content": "", + "style": "outline", + "tags": "*new*,crossword", + "set_id": 1 + }, + { + "name": "checks-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,todo,task,to-do,list,checkbox,ok,done", + "set_id": 1 + }, + { + "name": "cheers-duotone", + "content": "", + "style": "outline", + "tags": "*new*,glass,drinks,beverages,champagne,toast,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "cheese-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dairy,wedge,food,dining", + "set_id": 1 + }, + { + "name": "chef-hat-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cooking,cuisine,kitchen,clothes,clothing", + "set_id": 1 + }, + { + "name": "cherries-duotone", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,cherry,groceries,market", + "set_id": 1 + }, + { + "name": "church-duotone", + "content": "", + "style": "outline", + "tags": "christ,christianity,cathedral,religion,worship", + "set_id": 1 + }, + { + "name": "cigarette-duotone", + "content": "", + "style": "outline", + "tags": "*new*,smoking,tobacco", + "set_id": 1 + }, + { + "name": "cigarette-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,non-smoking,tobacco", + "set_id": 1 + }, + { + "name": "circle-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-dashed-duotone", + "content": "", + "style": "outline", + "tags": "missing,round,shapes,polygons", + "set_id": 1 + }, + { + "name": "circle-half-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-half-tilt-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,contrast,brightness", + "set_id": 1 + }, + { + "name": "circle-notch-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,loading,loader,spinner,waiting,progress", + "set_id": 1 + }, + { + "name": "circles-four-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,4", + "set_id": 1 + }, + { + "name": "circles-three-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,asana", + "set_id": 1 + }, + { + "name": "circles-three-plus-duotone", + "content": "", + "style": "outline", + "tags": "round,shapes,polygons,3,+", + "set_id": 1 + }, + { + "name": "circuitry-duotone", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit,electronics,motherboard", + "set_id": 1 + }, + { + "name": "city-duotone", + "content": "", + "style": "outline", + "tags": "*new*,skyline,skyscrapers,places,locations,buildings", + "set_id": 1 + }, + { + "name": "clipboard-duotone", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clipboard-text-duotone", + "content": "", + "style": "outline", + "tags": "copy,copied,checklist", + "set_id": 1 + }, + { + "name": "clock-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-afternoon-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-clockwise-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,restore,fast forward,update", + "set_id": 1 + }, + { + "name": "clock-countdown-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,watch", + "set_id": 1 + }, + { + "name": "clock-counter-clockwise-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,backup,rewind,history", + "set_id": 1 + }, + { + "name": "clock-user-duotone", + "content": "", + "style": "outline", + "tags": "*new*,times,timer,shift,schedule,events,watch", + "set_id": 1 + }, + { + "name": "closed-captioning-duotone", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "cloud-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,meteorology,cloudy,overcast", + "set_id": 1 + }, + { + "name": "cloud-arrow-down-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,download", + "set_id": 1 + }, + { + "name": "cloud-arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,upload", + "set_id": 1 + }, + { + "name": "cloud-check-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,synchronized", + "set_id": 1 + }, + { + "name": "cloud-fog-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,foggy,mist,haze", + "set_id": 1 + }, + { + "name": "cloud-lightning-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,overcast,stormy,thunderstorm", + "set_id": 1 + }, + { + "name": "cloud-moon-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,night,evening", + "set_id": 1 + }, + { + "name": "cloud-rain-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,rainy,raining,stormy,rainstorm", + "set_id": 1 + }, + { + "name": "cloud-slash-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,sync,disabled", + "set_id": 1 + }, + { + "name": "cloud-snow-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,snowy,snowing,stormy,snowstorm", + "set_id": 1 + }, + { + "name": "cloud-sun-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,cloudy,partly cloudy,partly sunny", + "set_id": 1 + }, + { + "name": "cloud-warning-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "cloud-x-duotone", + "content": "", + "style": "outline", + "tags": "serverless,backup,storage,errors", + "set_id": 1 + }, + { + "name": "clover-duotone", + "content": "", + "style": "outline", + "tags": "*new*,four leaf clover,plants,luck,lucky,irish", + "set_id": 1 + }, + { + "name": "club-duotone", + "content": "", + "style": "outline", + "tags": "clubs,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "coat-hanger-duotone", + "content": "", + "style": "outline", + "tags": "clothing,clothes,closet", + "set_id": 1 + }, + { + "name": "coda-logo-duotone", + "content": "", + "style": "outline", + "tags": "project management,productivity,documentation,wiki,logos", + "set_id": 1 + }, + { + "name": "code-duotone", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-block-duotone", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "code-simple-duotone", + "content": "", + "style": "outline", + "tags": "angle brackets,angle braces,snippets", + "set_id": 1 + }, + { + "name": "codepen-logo-duotone", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "codesandbox-logo-duotone", + "content": "", + "style": "outline", + "tags": "ide,logos", + "set_id": 1 + }, + { + "name": "coffee-duotone", + "content": "", + "style": "outline", + "tags": "tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coffee-bean-duotone", + "content": "", + "style": "outline", + "tags": "*new*,tea,java,beverages,drinks,cafe,cup,mug,espresso,cappuccino,latte,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "coin-duotone", + "content": "", + "style": "outline", + "tags": "coins,cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coin-vertical-duotone", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "coins-duotone", + "content": "", + "style": "outline", + "tags": "cents,change,money,currency,payment,paying,purchase,price,sell", + "set_id": 1 + }, + { + "name": "columns-duotone", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "columns-plus-left-duotone", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "columns-plus-right-duotone", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,append,insert", + "set_id": 1 + }, + { + "name": "command-duotone", + "content": "", + "style": "outline", + "tags": "apple,keyboard,shortcut,modifier,looped square,bowen knot,saint john's arms", + "set_id": 1 + }, + { + "name": "compass-duotone", + "content": "", + "style": "outline", + "tags": "navigation,directions,maps,safari,apple", + "set_id": 1 + }, + { + "name": "compass-rose-duotone", + "content": "", + "style": "outline", + "tags": "*new*,navigation,directions,maps,cardinal,cartography", + "set_id": 1 + }, + { + "name": "compass-tool-duotone", + "content": "", + "style": "outline", + "tags": "drawing,geometry,trigonometry,degrees,radians,measurement,protractor,compass,arc", + "set_id": 1 + }, + { + "name": "computer-tower-duotone", + "content": "", + "style": "outline", + "tags": "desktop,pc,imac", + "set_id": 1 + }, + { + "name": "confetti-duotone", + "content": "", + "style": "outline", + "tags": "tada,party,emoji", + "set_id": 1 + }, + { + "name": "contactless-payment-duotone", + "content": "", + "style": "outline", + "tags": "purchase,credit card,nfc", + "set_id": 1 + }, + { + "name": "control-duotone", + "content": "", + "style": "outline", + "tags": "ctrl,key,keyboard,shortcut,caret", + "set_id": 1 + }, + { + "name": "cookie-duotone", + "content": "", + "style": "outline", + "tags": "privacy,dessert,food,dining", + "set_id": 1 + }, + { + "name": "cooking-pot-duotone", + "content": "", + "style": "outline", + "tags": "stew,kitchen,steaming,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "copy-duotone", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copy-simple-duotone", + "content": "", + "style": "outline", + "tags": "duplicated,copied,clipboard", + "set_id": 1 + }, + { + "name": "copyleft-duotone", + "content": "", + "style": "outline", + "tags": "🄯,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "copyright-duotone", + "content": "", + "style": "outline", + "tags": "©,intellectual property,copr.,symbol", + "set_id": 1 + }, + { + "name": "corners-in-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,collapse,windowed,minimized", + "set_id": 1 + }, + { + "name": "corners-out-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,expand,fullscreen,maximized", + "set_id": 1 + }, + { + "name": "couch-duotone", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "court-basketball-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,nba", + "set_id": 1 + }, + { + "name": "cow-duotone", + "content": "", + "style": "outline", + "tags": "*new*,animals,livestock,beef,bull,milk,dairy", + "set_id": 1 + }, + { + "name": "cowboy-hat-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing,stetson", + "set_id": 1 + }, + { + "name": "cpu-duotone", + "content": "", + "style": "outline", + "tags": "processor,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "crane-duotone", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "crane-tower-duotone", + "content": "", + "style": "outline", + "tags": "*new*,construction,industry", + "set_id": 1 + }, + { + "name": "credit-card-duotone", + "content": "", + "style": "outline", + "tags": "debit,visa,mastercard,money,payment,paying,purchase,swipe", + "set_id": 1 + }, + { + "name": "cricket-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,ball,bat", + "set_id": 1 + }, + { + "name": "crop-duotone", + "content": "", + "style": "outline", + "tags": "photography,clip,screenshots", + "set_id": 1 + }, + { + "name": "cross-duotone", + "content": "", + "style": "outline", + "tags": "dagger,crucifix,christ,christianity,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "crosshair-duotone", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crosshair-simple-duotone", + "content": "", + "style": "outline", + "tags": "geolocation,gps,aiming,targeting", + "set_id": 1 + }, + { + "name": "crown-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-cross-duotone", + "content": "", + "style": "outline", + "tags": "*new*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "crown-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,king,queen,royalty,monarch,ruler,leader,chess", + "set_id": 1 + }, + { + "name": "cube-duotone", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks", + "set_id": 1 + }, + { + "name": "cube-focus-duotone", + "content": "", + "style": "outline", + "tags": "augmented reality,ar,virual reality,vr,3d,scan", + "set_id": 1 + }, + { + "name": "cube-transparent-duotone", + "content": "", + "style": "outline", + "tags": "square,box,3d,volume,blocks,necker", + "set_id": 1 + }, + { + "name": "currency-btc-duotone", + "content": "", + "style": "outline", + "tags": "money,btc,bitcoin,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-circle-dollar-duotone", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-cny-duotone", + "content": "", + "style": "outline", + "tags": "money,yuan,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-duotone", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-dollar-simple-duotone", + "content": "", + "style": "outline", + "tags": "money,usd,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eth-duotone", + "content": "", + "style": "outline", + "tags": "money,ethereum,crypto,cryptocurrency,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-eur-duotone", + "content": "", + "style": "outline", + "tags": "money,euros,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-gbp-duotone", + "content": "", + "style": "outline", + "tags": "money,pounds sterling,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-inr-duotone", + "content": "", + "style": "outline", + "tags": "money,rupees,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-jpy-duotone", + "content": "", + "style": "outline", + "tags": "money,yen,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-krw-duotone", + "content": "", + "style": "outline", + "tags": "money,won,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-kzt-duotone", + "content": "", + "style": "outline", + "tags": "money,kazakhstan,tenge,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-ngn-duotone", + "content": "", + "style": "outline", + "tags": "money,nigeria,naira,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "currency-rub-duotone", + "content": "", + "style": "outline", + "tags": "money,rubles,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "cursor-duotone", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse,click", + "set_id": 1 + }, + { + "name": "cursor-click-duotone", + "content": "", + "style": "outline", + "tags": "pointer,arrowhead,mouse", + "set_id": 1 + }, + { + "name": "cursor-text-duotone", + "content": "", + "style": "outline", + "tags": "i-beam,input,select", + "set_id": 1 + }, + { + "name": "cylinder-duotone", + "content": "", + "style": "outline", + "tags": "shapes,tube", + "set_id": 1 + }, + { + "name": "database-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "desk-duotone", + "content": "", + "style": "outline", + "tags": "*new*,furniture,workspace,table", + "set_id": 1 + }, + { + "name": "desktop-duotone", + "content": "", + "style": "outline", + "tags": "computer,pc,imac,tower", + "set_id": 1 + }, + { + "name": "desktop-tower-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,computer,pc,imac", + "set_id": 1 + }, + { + "name": "detective-duotone", + "content": "", + "style": "outline", + "tags": "incognito,police,law enforcement,spy,secret", + "set_id": 1 + }, + { + "name": "dev-to-logo-duotone", + "content": "", + "style": "outline", + "tags": "reading,writing,social media,logos", + "set_id": 1 + }, + { + "name": "device-mobile-duotone", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-camera-duotone", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-mobile-speaker-duotone", + "content": "", + "style": "outline", + "tags": "cellphone,cellular", + "set_id": 1 + }, + { + "name": "device-rotate-duotone", + "content": "", + "style": "outline", + "tags": "*new*,orientation,landscape,portrait,spin,flip", + "set_id": 1 + }, + { + "name": "device-tablet-duotone", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-camera-duotone", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "device-tablet-speaker-duotone", + "content": "", + "style": "outline", + "tags": "cellphone,cellular,ipad,phablet", + "set_id": 1 + }, + { + "name": "devices-duotone", + "content": "", + "style": "outline", + "tags": "responsive,cellphone,cellular,tablet,destop", + "set_id": 1 + }, + { + "name": "diamond-duotone", + "content": "", + "style": "outline", + "tags": "rectangle,shapes,polygons,diamonds,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "diamonds-four-duotone", + "content": "", + "style": "outline", + "tags": "shapes,grid,component", + "set_id": 1 + }, + { + "name": "dice-five-duotone", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,5", + "set_id": 1 + }, + { + "name": "dice-four-duotone", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,4", + "set_id": 1 + }, + { + "name": "dice-one-duotone", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,1", + "set_id": 1 + }, + { + "name": "dice-six-duotone", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,6", + "set_id": 1 + }, + { + "name": "dice-three-duotone", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,3", + "set_id": 1 + }, + { + "name": "dice-two-duotone", + "content": "", + "style": "outline", + "tags": "die,rolling,gamble,gambling,casino,gaming,2", + "set_id": 1 + }, + { + "name": "disc-duotone", + "content": "", + "style": "outline", + "tags": "cd-rom,compact disk,album,record", + "set_id": 1 + }, + { + "name": "disco-ball-duotone", + "content": "", + "style": "outline", + "tags": "*new*,danging,club,70s", + "set_id": 1 + }, + { + "name": "discord-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging,chat", + "set_id": 1 + }, + { + "name": "divide-duotone", + "content": "", + "style": "outline", + "tags": "division,divisor,dividend,quotient,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "dna-duotone", + "content": "", + "style": "outline", + "tags": "double helix,gene,genetics", + "set_id": 1 + }, + { + "name": "dog-duotone", + "content": "", + "style": "outline", + "tags": "pets,animals,puppy", + "set_id": 1 + }, + { + "name": "door-duotone", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "door-open-duotone", + "content": "", + "style": "outline", + "tags": "entrance,exit", + "set_id": 1 + }, + { + "name": "dot-duotone", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dot-outline-duotone", + "content": "", + "style": "outline", + "tags": "dots,circles,shapes,polygons", + "set_id": 1 + }, + { + "name": "dots-nine-duotone", + "content": "", + "style": "outline", + "tags": "grid,circles,shapes,polygons,9", + "set_id": 1 + }, + { + "name": "dots-six-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-six-vertical-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,drag handle,knurling,circles,shapes,polygons,6", + "set_id": 1 + }, + { + "name": "dots-three-duotone", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-duotone", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-circle-vertical-duotone", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-duotone", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-outline-vertical-duotone", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "dots-three-vertical-duotone", + "content": "", + "style": "outline", + "tags": "menu,overflow,circles,shapes,polygons,3,ellipsis,ellipses,more", + "set_id": 1 + }, + { + "name": "download-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk", + "set_id": 1 + }, + { + "name": "download-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,downloaded,downloading,hard drive,disk,import", + "set_id": 1 + }, + { + "name": "dress-duotone", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "dresser-duotone", + "content": "", + "style": "outline", + "tags": "*new*,furniture,bedroom,storage,drawers,wardrobe", + "set_id": 1 + }, + { + "name": "dribbble-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,round,basketball,sports,design", + "set_id": 1 + }, + { + "name": "drone-duotone", + "content": "", + "style": "outline", + "tags": "*new*,aerial,uav,photography,remote", + "set_id": 1 + }, + { + "name": "drop-duotone", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,raining,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-half-duotone", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-half-bottom-duotone", + "content": "", + "style": "outline", + "tags": "droplet,teardrop,raindrop,humidity,water,contrast,brightness", + "set_id": 1 + }, + { + "name": "drop-simple-duotone", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur", + "set_id": 1 + }, + { + "name": "drop-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,droplet,teardrop,raindrop,raining,humidity,meteorology,water,blur,disabled", + "set_id": 1 + }, + { + "name": "dropbox-logo-duotone", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "ear-duotone", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound", + "set_id": 1 + }, + { + "name": "ear-slash-duotone", + "content": "", + "style": "outline", + "tags": "hearing,audio,sound,mute,accessible", + "set_id": 1 + }, + { + "name": "egg-duotone", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch", + "set_id": 1 + }, + { + "name": "egg-crack-duotone", + "content": "", + "style": "outline", + "tags": "chicken,food,meal,baby,hatch,break", + "set_id": 1 + }, + { + "name": "eject-duotone", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "eject-simple-duotone", + "content": "", + "style": "outline", + "tags": "disconnect", + "set_id": 1 + }, + { + "name": "elevator-duotone", + "content": "", + "style": "outline", + "tags": "lift", + "set_id": 1 + }, + { + "name": "empty-duotone", + "content": "", + "style": "outline", + "tags": "*new*,∅,empty set,member,mathematics,arithmetic,calculator,null", + "set_id": 1 + }, + { + "name": "engine-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,motor,repair,vehicles,automobile", + "set_id": 1 + }, + { + "name": "envelope-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-open-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,post,letter", + "set_id": 1 + }, + { + "name": "envelope-simple-open-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,message,read,post,letter", + "set_id": 1 + }, + { + "name": "equalizer-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,meter,volume,spectrum,eq,deezer", + "set_id": 1 + }, + { + "name": "equals-duotone", + "content": "", + "style": "outline", + "tags": "=,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "eraser-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,undo,deleted", + "set_id": 1 + }, + { + "name": "escalator-down-duotone", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "escalator-up-duotone", + "content": "", + "style": "outline", + "tags": "stairs", + "set_id": 1 + }, + { + "name": "exam-duotone", + "content": "", + "style": "outline", + "tags": "text,examination,paper,school,grade", + "set_id": 1 + }, + { + "name": "exclamation-mark-duotone", + "content": "", + "style": "outline", + "tags": "*new*,!,alert,warning,caution,interjection,punctuation,symbol", + "set_id": 1 + }, + { + "name": "exclude-duotone", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "exclude-square-duotone", + "content": "", + "style": "outline", + "tags": "venn-diagram,difference,intersection", + "set_id": 1 + }, + { + "name": "export-duotone", + "content": "", + "style": "outline", + "tags": "share,send to,arrows", + "set_id": 1 + }, + { + "name": "eye-duotone", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view", + "set_id": 1 + }, + { + "name": "eye-closed-duotone", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,private", + "set_id": 1 + }, + { + "name": "eye-slash-duotone", + "content": "", + "style": "outline", + "tags": "visible,hidden,show,hide,visibility,view,invisible,eyelashes,disabled,private", + "set_id": 1 + }, + { + "name": "eyedropper-duotone", + "content": "", + "style": "outline", + "tags": "colors,color picker,sample,arts", + "set_id": 1 + }, + { + "name": "eyedropper-sample-duotone", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "eyeglasses-duotone", + "content": "", + "style": "outline", + "tags": "vision,spectacles", + "set_id": 1 + }, + { + "name": "eyes-duotone", + "content": "", + "style": "outline", + "tags": "*new*,look,glance", + "set_id": 1 + }, + { + "name": "face-mask-duotone", + "content": "", + "style": "outline", + "tags": "ppe,facemask,covid-19,coronavirus,flu,cold", + "set_id": 1 + }, + { + "name": "facebook-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "factory-duotone", + "content": "", + "style": "outline", + "tags": "industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "faders-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "faders-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,sliders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "fallout-shelter-duotone", + "content": "", + "style": "outline", + "tags": "*new*,radiation,radioactive,nuclear,bunker,contamination,quarantine,toxic,danger,caution", + "set_id": 1 + }, + { + "name": "fan-duotone", + "content": "", + "style": "outline", + "tags": "desk fan,air conditioning", + "set_id": 1 + }, + { + "name": "farm-duotone", + "content": "", + "style": "outline", + "tags": "*new*,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "fast-forward-duotone", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "fast-forward-circle-duotone", + "content": "", + "style": "outline", + "tags": "audio,music,seek,scrub,scan,ahead,skip", + "set_id": 1 + }, + { + "name": "feather-duotone", + "content": "", + "style": "outline", + "tags": "bird", + "set_id": 1 + }, + { + "name": "fediverse-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,social media,decentralized", + "set_id": 1 + }, + { + "name": "figma-logo-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,logos,drawing,art,illustration,ui,interface,prototype,prototyping", + "set_id": 1 + }, + { + "name": "file-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,page", + "set_id": 1 + }, + { + "name": "file-archive-duotone", + "content": "", + "style": "outline", + "tags": "documents,zip,compression", + "set_id": 1 + }, + { + "name": "file-arrow-down-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,download,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,upload,directional,pointer,pointing,arrowhead", + "set_id": 1 + }, + { + "name": "file-audio-duotone", + "content": "", + "style": "outline", + "tags": "documents,music,sound", + "set_id": 1 + }, + { + "name": "file-c-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents,code", + "set_id": 1 + }, + { + "name": "file-c-sharp-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c#", + "set_id": 1 + }, + { + "name": "file-cloud-duotone", + "content": "", + "style": "outline", + "tags": "documents,sync", + "set_id": 1 + }, + { + "name": "file-code-duotone", + "content": "", + "style": "outline", + "tags": "documents", + "set_id": 1 + }, + { + "name": "file-cpp-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,c++", + "set_id": 1 + }, + { + "name": "file-css-duotone", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-csv-duotone", + "content": "", + "style": "outline", + "tags": "documents,data", + "set_id": 1 + }, + { + "name": "file-dashed-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,browse,draft,open,dotted", + "set_id": 1 + }, + { + "name": "file-doc-duotone", + "content": "", + "style": "outline", + "tags": "documents,word,microsoft", + "set_id": 1 + }, + { + "name": "file-html-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,documents,code", + "set_id": 1 + }, + { + "name": "file-image-duotone", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ini-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-jpg-duotone", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph,jpeg", + "set_id": 1 + }, + { + "name": "file-js-duotone", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-jsx-duotone", + "content": "", + "style": "outline", + "tags": "documents,code,javascript", + "set_id": 1 + }, + { + "name": "file-lock-duotone", + "content": "", + "style": "outline", + "tags": "documents,secure,locked,private", + "set_id": 1 + }, + { + "name": "file-magnifying-glass-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,search,find,locate,browse,missing", + "set_id": 1 + }, + { + "name": "file-md-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents,notes,markdown", + "set_id": 1 + }, + { + "name": "file-minus-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "file-pdf-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,acrobat", + "set_id": 1 + }, + { + "name": "file-plus-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "file-png-duotone", + "content": "", + "style": "outline", + "tags": "documents,pictures,photograph", + "set_id": 1 + }, + { + "name": "file-ppt-duotone", + "content": "", + "style": "outline", + "tags": "documents,powerpoint,microsoft", + "set_id": 1 + }, + { + "name": "file-py-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents,code,python", + "set_id": 1 + }, + { + "name": "file-rs-duotone", + "content": "", + "style": "outline", + "tags": "documents,code,rust", + "set_id": 1 + }, + { + "name": "file-sql-duotone", + "content": "", + "style": "outline", + "tags": "documents,database", + "set_id": 1 + }, + { + "name": "file-svg-duotone", + "content": "", + "style": "outline", + "tags": "documents,images,vector", + "set_id": 1 + }, + { + "name": "file-text-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,save,write", + "set_id": 1 + }, + { + "name": "file-ts-duotone", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-tsx-duotone", + "content": "", + "style": "outline", + "tags": "documents,code,typescript", + "set_id": 1 + }, + { + "name": "file-txt-duotone", + "content": "", + "style": "outline", + "tags": "*new*,documents", + "set_id": 1 + }, + { + "name": "file-video-duotone", + "content": "", + "style": "outline", + "tags": "documents,movie", + "set_id": 1 + }, + { + "name": "file-vue-duotone", + "content": "", + "style": "outline", + "tags": "documents,code", + "set_id": 1 + }, + { + "name": "file-x-duotone", + "content": "", + "style": "outline", + "tags": "documents,files,cancelled,deleted,removed,errors", + "set_id": 1 + }, + { + "name": "file-xls-duotone", + "content": "", + "style": "outline", + "tags": "documents,excel,microsoft", + "set_id": 1 + }, + { + "name": "file-zip-duotone", + "content": "", + "style": "outline", + "tags": "documents,archive,compression", + "set_id": 1 + }, + { + "name": "files-duotone", + "content": "", + "style": "outline", + "tags": "documents,open,library", + "set_id": 1 + }, + { + "name": "film-reel-duotone", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "film-script-duotone", + "content": "", + "style": "outline", + "tags": "screenplay,movie", + "set_id": 1 + }, + { + "name": "film-slate-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,clapper,movie", + "set_id": 1 + }, + { + "name": "film-strip-duotone", + "content": "", + "style": "outline", + "tags": "camera,photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "fingerprint-duotone", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "fingerprint-simple-duotone", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,biometrics,encrypted,encryption", + "set_id": 1 + }, + { + "name": "finn-the-human-duotone", + "content": "", + "style": "outline", + "tags": "adventure time,cartoons,television,tv,character", + "set_id": 1 + }, + { + "name": "fire-duotone", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-extinguisher-duotone", + "content": "", + "style": "outline", + "tags": "safety,prevention,emergency,hazard,danger,caution", + "set_id": 1 + }, + { + "name": "fire-simple-duotone", + "content": "", + "style": "outline", + "tags": "flame,burning,match,lighter", + "set_id": 1 + }, + { + "name": "fire-truck-duotone", + "content": "", + "style": "outline", + "tags": "*new*,first-aid,emt,medical,medicine,injury,safety,emergency,firefighter", + "set_id": 1 + }, + { + "name": "first-aid-duotone", + "content": "", + "style": "outline", + "tags": "hospital,cross,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "first-aid-kit-duotone", + "content": "", + "style": "outline", + "tags": "bandages,medical,medicine,injury,safety,emergency,doctor", + "set_id": 1 + }, + { + "name": "fish-duotone", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "fish-simple-duotone", + "content": "", + "style": "outline", + "tags": "animals,pets,food,seafood,restaurants,dining", + "set_id": 1 + }, + { + "name": "flag-duotone", + "content": "", + "style": "outline", + "tags": "country,countries,finished,completed,flags", + "set_id": 1 + }, + { + "name": "flag-banner-duotone", + "content": "", + "style": "outline", + "tags": "ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-banner-fold-duotone", + "content": "", + "style": "outline", + "tags": "*new*,ribbon,country,countries,finished,completed,flags,swallowtail", + "set_id": 1 + }, + { + "name": "flag-checkered-duotone", + "content": "", + "style": "outline", + "tags": "flags,race,racing,finish line", + "set_id": 1 + }, + { + "name": "flag-pennant-duotone", + "content": "", + "style": "outline", + "tags": "flags,race,sports,team", + "set_id": 1 + }, + { + "name": "flame-duotone", + "content": "", + "style": "outline", + "tags": "fire,burning,match,lighter", + "set_id": 1 + }, + { + "name": "flashlight-duotone", + "content": "", + "style": "outline", + "tags": "torch,find,search,locate", + "set_id": 1 + }, + { + "name": "flask-duotone", + "content": "", + "style": "outline", + "tags": "beaker,science,chemistry,experiment,erlenmeyer", + "set_id": 1 + }, + { + "name": "flip-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "flip-vertical-duotone", + "content": "", + "style": "outline", + "tags": "*new*,mirror,rotate,invert", + "set_id": 1 + }, + { + "name": "floppy-disk-duotone", + "content": "", + "style": "outline", + "tags": "diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "floppy-disk-back-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,diskette,directory,directories,folders,documents,files,save,write", + "set_id": 1 + }, + { + "name": "flow-arrow-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,flowchart,arrowhead", + "set_id": 1 + }, + { + "name": "flower-duotone", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flower-lotus-duotone", + "content": "", + "style": "outline", + "tags": "plants,green,environmental,spirituality", + "set_id": 1 + }, + { + "name": "flower-tulip-duotone", + "content": "", + "style": "outline", + "tags": "plants,green,environmental", + "set_id": 1 + }, + { + "name": "flying-saucer-duotone", + "content": "", + "style": "outline", + "tags": "ufo,space,aliens,extra terrestrial,sci-fi", + "set_id": 1 + }, + { + "name": "folder-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-dashed-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-lock-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-minus-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-open-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,load", + "set_id": 1 + }, + { + "name": "folder-plus-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders", + "set_id": 1 + }, + { + "name": "folder-simple-dashed-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,missing,temporary,dotted", + "set_id": 1 + }, + { + "name": "folder-simple-lock-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,private,secure", + "set_id": 1 + }, + { + "name": "folder-simple-minus-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,delete,write,remove,-", + "set_id": 1 + }, + { + "name": "folder-simple-plus-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,save,write,add,new,create,+", + "set_id": 1 + }, + { + "name": "folder-simple-star-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-simple-user-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folder-star-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,favorite,starred", + "set_id": 1 + }, + { + "name": "folder-user-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,personal", + "set_id": 1 + }, + { + "name": "folders-duotone", + "content": "", + "style": "outline", + "tags": "directory,directories,files,folders,copy,copied,duplicated", + "set_id": 1 + }, + { + "name": "football-duotone", + "content": "", + "style": "outline", + "tags": "sports,american football,nfl", + "set_id": 1 + }, + { + "name": "football-helmet-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,american football,nfl", + "set_id": 1 + }, + { + "name": "footprints-duotone", + "content": "", + "style": "outline", + "tags": "path,trail,walk,route,hike,hiking", + "set_id": 1 + }, + { + "name": "fork-knife-duotone", + "content": "", + "style": "outline", + "tags": "food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "four-k-duotone", + "content": "", + "style": "outline", + "tags": "*new*,uhd,resolution,video", + "set_id": 1 + }, + { + "name": "frame-corners-duotone", + "content": "", + "style": "outline", + "tags": "expand,fullscreen,maximized,resize,windowed,capture", + "set_id": 1 + }, + { + "name": "framer-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,interface,ui,motion,prototype,prototyping", + "set_id": 1 + }, + { + "name": "function-duotone", + "content": "", + "style": "outline", + "tags": "mathematics,arithmetic,f-stop", + "set_id": 1 + }, + { + "name": "funnel-duotone", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-duotone", + "content": "", + "style": "outline", + "tags": "filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-simple-x-duotone", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "funnel-x-duotone", + "content": "", + "style": "outline", + "tags": "*new*,filters,refine,sorting", + "set_id": 1 + }, + { + "name": "game-controller-duotone", + "content": "", + "style": "outline", + "tags": "gaming,video games,nintendo switch,sony playstation,microsoft xbox", + "set_id": 1 + }, + { + "name": "garage-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,automobile,buildings,transportation", + "set_id": 1 + }, + { + "name": "gas-can-duotone", + "content": "", + "style": "outline", + "tags": "jerrycan,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gas-pump-duotone", + "content": "", + "style": "outline", + "tags": "gas station,petrol,fuel,gasoline", + "set_id": 1 + }, + { + "name": "gauge-duotone", + "content": "", + "style": "outline", + "tags": "dashboard,meter,speed,speedometer,odometer,performance", + "set_id": 1 + }, + { + "name": "gavel-duotone", + "content": "", + "style": "outline", + "tags": "judge,justice,legal,law,court,hammer,government", + "set_id": 1 + }, + { + "name": "gear-duotone", + "content": "", + "style": "outline", + "tags": "8,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-fine-duotone", + "content": "", + "style": "outline", + "tags": "setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gear-six-duotone", + "content": "", + "style": "outline", + "tags": "6,settings,setup,preferences,cogs,gears,machinery,mechanical", + "set_id": 1 + }, + { + "name": "gender-female-duotone", + "content": "", + "style": "outline", + "tags": "woman,feminine,venus", + "set_id": 1 + }, + { + "name": "gender-intersex-duotone", + "content": "", + "style": "outline", + "tags": "transgender,non-binary", + "set_id": 1 + }, + { + "name": "gender-male-duotone", + "content": "", + "style": "outline", + "tags": "man,masculine,mars", + "set_id": 1 + }, + { + "name": "gender-neuter-duotone", + "content": "", + "style": "outline", + "tags": "agender,non-binary,asexual", + "set_id": 1 + }, + { + "name": "gender-nonbinary-duotone", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "gender-transgender-duotone", + "content": "", + "style": "outline", + "tags": "intersex,non-binary", + "set_id": 1 + }, + { + "name": "ghost-duotone", + "content": "", + "style": "outline", + "tags": "pac-man,spirit,scary,halloween", + "set_id": 1 + }, + { + "name": "gif-duotone", + "content": "", + "style": "outline", + "tags": "gifs,.gif,giphy", + "set_id": 1 + }, + { + "name": "gift-duotone", + "content": "", + "style": "outline", + "tags": "presents,holiday,birthday", + "set_id": 1 + }, + { + "name": "git-branch-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "git-commit-duotone", + "content": "", + "style": "outline", + "tags": "github,vcs,source control,version control,versioning,commits", + "set_id": 1 + }, + { + "name": "git-diff-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,difference,compare", + "set_id": 1 + }, + { + "name": "git-fork-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-merge-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,split", + "set_id": 1 + }, + { + "name": "git-pull-request-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,github,vcs,source control,version control,versioning,merge request", + "set_id": 1 + }, + { + "name": "github-logo-duotone", + "content": "", + "style": "outline", + "tags": "octocat,vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-duotone", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "gitlab-logo-simple-duotone", + "content": "", + "style": "outline", + "tags": "vcs,source control,version control,versioning,branches", + "set_id": 1 + }, + { + "name": "globe-duotone", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-hemisphere-east-duotone", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,europe,africa,asia,australia", + "set_id": 1 + }, + { + "name": "globe-hemisphere-west-duotone", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,north america,south america", + "set_id": 1 + }, + { + "name": "globe-simple-duotone", + "content": "", + "style": "outline", + "tags": "world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-simple-x-duotone", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "globe-stand-duotone", + "content": "", + "style": "outline", + "tags": "world,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography", + "set_id": 1 + }, + { + "name": "globe-x-duotone", + "content": "", + "style": "outline", + "tags": "*new*,world,earth,global,planet,circle,round,internationalization,i18n,languages,country,countries,geography,internet", + "set_id": 1 + }, + { + "name": "goggles-duotone", + "content": "", + "style": "outline", + "tags": "swim,swimming,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "golf-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,pga,tee,ball", + "set_id": 1 + }, + { + "name": "goodreads-logo-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,reading,books,social media,logos", + "set_id": 1 + }, + { + "name": "google-cardboard-logo-duotone", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,logos", + "set_id": 1 + }, + { + "name": "google-chrome-logo-duotone", + "content": "", + "style": "outline", + "tags": "web browsers,internet", + "set_id": 1 + }, + { + "name": "google-drive-logo-duotone", + "content": "", + "style": "outline", + "tags": "cloud,storage,backup,logos", + "set_id": 1 + }, + { + "name": "google-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,search engine,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-photos-logo-duotone", + "content": "", + "style": "outline", + "tags": "album,pictures,photography", + "set_id": 1 + }, + { + "name": "google-play-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,games,apps,applications,play store,app store,phone,mobile,android", + "set_id": 1 + }, + { + "name": "google-podcasts-logo-duotone", + "content": "", + "style": "outline", + "tags": "audio", + "set_id": 1 + }, + { + "name": "gps-duotone", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-fix-duotone", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation", + "set_id": 1 + }, + { + "name": "gps-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,geolocation,location,navigation,disabled", + "set_id": 1 + }, + { + "name": "gradient-duotone", + "content": "", + "style": "outline", + "tags": "fade,ombre,opacity", + "set_id": 1 + }, + { + "name": "graduation-cap-duotone", + "content": "", + "style": "outline", + "tags": "classroom,teacher,education,school,college,university,degree,graduate,hat", + "set_id": 1 + }, + { + "name": "grains-duotone", + "content": "", + "style": "outline", + "tags": "wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "grains-slash-duotone", + "content": "", + "style": "outline", + "tags": "gluten-free,wheat,gluten,farm,farming,agriculture", + "set_id": 1 + }, + { + "name": "graph-duotone", + "content": "", + "style": "outline", + "tags": "nodes,tree", + "set_id": 1 + }, + { + "name": "graphics-card-duotone", + "content": "", + "style": "outline", + "tags": "*new*,graphics card,microchip,computer,circuit", + "set_id": 1 + }, + { + "name": "greater-than-duotone", + "content": "", + "style": "outline", + "tags": "*new*,>,greater than,gt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "greater-than-or-equal-duotone", + "content": "", + "style": "outline", + "tags": "*new*,≥,greater than or equal,gte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "grid-four-duotone", + "content": "", + "style": "outline", + "tags": "4,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "grid-nine-duotone", + "content": "", + "style": "outline", + "tags": "9,apps,applications,squares,tiles,cells,tables,tabular,spreadsheets,excel", + "set_id": 1 + }, + { + "name": "guitar-duotone", + "content": "", + "style": "outline", + "tags": "music,instrument", + "set_id": 1 + }, + { + "name": "hair-dryer-duotone", + "content": "", + "style": "outline", + "tags": "*new*,blow dryer,beauty,grooming,salon", + "set_id": 1 + }, + { + "name": "hamburger-duotone", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "hammer-duotone", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "hand-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,backhand", + "set_id": 1 + }, + { + "name": "hand-arrow-down-duotone", + "content": "", + "style": "outline", + "tags": "*new*,take,receive,remove,withdraw,emoji", + "set_id": 1 + }, + { + "name": "hand-arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,deposit,donation,emoji", + "set_id": 1 + }, + { + "name": "hand-coins-duotone", + "content": "", + "style": "outline", + "tags": "donation,payment,money,paying,purchase", + "set_id": 1 + }, + { + "name": "hand-deposit-duotone", + "content": "", + "style": "outline", + "tags": "*new*,give,insert,donation,atm,emoji", + "set_id": 1 + }, + { + "name": "hand-eye-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,emoji,hamsa,evil eye", + "set_id": 1 + }, + { + "name": "hand-fist-duotone", + "content": "", + "style": "outline", + "tags": "emoji,power,protest,blm", + "set_id": 1 + }, + { + "name": "hand-grabbing-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,drag,hold", + "set_id": 1 + }, + { + "name": "hand-heart-duotone", + "content": "", + "style": "outline", + "tags": "donation,care,emoji", + "set_id": 1 + }, + { + "name": "hand-palm-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,palm,stop,wait,hamsa,5", + "set_id": 1 + }, + { + "name": "hand-peace-duotone", + "content": "", + "style": "outline", + "tags": "*new*,emoji,victory", + "set_id": 1 + }, + { + "name": "hand-pointing-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,emoji,fingers,clicks,mouse", + "set_id": 1 + }, + { + "name": "hand-soap-duotone", + "content": "", + "style": "outline", + "tags": "dispenser,pump,sanitizer,disinfectant,lotion,bottle", + "set_id": 1 + }, + { + "name": "hand-swipe-left-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-swipe-right-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-tap-duotone", + "content": "", + "style": "outline", + "tags": "pointers,cursors,gesture", + "set_id": 1 + }, + { + "name": "hand-waving-duotone", + "content": "", + "style": "outline", + "tags": "emoji,palm,wave,hello,goodbye", + "set_id": 1 + }, + { + "name": "hand-withdraw-duotone", + "content": "", + "style": "outline", + "tags": "*new*,take,remove,withdrawal,atm,emoji", + "set_id": 1 + }, + { + "name": "handbag-duotone", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "handbag-simple-duotone", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,purses", + "set_id": 1 + }, + { + "name": "hands-clapping-duotone", + "content": "", + "style": "outline", + "tags": "emoji,clap,applause", + "set_id": 1 + }, + { + "name": "hands-praying-duotone", + "content": "", + "style": "outline", + "tags": "emoji,religion,worship,prayer,thanks,thank you", + "set_id": 1 + }, + { + "name": "handshake-duotone", + "content": "", + "style": "outline", + "tags": "emoji,deal,agreement", + "set_id": 1 + }, + { + "name": "hard-drive-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-drives-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,hard disk,storage,hdd,servers,databases", + "set_id": 1 + }, + { + "name": "hard-hat-duotone", + "content": "", + "style": "outline", + "tags": "*new*,safety,construction,industry,helmet,ppe", + "set_id": 1 + }, + { + "name": "hash-duotone", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "hash-straight-duotone", + "content": "", + "style": "outline", + "tags": "hashtag,octothorpe,pound sign,number sign,tic-tac-toe,symbol", + "set_id": 1 + }, + { + "name": "head-circuit-duotone", + "content": "", + "style": "outline", + "tags": "*new*,automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "headlights-duotone", + "content": "", + "style": "outline", + "tags": "brights,high beams", + "set_id": 1 + }, + { + "name": "headphones-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,listening", + "set_id": 1 + }, + { + "name": "headset-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,listening,gaming,voice chat,microphone,headphones,support,customer-service,call-center", + "set_id": 1 + }, + { + "name": "heart-duotone", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-break-duotone", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heart-half-duotone", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited", + "set_id": 1 + }, + { + "name": "heart-straight-duotone", + "content": "", + "style": "outline", + "tags": "wellness,love,healthy,like,favorites,favorited,suits,cards,gambling,casino,gaming,emoji", + "set_id": 1 + }, + { + "name": "heart-straight-break-duotone", + "content": "", + "style": "outline", + "tags": "love,hate,crack,split,divorce,emoji", + "set_id": 1 + }, + { + "name": "heartbeat-duotone", + "content": "", + "style": "outline", + "tags": "wellness,healthy,ecg,ekg,vitals,monitor", + "set_id": 1 + }, + { + "name": "hexagon-duotone", + "content": "", + "style": "outline", + "tags": "6,shapes,polygons", + "set_id": 1 + }, + { + "name": "high-definition-duotone", + "content": "", + "style": "outline", + "tags": "*new*,hd,resolution,video", + "set_id": 1 + }, + { + "name": "high-heel-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,pumps,clothes,clothing,shoes", + "set_id": 1 + }, + { + "name": "highlighter-duotone", + "content": "", + "style": "outline", + "tags": "*new*,marker,write,writing,editing", + "set_id": 1 + }, + { + "name": "highlighter-circle-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "hockey-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,nhl,stick,puck", + "set_id": 1 + }, + { + "name": "hoodie-duotone", + "content": "", + "style": "outline", + "tags": "clothes,clothing,sweatshirt", + "set_id": 1 + }, + { + "name": "horse-duotone", + "content": "", + "style": "outline", + "tags": "animals,equestrian,chess,knight,sports", + "set_id": 1 + }, + { + "name": "hospital-duotone", + "content": "", + "style": "outline", + "tags": "*new*,places,locations,medical,medicine,emergency,doctor,buildings", + "set_id": 1 + }, + { + "name": "hourglass-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-high-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-low-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-medium-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-high-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-low-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "hourglass-simple-medium-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarms,clock,schedule,events,waiting,progress", + "set_id": 1 + }, + { + "name": "house-duotone", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-line-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "house-simple-duotone", + "content": "", + "style": "outline", + "tags": "homes,buildings,places,locations", + "set_id": 1 + }, + { + "name": "hurricane-duotone", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,cyclone,storm,disaster,wind", + "set_id": 1 + }, + { + "name": "ice-cream-duotone", + "content": "", + "style": "outline", + "tags": "food,dessert,cone", + "set_id": 1 + }, + { + "name": "identification-badge-duotone", + "content": "", + "style": "outline", + "tags": "license,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "identification-card-duotone", + "content": "", + "style": "outline", + "tags": "license,badge,credentials,nametag,user,verification", + "set_id": 1 + }, + { + "name": "image-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "image-broken-duotone", + "content": "", + "style": "outline", + "tags": "*new*,pictures,photographs,photography,wallpapers,gallery,landscape,missing,error,404", + "set_id": 1 + }, + { + "name": "image-square-duotone", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape", + "set_id": 1 + }, + { + "name": "images-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "images-square-duotone", + "content": "", + "style": "outline", + "tags": "pictures,photographs,photography,wallpapers,gallery,landscape,album", + "set_id": 1 + }, + { + "name": "infinity-duotone", + "content": "", + "style": "outline", + "tags": "infinite,lemniscate,figure-eight,mathematics,arithmetic,calculator,∞", + "set_id": 1 + }, + { + "name": "info-duotone", + "content": "", + "style": "outline", + "tags": "information,help,support", + "set_id": 1 + }, + { + "name": "instagram-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,social media,photography,camera", + "set_id": 1 + }, + { + "name": "intersect-duotone", + "content": "", + "style": "outline", + "tags": "round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "intersect-square-duotone", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection", + "set_id": 1 + }, + { + "name": "intersect-three-duotone", + "content": "", + "style": "outline", + "tags": "venn-diagram,join,intersection,gender,pronouns", + "set_id": 1 + }, + { + "name": "intersection-duotone", + "content": "", + "style": "outline", + "tags": "*new*,∩,intersection,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "invoice-duotone", + "content": "", + "style": "outline", + "tags": "*new*,receipt,expense,bill", + "set_id": 1 + }, + { + "name": "island-duotone", + "content": "", + "style": "outline", + "tags": "*new*,geography,beach,ocean,tropical,palm,vacation,trip,locations,places", + "set_id": 1 + }, + { + "name": "jar-duotone", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jar-label-duotone", + "content": "", + "style": "outline", + "tags": "*new*,mason jar,kitchen,pantry,canning,preserves,food,condiments", + "set_id": 1 + }, + { + "name": "jeep-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,automobile,suv,cars,trucks,wrangler,off-road,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "joystick-duotone", + "content": "", + "style": "outline", + "tags": "*new*,gaming,game controller,video games,arcade game,atari", + "set_id": 1 + }, + { + "name": "kanban-duotone", + "content": "", + "style": "outline", + "tags": "scheduling,tasks,project management,process,lean,agile", + "set_id": 1 + }, + { + "name": "key-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "key-return-duotone", + "content": "", + "style": "outline", + "tags": "keyboard,enter", + "set_id": 1 + }, + { + "name": "keyboard-duotone", + "content": "", + "style": "outline", + "tags": "typing,type,keys,input", + "set_id": 1 + }, + { + "name": "keyhole-duotone", + "content": "", + "style": "outline", + "tags": "lock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "knife-duotone", + "content": "", + "style": "outline", + "tags": "tools,food,meal,eating,restaurants,dining,utensils", + "set_id": 1 + }, + { + "name": "ladder-duotone", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "ladder-simple-duotone", + "content": "", + "style": "outline", + "tags": "stairs,steps,climbing", + "set_id": 1 + }, + { + "name": "lamp-duotone", + "content": "", + "style": "outline", + "tags": "light,furniture,appliances", + "set_id": 1 + }, + { + "name": "lamp-pendant-duotone", + "content": "", + "style": "outline", + "tags": "*new*,light,furniture,appliances", + "set_id": 1 + }, + { + "name": "laptop-duotone", + "content": "", + "style": "outline", + "tags": "computer,notebook,pc,macbook", + "set_id": 1 + }, + { + "name": "lasso-duotone", + "content": "", + "style": "outline", + "tags": "*new*,select,selection,loop,rope,cowboy", + "set_id": 1 + }, + { + "name": "lastfm-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,scrobble,music,social media", + "set_id": 1 + }, + { + "name": "layout-duotone", + "content": "", + "style": "outline", + "tags": "wireframe,sidebar,ui,interface", + "set_id": 1 + }, + { + "name": "leaf-duotone", + "content": "", + "style": "outline", + "tags": "plants,trees,branches,leaves,nodes,green,environmental", + "set_id": 1 + }, + { + "name": "lectern-duotone", + "content": "", + "style": "outline", + "tags": "*new*,lecture,podium,pulpit,stand,speech,presentation,keynote", + "set_id": 1 + }, + { + "name": "lego-duotone", + "content": "", + "style": "outline", + "tags": "*new*,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "lego-smiley-duotone", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,toys,blocks,bricks", + "set_id": 1 + }, + { + "name": "less-than-duotone", + "content": "", + "style": "outline", + "tags": "*new*,<,less than,lt,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "less-than-or-equal-duotone", + "content": "", + "style": "outline", + "tags": "*new*,≤,less than or equal,lte,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "letter-circle-h-duotone", + "content": "", + "style": "outline", + "tags": "*new*,hospital,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-p-duotone", + "content": "", + "style": "outline", + "tags": "*new*,parking lot,valet,vehicles,letter,glyph,character", + "set_id": 1 + }, + { + "name": "letter-circle-v-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vegan,letter,glyph,character", + "set_id": 1 + }, + { + "name": "lifebuoy-duotone", + "content": "", + "style": "outline", + "tags": "lifebelt,lifesaver,safety,help,support,nautical,boats,ships", + "set_id": 1 + }, + { + "name": "lightbulb-duotone", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lightbulb-filament-duotone", + "content": "", + "style": "outline", + "tags": "flashlight,bulbs,lighting,led,energy,idea", + "set_id": 1 + }, + { + "name": "lighthouse-duotone", + "content": "", + "style": "outline", + "tags": "buildings,nautical,navigation,boats,ships,safety", + "set_id": 1 + }, + { + "name": "lightning-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,stormy,thunderstorm,thunderbolt,charged,charger,charging,power,electricity,flash", + "set_id": 1 + }, + { + "name": "lightning-a-duotone", + "content": "", + "style": "outline", + "tags": "flash,auto", + "set_id": 1 + }, + { + "name": "lightning-slash-duotone", + "content": "", + "style": "outline", + "tags": "thunderbolt,charged,charger,charging,power,electricity,disabled,flash", + "set_id": 1 + }, + { + "name": "line-segment-duotone", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-segments-duotone", + "content": "", + "style": "outline", + "tags": "shapes,drawing,path,pen,vector", + "set_id": 1 + }, + { + "name": "line-vertical-duotone", + "content": "", + "style": "outline", + "tags": "*new*,bar,pipe,|,divider. symbol", + "set_id": 1 + }, + { + "name": "link-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-break-duotone", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-duotone", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-break-duotone", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained", + "set_id": 1 + }, + { + "name": "link-simple-horizontal-break-duotone", + "content": "", + "style": "outline", + "tags": "anchor,hyperlink,hypertext,chains,chained,errors,broken", + "set_id": 1 + }, + { + "name": "linkedin-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,jobs,employment,social media", + "set_id": 1 + }, + { + "name": "linktree-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,social media,links", + "set_id": 1 + }, + { + "name": "linux-logo-duotone", + "content": "", + "style": "outline", + "tags": "penguin,computer,animals", + "set_id": 1 + }, + { + "name": "list-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,hamburger menu,overflow menu,sidebar,3,ul,ol,unordered list,ordered list,checklist,lines", + "set_id": 1 + }, + { + "name": "list-bullets-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,bulleted list,checklist", + "set_id": 1 + }, + { + "name": "list-checks-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,checklist,todo", + "set_id": 1 + }, + { + "name": "list-dashes-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,ul,unordered list,dashed list,checklist", + "set_id": 1 + }, + { + "name": "list-heart-duotone", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "list-magnifying-glass-duotone", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "list-numbers-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,ol,ordered list,numbered list,checklist", + "set_id": 1 + }, + { + "name": "list-plus-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,ul,ol,unordered list,ordered list,checklist,add,+", + "set_id": 1 + }, + { + "name": "list-star-duotone", + "content": "", + "style": "outline", + "tags": "*new*,favorites,wishlist,liked", + "set_id": 1 + }, + { + "name": "lock-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-key-open-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-laminated-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-laminated-open-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-open-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy", + "set_id": 1 + }, + { + "name": "lock-simple-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,secured,authentication,authenticated,login,locked,encrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lock-simple-open-duotone", + "content": "", + "style": "outline", + "tags": "padlock,security,unsecured,authentication,unauthenticated,login,unlocked,unencrypted,encryption,privacy,private", + "set_id": 1 + }, + { + "name": "lockers-duotone", + "content": "", + "style": "outline", + "tags": "locker room,gym,storage", + "set_id": 1 + }, + { + "name": "log-duotone", + "content": "", + "style": "outline", + "tags": "*new*,tree,stump,stick,branch", + "set_id": 1 + }, + { + "name": "magic-wand-duotone", + "content": "", + "style": "outline", + "tags": "selection,wizard,games", + "set_id": 1 + }, + { + "name": "magnet-duotone", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnet-straight-duotone", + "content": "", + "style": "outline", + "tags": "magnetism,science,physics", + "set_id": 1 + }, + { + "name": "magnifying-glass-duotone", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect", + "set_id": 1 + }, + { + "name": "magnifying-glass-minus-duotone", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom out,-", + "set_id": 1 + }, + { + "name": "magnifying-glass-plus-duotone", + "content": "", + "style": "outline", + "tags": "search,find,locate,query,inspect,zoom in,+", + "set_id": 1 + }, + { + "name": "mailbox-duotone", + "content": "", + "style": "outline", + "tags": "*new*,email,letters,messaging,post", + "set_id": 1 + }, + { + "name": "map-pin-duotone", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-area-duotone", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-line-duotone", + "content": "", + "style": "outline", + "tags": "maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-plus-duotone", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,add,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-duotone", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-area-duotone", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-pin-simple-line-duotone", + "content": "", + "style": "outline", + "tags": "*new*,maps,places,markers,pins,locations,poi,point of interest", + "set_id": 1 + }, + { + "name": "map-trifold-duotone", + "content": "", + "style": "outline", + "tags": "maps,places,locations,cartography,geography", + "set_id": 1 + }, + { + "name": "markdown-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,markup,editor,.md", + "set_id": 1 + }, + { + "name": "marker-circle-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,drawing", + "set_id": 1 + }, + { + "name": "martini-duotone", + "content": "", + "style": "outline", + "tags": "glass,drinks,beverages,cocktails,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "mask-happy-duotone", + "content": "", + "style": "outline", + "tags": "theater,costume,smile,smiling,thalia", + "set_id": 1 + }, + { + "name": "mask-sad-duotone", + "content": "", + "style": "outline", + "tags": "theater,costume,cry,crying,melpomene", + "set_id": 1 + }, + { + "name": "mastodon-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,fediverse,social media,decentralized", + "set_id": 1 + }, + { + "name": "math-operations-duotone", + "content": "", + "style": "outline", + "tags": "addition,sum,subtraction,difference,multiply,multiplication,product,divide,division,divisor,dividend,quotient,equals,equality,mathematics,arithmetic,calculator,+,-,±,×,÷,=", + "set_id": 1 + }, + { + "name": "matrix-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,matrix protocol,brands,logos", + "set_id": 1 + }, + { + "name": "medal-duotone", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,rosette", + "set_id": 1 + }, + { + "name": "medal-military-duotone", + "content": "", + "style": "outline", + "tags": "ribbons,winning,victory,awards,military", + "set_id": 1 + }, + { + "name": "medium-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,reading,writing,news,social media", + "set_id": 1 + }, + { + "name": "megaphone-duotone", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "megaphone-simple-duotone", + "content": "", + "style": "outline", + "tags": "bullhorn,announcements,loudspeaker,broadcast", + "set_id": 1 + }, + { + "name": "member-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,∈,is element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "memory-duotone", + "content": "", + "style": "outline", + "tags": "*new*,ram,microchip,computer,circuit,electronics", + "set_id": 1 + }, + { + "name": "messenger-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,facebook,social media", + "set_id": 1 + }, + { + "name": "meta-logo-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,facebook,logos,social media,logos", + "set_id": 1 + }, + { + "name": "meteor-duotone", + "content": "", + "style": "outline", + "tags": "*new*,astronomy,asteroid,fireball", + "set_id": 1 + }, + { + "name": "metronome-duotone", + "content": "", + "style": "outline", + "tags": "music,beat,tempo,bpm", + "set_id": 1 + }, + { + "name": "microphone-duotone", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio", + "set_id": 1 + }, + { + "name": "microphone-slash-duotone", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,podcast,studio,muted,disabled", + "set_id": 1 + }, + { + "name": "microphone-stage-duotone", + "content": "", + "style": "outline", + "tags": "audio,recording,music,sound,performance,concert", + "set_id": 1 + }, + { + "name": "microscope-duotone", + "content": "", + "style": "outline", + "tags": "*new*,science,biology,experiment,magnify", + "set_id": 1 + }, + { + "name": "microsoft-excel-logo-duotone", + "content": "", + "style": "outline", + "tags": "tables,spreadsheets,tabular", + "set_id": 1 + }, + { + "name": "microsoft-outlook-logo-duotone", + "content": "", + "style": "outline", + "tags": "email,logos", + "set_id": 1 + }, + { + "name": "microsoft-powerpoint-logo-duotone", + "content": "", + "style": "outline", + "tags": "slides,slideshow,presentation", + "set_id": 1 + }, + { + "name": "microsoft-teams-logo-duotone", + "content": "", + "style": "outline", + "tags": "chat,video conference", + "set_id": 1 + }, + { + "name": "microsoft-word-logo-duotone", + "content": "", + "style": "outline", + "tags": "documents,word processor,doc,docx", + "set_id": 1 + }, + { + "name": "minus-duotone", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,line,horizontal,divider", + "set_id": 1 + }, + { + "name": "minus-circle-duotone", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator,round", + "set_id": 1 + }, + { + "name": "minus-square-duotone", + "content": "", + "style": "outline", + "tags": "-,subtraction,difference,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "money-duotone", + "content": "", + "style": "outline", + "tags": "cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "money-wavy-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cash,dollars,paper bills,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "monitor-duotone", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays", + "set_id": 1 + }, + { + "name": "monitor-arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "*new*,screen,screencast,screenshare,upload,video,movie", + "set_id": 1 + }, + { + "name": "monitor-play-duotone", + "content": "", + "style": "outline", + "tags": "screen,television,tv,displays,screencast,video,movie", + "set_id": 1 + }, + { + "name": "moon-duotone", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing", + "set_id": 1 + }, + { + "name": "moon-stars-duotone", + "content": "", + "style": "outline", + "tags": "night,evening,clear,sleep,snooze,night mode,dark mode,astronomy,stargazing,constellation", + "set_id": 1 + }, + { + "name": "moped-duotone", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "moped-front-duotone", + "content": "", + "style": "outline", + "tags": "scooter,vehicles,vespa,transportation,travel", + "set_id": 1 + }, + { + "name": "mosque-duotone", + "content": "", + "style": "outline", + "tags": "islam,muslim,religion,worship", + "set_id": 1 + }, + { + "name": "motorcycle-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,motorbike,transportation,travel", + "set_id": 1 + }, + { + "name": "mountains-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,hills,outdoors,terrain,geology,adventure", + "set_id": 1 + }, + { + "name": "mouse-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-left-click-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-middle-click-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-right-click-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-scroll-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clicks,input", + "set_id": 1 + }, + { + "name": "mouse-simple-duotone", + "content": "", + "style": "outline", + "tags": "clicks,input", + "set_id": 1 + }, + { + "name": "music-note-duotone", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-note-simple-duotone", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-duotone", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "music-notes-minus-duotone", + "content": "", + "style": "outline", + "tags": "*new*,songs,audio,playlist,albums,remove,subtract", + "set_id": 1 + }, + { + "name": "music-notes-plus-duotone", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums,add", + "set_id": 1 + }, + { + "name": "music-notes-simple-duotone", + "content": "", + "style": "outline", + "tags": "songs,audio,playlist,albums", + "set_id": 1 + }, + { + "name": "navigation-arrow-duotone", + "content": "", + "style": "outline", + "tags": "location,directions,compass,gps", + "set_id": 1 + }, + { + "name": "needle-duotone", + "content": "", + "style": "outline", + "tags": "sewing,thread,awl,tailor", + "set_id": 1 + }, + { + "name": "network-duotone", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan", + "set_id": 1 + }, + { + "name": "network-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,error", + "set_id": 1 + }, + { + "name": "network-x-duotone", + "content": "", + "style": "outline", + "tags": "*new*,internet,ethernet,lan,disabled", + "set_id": 1 + }, + { + "name": "newspaper-duotone", + "content": "", + "style": "outline", + "tags": "reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "newspaper-clipping-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,reading,writing,journals,periodicals", + "set_id": 1 + }, + { + "name": "not-equals-duotone", + "content": "", + "style": "outline", + "tags": "*new*,≠,equality,equivalent,equivalence,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-member-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,∉,is not element of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-subset-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,⊄,not subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "not-superset-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,⊉,not superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "notches-duotone", + "content": "", + "style": "outline", + "tags": "textarea,resize,drag handle,knurling", + "set_id": 1 + }, + { + "name": "note-duotone", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-blank-duotone", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "note-pencil-duotone", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,post-it,reminders", + "set_id": 1 + }, + { + "name": "notebook-duotone", + "content": "", + "style": "outline", + "tags": "notes,note-taking,memorandum,journal,diary,logs,logbook", + "set_id": 1 + }, + { + "name": "notepad-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,logs,logbook,notes,note-taking,memorandum,journal,diary", + "set_id": 1 + }, + { + "name": "notification-duotone", + "content": "", + "style": "outline", + "tags": "badge,pip", + "set_id": 1 + }, + { + "name": "notion-logo-duotone", + "content": "", + "style": "outline", + "tags": "documentation,productivity,wiki,logos", + "set_id": 1 + }, + { + "name": "nuclear-plant-duotone", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "number-circle-eight-duotone", + "content": "", + "style": "outline", + "tags": "8,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-five-duotone", + "content": "", + "style": "outline", + "tags": "5,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-four-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,4,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-nine-duotone", + "content": "", + "style": "outline", + "tags": "9,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-one-duotone", + "content": "", + "style": "outline", + "tags": "1,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-seven-duotone", + "content": "", + "style": "outline", + "tags": "7,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-six-duotone", + "content": "", + "style": "outline", + "tags": "6,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-three-duotone", + "content": "", + "style": "outline", + "tags": "3,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-two-duotone", + "content": "", + "style": "outline", + "tags": "2,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-circle-zero-duotone", + "content": "", + "style": "outline", + "tags": "0,round,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-eight-duotone", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-five-duotone", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-four-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-nine-duotone", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-one-duotone", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-seven-duotone", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-six-duotone", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-eight-duotone", + "content": "", + "style": "outline", + "tags": "8,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-five-duotone", + "content": "", + "style": "outline", + "tags": "5,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-four-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,4,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-nine-duotone", + "content": "", + "style": "outline", + "tags": "9,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-one-duotone", + "content": "", + "style": "outline", + "tags": "1,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-seven-duotone", + "content": "", + "style": "outline", + "tags": "7,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-six-duotone", + "content": "", + "style": "outline", + "tags": "6,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-three-duotone", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-two-duotone", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-square-zero-duotone", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-three-duotone", + "content": "", + "style": "outline", + "tags": "3,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-two-duotone", + "content": "", + "style": "outline", + "tags": "2,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "number-zero-duotone", + "content": "", + "style": "outline", + "tags": "0,numbers,numerals,digits,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "numpad-duotone", + "content": "", + "style": "outline", + "tags": "*new*,dialer,dialpad,call-center,telephone,landline,password,passcode", + "set_id": 1 + }, + { + "name": "nut-duotone", + "content": "", + "style": "outline", + "tags": "bolts,screws,machinery,tools,hexagon", + "set_id": 1 + }, + { + "name": "ny-times-logo-duotone", + "content": "", + "style": "outline", + "tags": "nyt,new york times,logos,reading,writing,news,newspaper", + "set_id": 1 + }, + { + "name": "octagon-duotone", + "content": "", + "style": "outline", + "tags": "8,shapes,polygons", + "set_id": 1 + }, + { + "name": "office-chair-duotone", + "content": "", + "style": "outline", + "tags": "furniture,seat", + "set_id": 1 + }, + { + "name": "onigiri-duotone", + "content": "", + "style": "outline", + "tags": "*new*,rice ball,japanese,food,restaurant", + "set_id": 1 + }, + { + "name": "open-ai-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,artificial intelligence,ai,chatgpt,llm,logos", + "set_id": 1 + }, + { + "name": "option-duotone", + "content": "", + "style": "outline", + "tags": "keyboard,shortcut,modifier", + "set_id": 1 + }, + { + "name": "orange-duotone", + "content": "", + "style": "outline", + "tags": "*new*,food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "orange-slice-duotone", + "content": "", + "style": "outline", + "tags": "food,fruit,juice,citrus,groceries,market", + "set_id": 1 + }, + { + "name": "oven-duotone", + "content": "", + "style": "outline", + "tags": "*new*,stove,stovetop,food,cooking,cuisine,kitchen", + "set_id": 1 + }, + { + "name": "package-duotone", + "content": "", + "style": "outline", + "tags": "packages,boxes,delivery,mail,postal service,bundles,library,libraries,shipping", + "set_id": 1 + }, + { + "name": "paint-brush-duotone", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-broad-duotone", + "content": "", + "style": "outline", + "tags": "fill,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-brush-household-duotone", + "content": "", + "style": "outline", + "tags": "colors,color picker,arts", + "set_id": 1 + }, + { + "name": "paint-bucket-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,paintbucket,colors,color picker,fill,arts", + "set_id": 1 + }, + { + "name": "paint-roller-duotone", + "content": "", + "style": "outline", + "tags": "colors,color picker,fill,arts,theme", + "set_id": 1 + }, + { + "name": "palette-duotone", + "content": "", + "style": "outline", + "tags": "paint,colors,color picker,arts", + "set_id": 1 + }, + { + "name": "panorama-duotone", + "content": "", + "style": "outline", + "tags": "*new*,image,picture,photography,landscape,360", + "set_id": 1 + }, + { + "name": "pants-duotone", + "content": "", + "style": "outline", + "tags": "clothing,clothes,jeans", + "set_id": 1 + }, + { + "name": "paper-plane-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-right-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paper-plane-tilt-duotone", + "content": "", + "style": "outline", + "tags": "mail,email,send,sent,messages,messaging,toys,games", + "set_id": 1 + }, + { + "name": "paperclip-duotone", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "paperclip-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "attachments,mail,email,office", + "set_id": 1 + }, + { + "name": "parachute-duotone", + "content": "", + "style": "outline", + "tags": "skydiving,safety", + "set_id": 1 + }, + { + "name": "paragraph-duotone", + "content": "", + "style": "outline", + "tags": "pilcrow", + "set_id": 1 + }, + { + "name": "parallelogram-duotone", + "content": "", + "style": "outline", + "tags": "shapes,bandcamp,logos", + "set_id": 1 + }, + { + "name": "park-duotone", + "content": "", + "style": "outline", + "tags": "bench,outdoors", + "set_id": 1 + }, + { + "name": "password-duotone", + "content": "", + "style": "outline", + "tags": "security,secured,authentication,authenticated,login,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "path-duotone", + "content": "", + "style": "outline", + "tags": "transit,travel,trail,gps,navigation,route,destination,vector", + "set_id": 1 + }, + { + "name": "patreon-logo-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,crowdfunding,logos", + "set_id": 1 + }, + { + "name": "pause-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "pause-circle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop,round", + "set_id": 1 + }, + { + "name": "paw-print-duotone", + "content": "", + "style": "outline", + "tags": "pets,pet store,pet shop,animals,cat,dog,veterinarian", + "set_id": 1 + }, + { + "name": "paypal-logo-duotone", + "content": "", + "style": "outline", + "tags": "payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "peace-duotone", + "content": "", + "style": "outline", + "tags": "love,hippies,peace sign,symbols", + "set_id": 1 + }, + { + "name": "pen-duotone", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pen-nib-duotone", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pen-nib-straight-duotone", + "content": "", + "style": "outline", + "tags": "ink,write,writing,editing,sign,signature,fountain pen,illustrator", + "set_id": 1 + }, + { + "name": "pencil-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-circle-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-line-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-ruler-duotone", + "content": "", + "style": "outline", + "tags": "*new*,drawing,drafting,construction,tools", + "set_id": 1 + }, + { + "name": "pencil-simple-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-line-duotone", + "content": "", + "style": "outline", + "tags": "write,writing,editing,sign,signature", + "set_id": 1 + }, + { + "name": "pencil-simple-slash-duotone", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pencil-slash-duotone", + "content": "", + "style": "outline", + "tags": "read-only,write,writing,editing", + "set_id": 1 + }, + { + "name": "pentagon-duotone", + "content": "", + "style": "outline", + "tags": "*new*,shapes,polygons,5", + "set_id": 1 + }, + { + "name": "pentagram-duotone", + "content": "", + "style": "outline", + "tags": "star,wicca,satan,satanism,religion,spirituality,evil,magic", + "set_id": 1 + }, + { + "name": "pepper-duotone", + "content": "", + "style": "outline", + "tags": "food,spicy,chile,vegetable", + "set_id": 1 + }, + { + "name": "percent-duotone", + "content": "", + "style": "outline", + "tags": "%,percentage,percentile,ratio,delta,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "person-duotone", + "content": "", + "style": "outline", + "tags": "walking,human,woman,man,body,transit,transportation,travel,commuter,user", + "set_id": 1 + }, + { + "name": "person-arms-spread-duotone", + "content": "", + "style": "outline", + "tags": "accessibility,vitruvian,stretch,sports", + "set_id": 1 + }, + { + "name": "person-simple-duotone", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-bike-duotone", + "content": "", + "style": "outline", + "tags": "pedestrian,biking,bicycle,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-circle-duotone", + "content": "", + "style": "outline", + "tags": "*new*,human,accessibility,a11y,vitruvius,vitruvian", + "set_id": 1 + }, + { + "name": "person-simple-hike-duotone", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,climbing,mountaineering,bouldering", + "set_id": 1 + }, + { + "name": "person-simple-run-duotone", + "content": "", + "style": "outline", + "tags": "pedestrian,running,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "person-simple-ski-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,skiing,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-snowboard-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,snowboarding,winter,mountain", + "set_id": 1 + }, + { + "name": "person-simple-swim-duotone", + "content": "", + "style": "outline", + "tags": "*new*,pedestrian,swimming,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-tai-chi-duotone", + "content": "", + "style": "outline", + "tags": "*new*,mindfulness,martial arts,meditation,sports,exercise,yoga", + "set_id": 1 + }, + { + "name": "person-simple-throw-duotone", + "content": "", + "style": "outline", + "tags": "pedestrian,tennis,human,woman,man,body,sports,exercise", + "set_id": 1 + }, + { + "name": "person-simple-walk-duotone", + "content": "", + "style": "outline", + "tags": "pedestrian,walking,human,woman,man,body,transit,transportation,travel,commuter,user,exercise", + "set_id": 1 + }, + { + "name": "perspective-duotone", + "content": "", + "style": "outline", + "tags": "3d,skew,warp,trapezoid", + "set_id": 1 + }, + { + "name": "phone-duotone", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-call-duotone", + "content": "", + "style": "outline", + "tags": "calls,calling,ringing,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-disconnect-duotone", + "content": "", + "style": "outline", + "tags": "calls,hang up,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-incoming-duotone", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-list-duotone", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-outgoing-duotone", + "content": "", + "style": "outline", + "tags": "calls,calling,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-pause-duotone", + "content": "", + "style": "outline", + "tags": "*new*,calls,hold,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-plus-duotone", + "content": "", + "style": "outline", + "tags": "calls,telephone,landline,talk,conference,add", + "set_id": 1 + }, + { + "name": "phone-slash-duotone", + "content": "", + "style": "outline", + "tags": "calls,disabled,disconnected,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-transfer-duotone", + "content": "", + "style": "outline", + "tags": "*new*,calls,call-center,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phone-x-duotone", + "content": "", + "style": "outline", + "tags": "calls,missed,errors,telephone,landline,talk", + "set_id": 1 + }, + { + "name": "phosphor-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos", + "set_id": 1 + }, + { + "name": "pi-duotone", + "content": "", + "style": "outline", + "tags": "π,symbol,mathematics,circle", + "set_id": 1 + }, + { + "name": "piano-keys-duotone", + "content": "", + "style": "outline", + "tags": "music,instrument,keyboard", + "set_id": 1 + }, + { + "name": "picnic-table-duotone", + "content": "", + "style": "outline", + "tags": "*new*,bench,park,outdoors", + "set_id": 1 + }, + { + "name": "picture-in-picture-duotone", + "content": "", + "style": "outline", + "tags": "pip,pop-out,minimize,maximize", + "set_id": 1 + }, + { + "name": "piggy-bank-duotone", + "content": "", + "style": "outline", + "tags": "savings,deposit,money,coins", + "set_id": 1 + }, + { + "name": "pill-duotone", + "content": "", + "style": "outline", + "tags": "capsule,medicine,rx,pharmacy,pharmacist,pharmaceuticals,prescription,drugs", + "set_id": 1 + }, + { + "name": "ping-pong-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,paddle", + "set_id": 1 + }, + { + "name": "pint-glass-duotone", + "content": "", + "style": "outline", + "tags": "*new*,water,beverage,drinks,beverages,food,dining", + "set_id": 1 + }, + { + "name": "pinterest-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,vision board,mood board,social media", + "set_id": 1 + }, + { + "name": "pinwheel-duotone", + "content": "", + "style": "outline", + "tags": "toys,whirligig", + "set_id": 1 + }, + { + "name": "pipe-duotone", + "content": "", + "style": "outline", + "tags": "*new*,tube,plumber,plumbing,construction", + "set_id": 1 + }, + { + "name": "pipe-wrench-duotone", + "content": "", + "style": "outline", + "tags": "*new*,plumber,plumbing,tools,construction", + "set_id": 1 + }, + { + "name": "pix-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,payments,paying,purchase,logos", + "set_id": 1 + }, + { + "name": "pizza-duotone", + "content": "", + "style": "outline", + "tags": "fast food,party,places,locations,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "placeholder-duotone", + "content": "", + "style": "outline", + "tags": "empty,notdef,tofu,rectangle slash,missing", + "set_id": 1 + }, + { + "name": "planet-duotone", + "content": "", + "style": "outline", + "tags": "saturn,world,globe,astronomy,space", + "set_id": 1 + }, + { + "name": "plant-duotone", + "content": "", + "style": "outline", + "tags": "sprout,vegan,farm,farming,garden,gardening", + "set_id": 1 + }, + { + "name": "play-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start", + "set_id": 1 + }, + { + "name": "play-circle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,round", + "set_id": 1 + }, + { + "name": "play-pause-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,resume,start,stop", + "set_id": 1 + }, + { + "name": "playlist-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,queue", + "set_id": 1 + }, + { + "name": "plug-duotone", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plug-charging-duotone", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,charge,charging", + "set_id": 1 + }, + { + "name": "plugs-duotone", + "content": "", + "style": "outline", + "tags": "outlet,socket,plugin,integration,disconnected", + "set_id": 1 + }, + { + "name": "plugs-connected-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,outlet,socket,plugin,integration", + "set_id": 1 + }, + { + "name": "plus-duotone", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "plus-circle-duotone", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,round,+", + "set_id": 1 + }, + { + "name": "plus-minus-duotone", + "content": "", + "style": "outline", + "tags": "plus or minus,plus/minus,add/subtract,addition,sum,subtraction,difference,mathematics,arithmetic,calculator,+,-,±", + "set_id": 1 + }, + { + "name": "plus-square-duotone", + "content": "", + "style": "outline", + "tags": "addition,sum,mathematics,arithmetic,calculator,+", + "set_id": 1 + }, + { + "name": "poker-chip-duotone", + "content": "", + "style": "outline", + "tags": "chips,tokens,cards,gambling,casino", + "set_id": 1 + }, + { + "name": "police-car-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,law enforcement", + "set_id": 1 + }, + { + "name": "polygon-duotone", + "content": "", + "style": "outline", + "tags": "shapes,drawing", + "set_id": 1 + }, + { + "name": "popcorn-duotone", + "content": "", + "style": "outline", + "tags": "food,movies,theater", + "set_id": 1 + }, + { + "name": "popsicle-duotone", + "content": "", + "style": "outline", + "tags": "*new*,ice cream,dessert,summer,food", + "set_id": 1 + }, + { + "name": "potted-plant-duotone", + "content": "", + "style": "outline", + "tags": "sprout,vegan,garden,gardening", + "set_id": 1 + }, + { + "name": "power-duotone", + "content": "", + "style": "outline", + "tags": "charged,charger,charging,on,off,on/off,switch,power switch", + "set_id": 1 + }, + { + "name": "prescription-duotone", + "content": "", + "style": "outline", + "tags": "rx,medicine,drugs,pharmacy,pharmacist,pharmaceuticals,doctor", + "set_id": 1 + }, + { + "name": "presentation-duotone", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "presentation-chart-duotone", + "content": "", + "style": "outline", + "tags": "whiteboard,flipchart,graphs,graphing,charts,statistics,analyze,analysis,meeting", + "set_id": 1 + }, + { + "name": "printer-duotone", + "content": "", + "style": "outline", + "tags": "printing", + "set_id": 1 + }, + { + "name": "prohibit-duotone", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "prohibit-inset-duotone", + "content": "", + "style": "outline", + "tags": "forbidden,prohibited,cancelled,prevent,stop,do not enter", + "set_id": 1 + }, + { + "name": "projector-screen-duotone", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,movies,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "projector-screen-chart-duotone", + "content": "", + "style": "outline", + "tags": "projection,presentation,slideshow,graphs,graphing,charts,statistics,analyze,analysis", + "set_id": 1 + }, + { + "name": "pulse-duotone", + "content": "", + "style": "outline", + "tags": "activity,heartbeat,medical,ecg,ekg,vitals,monitor,medicine", + "set_id": 1 + }, + { + "name": "push-pin-duotone", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-duotone", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin", + "set_id": 1 + }, + { + "name": "push-pin-simple-slash-duotone", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "push-pin-slash-duotone", + "content": "", + "style": "outline", + "tags": "favorites,favorited,pushpin,disabled", + "set_id": 1 + }, + { + "name": "puzzle-piece-duotone", + "content": "", + "style": "outline", + "tags": "board game,element,component,extension,plugin", + "set_id": 1 + }, + { + "name": "qr-code-duotone", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "question-duotone", + "content": "", + "style": "outline", + "tags": "information,help,support,questions", + "set_id": 1 + }, + { + "name": "question-mark-duotone", + "content": "", + "style": "outline", + "tags": "*new*,?,information,help,support,questions,punctuation,symbol", + "set_id": 1 + }, + { + "name": "queue-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,playlist", + "set_id": 1 + }, + { + "name": "quotes-duotone", + "content": "", + "style": "outline", + "tags": "quoations,quotation marks,double-quotes,writing,books", + "set_id": 1 + }, + { + "name": "rabbit-duotone", + "content": "", + "style": "outline", + "tags": "*new*,hare,fast,animal", + "set_id": 1 + }, + { + "name": "racquet-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sports,tennis,squash,pickleball", + "set_id": 1 + }, + { + "name": "radical-duotone", + "content": "", + "style": "outline", + "tags": "√,radix,radicand,square root,squareroot,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "radio-duotone", + "content": "", + "style": "outline", + "tags": "broadcast,fm,am,xm,transmitter,receiver", + "set_id": 1 + }, + { + "name": "radio-button-duotone", + "content": "", + "style": "outline", + "tags": "input,checkbox,checked", + "set_id": 1 + }, + { + "name": "radioactive-duotone", + "content": "", + "style": "outline", + "tags": "radiation,danger,warning,nuclear,atomic", + "set_id": 1 + }, + { + "name": "rainbow-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,arc,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "rainbow-cloud-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,rainstorm,cloudy,partly cloudy,partly sunny,pride,lgbtq+,leprechaun", + "set_id": 1 + }, + { + "name": "ranking-duotone", + "content": "", + "style": "outline", + "tags": "*new*,medal,rank,leaderboard,winner,sports", + "set_id": 1 + }, + { + "name": "read-cv-logo-duotone", + "content": "", + "style": "outline", + "tags": "resume,jobs,logos", + "set_id": 1 + }, + { + "name": "receipt-duotone", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense", + "set_id": 1 + }, + { + "name": "receipt-x-duotone", + "content": "", + "style": "outline", + "tags": "purchase,money,clipping,expense,cancel", + "set_id": 1 + }, + { + "name": "record-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,recording,recorder,voice memo", + "set_id": 1 + }, + { + "name": "rectangle-duotone", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "rectangle-dashed-duotone", + "content": "", + "style": "outline", + "tags": "*new*,4,shapes,polygons,box,missing", + "set_id": 1 + }, + { + "name": "recycle-duotone", + "content": "", + "style": "outline", + "tags": "recycling,trash,environmental,green", + "set_id": 1 + }, + { + "name": "reddit-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,subreddit,snoo,social media", + "set_id": 1 + }, + { + "name": "repeat-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "repeat-once-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,recycle", + "set_id": 1 + }, + { + "name": "replit-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,logos,ide,editor,coding", + "set_id": 1 + }, + { + "name": "resize-duotone", + "content": "", + "style": "outline", + "tags": "*new*,maximize,expand,grow", + "set_id": 1 + }, + { + "name": "rewind-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "rewind-circle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,skip,back,backwards,reverse", + "set_id": 1 + }, + { + "name": "road-horizon-duotone", + "content": "", + "style": "outline", + "tags": "trip,drive,road,travel,transportation,highway", + "set_id": 1 + }, + { + "name": "robot-duotone", + "content": "", + "style": "outline", + "tags": "automaton,artificial intelligence,ai", + "set_id": 1 + }, + { + "name": "rocket-duotone", + "content": "", + "style": "outline", + "tags": "spaceship,launch,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rocket-launch-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,spaceship,flying,blastoff,deployment,rocketship", + "set_id": 1 + }, + { + "name": "rows-duotone", + "content": "", + "style": "outline", + "tags": "2,shapes,polygons,box,stack,list,table,cards", + "set_id": 1 + }, + { + "name": "rows-plus-bottom-duotone", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rows-plus-top-duotone", + "content": "", + "style": "outline", + "tags": "*new*,2,shapes,polygons,box,stack,list,table,cards,prepend,insert", + "set_id": 1 + }, + { + "name": "rss-duotone", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rss-simple-duotone", + "content": "", + "style": "outline", + "tags": "radio,broadcast,web feed,news,aggregator", + "set_id": 1 + }, + { + "name": "rug-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,tapestry,carpet", + "set_id": 1 + }, + { + "name": "ruler-duotone", + "content": "", + "style": "outline", + "tags": "measure,scale,distance", + "set_id": 1 + }, + { + "name": "sailboat-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sailing,ship,vehicles,transportation,sports,places,locations", + "set_id": 1 + }, + { + "name": "scales-duotone", + "content": "", + "style": "outline", + "tags": "measure,balance,law,justice,government", + "set_id": 1 + }, + { + "name": "scan-duotone", + "content": "", + "style": "outline", + "tags": "upc,barcode,products,shopping,scanner", + "set_id": 1 + }, + { + "name": "scan-smiley-duotone", + "content": "", + "style": "outline", + "tags": "*new*,facial recognition,face unlock,scanner", + "set_id": 1 + }, + { + "name": "scissors-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,cut,snip,clipboard", + "set_id": 1 + }, + { + "name": "scooter-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,transportation,travel,transit", + "set_id": 1 + }, + { + "name": "screencast-duotone", + "content": "", + "style": "outline", + "tags": "apple,airplay,screencasting,screen share,television,tv", + "set_id": 1 + }, + { + "name": "screwdriver-duotone", + "content": "", + "style": "outline", + "tags": "*new*,tools,construction,flathead,drill", + "set_id": 1 + }, + { + "name": "scribble-duotone", + "content": "", + "style": "outline", + "tags": "*new*,doodles,squiggle,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scribble-loop-duotone", + "content": "", + "style": "outline", + "tags": "doodles,drawing,sign,signature", + "set_id": 1 + }, + { + "name": "scroll-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,parchment,paper,script,spell,fantasy", + "set_id": 1 + }, + { + "name": "seal-duotone", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-check-duotone", + "content": "", + "style": "outline", + "tags": "badge,verified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-percent-duotone", + "content": "", + "style": "outline", + "tags": "*new*,badge,discount,sale,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-question-duotone", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seal-warning-duotone", + "content": "", + "style": "outline", + "tags": "badge,unverified,verification,errors,shapes,polygons,circle-wavy", + "set_id": 1 + }, + { + "name": "seat-duotone", + "content": "", + "style": "outline", + "tags": "*new*,chair,car seat,airplane seat,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "seatbelt-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,safety", + "set_id": 1 + }, + { + "name": "security-camera-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cctv,surveillance,video,monitor,motion detector,safety", + "set_id": 1 + }, + { + "name": "selection-duotone", + "content": "", + "style": "outline", + "tags": "marquis,select,square dashed", + "set_id": 1 + }, + { + "name": "selection-all-duotone", + "content": "", + "style": "outline", + "tags": "marquis,select all", + "set_id": 1 + }, + { + "name": "selection-background-duotone", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-foreground-duotone", + "content": "", + "style": "outline", + "tags": "marquis", + "set_id": 1 + }, + { + "name": "selection-inverse-duotone", + "content": "", + "style": "outline", + "tags": "marquis,invert", + "set_id": 1 + }, + { + "name": "selection-plus-duotone", + "content": "", + "style": "outline", + "tags": "marquis,add", + "set_id": 1 + }, + { + "name": "selection-slash-duotone", + "content": "", + "style": "outline", + "tags": "marquis,unselect", + "set_id": 1 + }, + { + "name": "shapes-duotone", + "content": "", + "style": "outline", + "tags": "geometry,square,circle,triangle", + "set_id": 1 + }, + { + "name": "share-duotone", + "content": "", + "style": "outline", + "tags": "send to,export,arrows", + "set_id": 1 + }, + { + "name": "share-fat-duotone", + "content": "", + "style": "outline", + "tags": "export,send to", + "set_id": 1 + }, + { + "name": "share-network-duotone", + "content": "", + "style": "outline", + "tags": "send to,export", + "set_id": 1 + }, + { + "name": "shield-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,secured,defense,defended,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-check-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-checkered-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-chevron-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-plus-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-slash-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,disabled", + "set_id": 1 + }, + { + "name": "shield-star-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,defense,authentication,authenticated,guarded,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "shield-warning-duotone", + "content": "", + "style": "outline", + "tags": "badge,security,unsecured,defense,undefended,authentication,unauthenticated,unguarded,unlocked,unencrypted,encryption,errors", + "set_id": 1 + }, + { + "name": "shipping-container-duotone", + "content": "", + "style": "outline", + "tags": "*new*,shipping,transportation,places,locations", + "set_id": 1 + }, + { + "name": "shirt-folded-duotone", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "shooting-star-duotone", + "content": "", + "style": "outline", + "tags": "wish,comet,meteor", + "set_id": 1 + }, + { + "name": "shopping-bag-duotone", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-bag-open-duotone", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,cart,buying,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-duotone", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shopping-cart-simple-duotone", + "content": "", + "style": "outline", + "tags": "ecommerce,market,basket,buying,groceries,checkout,places,locations", + "set_id": 1 + }, + { + "name": "shovel-duotone", + "content": "", + "style": "outline", + "tags": "*new*,tools,digging,construction", + "set_id": 1 + }, + { + "name": "shower-duotone", + "content": "", + "style": "outline", + "tags": "bath,bathtub,bathroom,faucet", + "set_id": 1 + }, + { + "name": "shrimp-duotone", + "content": "", + "style": "outline", + "tags": "food,seafood,prawn", + "set_id": 1 + }, + { + "name": "shuffle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-angular-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "shuffle-simple-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,randomize,crossed", + "set_id": 1 + }, + { + "name": "sidebar-duotone", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sidebar-simple-duotone", + "content": "", + "style": "outline", + "tags": "left rail,wireframe,ui,interface", + "set_id": 1 + }, + { + "name": "sigma-duotone", + "content": "", + "style": "outline", + "tags": "σ,symbol,mathematics,sum", + "set_id": 1 + }, + { + "name": "sign-in-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,signin,login,log in,enter", + "set_id": 1 + }, + { + "name": "sign-out-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,signout,logout,log out,exit", + "set_id": 1 + }, + { + "name": "signature-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,sign,autograph,verify", + "set_id": 1 + }, + { + "name": "signpost-duotone", + "content": "", + "style": "outline", + "tags": "direction,traffic,road sign,transit,transportation", + "set_id": 1 + }, + { + "name": "sim-card-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,cellular,cellphone,mobile", + "set_id": 1 + }, + { + "name": "siren-duotone", + "content": "", + "style": "outline", + "tags": "alarm,police,lights,warning", + "set_id": 1 + }, + { + "name": "sketch-logo-duotone", + "content": "", + "style": "outline", + "tags": "drawing,art,illustration,ui,interface,prototype,prototyping,gemstone,diamond", + "set_id": 1 + }, + { + "name": "skip-back-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-back-circle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,back,backwards,reverse,previous", + "set_id": 1 + }, + { + "name": "skip-forward-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skip-forward-circle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,seek,scrub,scan,ahead,next", + "set_id": 1 + }, + { + "name": "skull-duotone", + "content": "", + "style": "outline", + "tags": "death,dead,kill", + "set_id": 1 + }, + { + "name": "skype-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,chat,video conference", + "set_id": 1 + }, + { + "name": "slack-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,messaging", + "set_id": 1 + }, + { + "name": "sliders-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "sliders-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,faders,filters,equalizer,volume,settings,preferences", + "set_id": 1 + }, + { + "name": "slideshow-duotone", + "content": "", + "style": "outline", + "tags": "pictures,images,photography,gallery,carousel", + "set_id": 1 + }, + { + "name": "smiley-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-angry-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,mad,frown", + "set_id": 1 + }, + { + "name": "smiley-blank-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,no face", + "set_id": 1 + }, + { + "name": "smiley-meh-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,unimpressed,neutral", + "set_id": 1 + }, + { + "name": "smiley-melting-duotone", + "content": "", + "style": "outline", + "tags": "*new*,face,emoji,embarrassment,sarcasm,shame,hot,heat", + "set_id": 1 + }, + { + "name": "smiley-nervous-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,face,emoji,anxious,uncomfortable,uneasy,queasy,sick,ill", + "set_id": 1 + }, + { + "name": "smiley-sad-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,unhappy,frowning", + "set_id": 1 + }, + { + "name": "smiley-sticker-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,happy,grinning,smiling", + "set_id": 1 + }, + { + "name": "smiley-wink-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,winking,flirting,cute", + "set_id": 1 + }, + { + "name": "smiley-x-eyes-duotone", + "content": "", + "style": "outline", + "tags": "face,emoji,dead,killed,unconscious", + "set_id": 1 + }, + { + "name": "snapchat-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,messaging,social media", + "set_id": 1 + }, + { + "name": "sneaker-duotone", + "content": "", + "style": "outline", + "tags": "clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "sneaker-move-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,clothes,clothing,shoes,trainers,sports", + "set_id": 1 + }, + { + "name": "snowflake-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,snowy,snowing,snowstorm", + "set_id": 1 + }, + { + "name": "soccer-ball-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,sports,football,mls", + "set_id": 1 + }, + { + "name": "sock-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clothes,clothing", + "set_id": 1 + }, + { + "name": "solar-panel-duotone", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "solar-roof-duotone", + "content": "", + "style": "outline", + "tags": "*new*,renewable,energy,power,electricity", + "set_id": 1 + }, + { + "name": "sort-ascending-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,increasing,a to z,arrows,list", + "set_id": 1 + }, + { + "name": "sort-descending-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,sorted,sorting,decreasing,z to a,arrows,list", + "set_id": 1 + }, + { + "name": "soundcloud-logo-duotone", + "content": "", + "style": "outline", + "tags": "music,social media,logos", + "set_id": 1 + }, + { + "name": "spade-duotone", + "content": "", + "style": "outline", + "tags": "spades,suits,cards,gambling,casino,gaming", + "set_id": 1 + }, + { + "name": "sparkle-duotone", + "content": "", + "style": "outline", + "tags": "star,rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "speaker-hifi-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,sound,stereo", + "set_id": 1 + }, + { + "name": "speaker-high-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-low-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-none-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-high-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-low-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-none-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound", + "set_id": 1 + }, + { + "name": "speaker-simple-slash-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-simple-x-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speaker-slash-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled", + "set_id": 1 + }, + { + "name": "speaker-x-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,music,audio,muted,volume,sound,disabled,errors", + "set_id": 1 + }, + { + "name": "speedometer-duotone", + "content": "", + "style": "outline", + "tags": "*new*,gauge,dashboard,meter,speed,odometer,performance", + "set_id": 1 + }, + { + "name": "sphere-duotone", + "content": "", + "style": "outline", + "tags": "*new*,circle,ball,3d,mesh,cad,model", + "set_id": 1 + }, + { + "name": "spinner-duotone", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-ball-duotone", + "content": "", + "style": "outline", + "tags": "*new*,loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spinner-gap-duotone", + "content": "", + "style": "outline", + "tags": "loading,loader,waiting,progress", + "set_id": 1 + }, + { + "name": "spiral-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,spin,rotate,dizzy", + "set_id": 1 + }, + { + "name": "split-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "resize,columns", + "set_id": 1 + }, + { + "name": "split-vertical-duotone", + "content": "", + "style": "outline", + "tags": "resize,rows", + "set_id": 1 + }, + { + "name": "spotify-logo-duotone", + "content": "", + "style": "outline", + "tags": "music,player,streaming", + "set_id": 1 + }, + { + "name": "spray-bottle-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cleaner,cleaning", + "set_id": 1 + }, + { + "name": "square-duotone", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box", + "set_id": 1 + }, + { + "name": "square-half-duotone", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-half-bottom-duotone", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,box,columns,sidebar,split vertical", + "set_id": 1 + }, + { + "name": "square-logo-duotone", + "content": "", + "style": "outline", + "tags": "squareup,payment", + "set_id": 1 + }, + { + "name": "square-split-horizontal-duotone", + "content": "", + "style": "outline", + "tags": "shapes,polygons,columns", + "set_id": 1 + }, + { + "name": "square-split-vertical-duotone", + "content": "", + "style": "outline", + "tags": "shapes,polygons,rows", + "set_id": 1 + }, + { + "name": "squares-four-duotone", + "content": "", + "style": "outline", + "tags": "4,shapes,polygons,apps,applications,grid,table,microsoft,logos", + "set_id": 1 + }, + { + "name": "stack-duotone", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stack-minus-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,remove,delete", + "set_id": 1 + }, + { + "name": "stack-overflow-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,code", + "set_id": 1 + }, + { + "name": "stack-plus-duotone", + "content": "", + "style": "outline", + "tags": "*new*,cards,layers,add", + "set_id": 1 + }, + { + "name": "stack-simple-duotone", + "content": "", + "style": "outline", + "tags": "cards,layers", + "set_id": 1 + }, + { + "name": "stairs-duotone", + "content": "", + "style": "outline", + "tags": "staircase,steps,escalator,exit,signs", + "set_id": 1 + }, + { + "name": "stamp-duotone", + "content": "", + "style": "outline", + "tags": "clone,seal,official", + "set_id": 1 + }, + { + "name": "standard-definition-duotone", + "content": "", + "style": "outline", + "tags": "*new*,sd,resolution,video", + "set_id": 1 + }, + { + "name": "star-duotone", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-and-crescent-duotone", + "content": "", + "style": "outline", + "tags": "islam,muslim,moon,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "star-four-duotone", + "content": "", + "style": "outline", + "tags": "rate,ratings,favorites,favorited", + "set_id": 1 + }, + { + "name": "star-half-duotone", + "content": "", + "style": "outline", + "tags": "rate,ratings", + "set_id": 1 + }, + { + "name": "star-of-david-duotone", + "content": "", + "style": "outline", + "tags": "judaism,jewish,hexagram,religion,worship,symbol", + "set_id": 1 + }, + { + "name": "steam-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,gaming,games", + "set_id": 1 + }, + { + "name": "steering-wheel-duotone", + "content": "", + "style": "outline", + "tags": "cars,vehicles,automobiles,driving", + "set_id": 1 + }, + { + "name": "steps-duotone", + "content": "", + "style": "outline", + "tags": "stairs,staircase,exit,signs", + "set_id": 1 + }, + { + "name": "stethoscope-duotone", + "content": "", + "style": "outline", + "tags": "hospital,medical,medicine,injury,safety,emergency,doctor,heart", + "set_id": 1 + }, + { + "name": "sticker-duotone", + "content": "", + "style": "outline", + "tags": "stickers,sticker pack,labels", + "set_id": 1 + }, + { + "name": "stool-duotone", + "content": "", + "style": "outline", + "tags": "chair,seat,furniture", + "set_id": 1 + }, + { + "name": "stop-duotone", + "content": "", + "style": "outline", + "tags": "music,audio", + "set_id": 1 + }, + { + "name": "stop-circle-duotone", + "content": "", + "style": "outline", + "tags": "music,audio,round", + "set_id": 1 + }, + { + "name": "storefront-duotone", + "content": "", + "style": "outline", + "tags": "shops,shopping,markets,stores,buildings,places,locations", + "set_id": 1 + }, + { + "name": "strategy-duotone", + "content": "", + "style": "outline", + "tags": "sports,strategem,plan,tic-tac-toe", + "set_id": 1 + }, + { + "name": "stripe-logo-duotone", + "content": "", + "style": "outline", + "tags": "payment", + "set_id": 1 + }, + { + "name": "student-duotone", + "content": "", + "style": "outline", + "tags": "pupil,graduate,classroom,teacher,education,school,college,university", + "set_id": 1 + }, + { + "name": "subset-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,⊆,subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subset-proper-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,⊂,proper subset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "subtitles-duotone", + "content": "", + "style": "outline", + "tags": "subtitles,television,tv,transcribed,transcription,accessibility,a11y", + "set_id": 1 + }, + { + "name": "subtitles-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,subtitles,television,tv,transcribed,transcription,accessibility,a11y,disabled", + "set_id": 1 + }, + { + "name": "subtract-duotone", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subtract-square-duotone", + "content": "", + "style": "outline", + "tags": "boolean,intersection,combine,split,merge,union", + "set_id": 1 + }, + { + "name": "subway-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,underground,train,tunnel,metro,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "suitcase-duotone", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "suitcase-rolling-duotone", + "content": "", + "style": "outline", + "tags": "suitcase,luggage,travel,transportation", + "set_id": 1 + }, + { + "name": "suitcase-simple-duotone", + "content": "", + "style": "outline", + "tags": "briefcase,valise,baggage,folders,portfolio", + "set_id": 1 + }, + { + "name": "sun-duotone", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,lighten,brighten", + "set_id": 1 + }, + { + "name": "sun-dim-duotone", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,light mode,brightness,darken", + "set_id": 1 + }, + { + "name": "sun-horizon-duotone", + "content": "", + "style": "outline", + "tags": "day,daytime,daylight,clear,sunny,sunshine,sunrise,sunset", + "set_id": 1 + }, + { + "name": "sunglasses-duotone", + "content": "", + "style": "outline", + "tags": "vision,sun,spectacles", + "set_id": 1 + }, + { + "name": "superset-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,⊇,superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "superset-proper-of-duotone", + "content": "", + "style": "outline", + "tags": "*new*,⊃,proper superset of,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "swap-duotone", + "content": "", + "style": "outline", + "tags": "layers,replace,exchange,reverse", + "set_id": 1 + }, + { + "name": "swatches-duotone", + "content": "", + "style": "outline", + "tags": "colors,color picker,samples,pantone", + "set_id": 1 + }, + { + "name": "swimming-pool-duotone", + "content": "", + "style": "outline", + "tags": "swim,sports,exercise,olympics,aquatics", + "set_id": 1 + }, + { + "name": "sword-duotone", + "content": "", + "style": "outline", + "tags": "weapon,knife,dagger,gladius,video games,rpg,gaming,war", + "set_id": 1 + }, + { + "name": "synagogue-duotone", + "content": "", + "style": "outline", + "tags": "jewish,judaism,temple,religion,worship", + "set_id": 1 + }, + { + "name": "syringe-duotone", + "content": "", + "style": "outline", + "tags": "needle,hypodermic,vaccine,medicine,doctor,shot,hospital", + "set_id": 1 + }, + { + "name": "t-shirt-duotone", + "content": "", + "style": "outline", + "tags": "clothes,clothing", + "set_id": 1 + }, + { + "name": "table-duotone", + "content": "", + "style": "outline", + "tags": "tables,tabular,speadsheets,excel,grid,form", + "set_id": 1 + }, + { + "name": "tabs-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,browser,window,folders,files", + "set_id": 1 + }, + { + "name": "tag-duotone", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "tag-chevron-duotone", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale", + "set_id": 1 + }, + { + "name": "tag-simple-duotone", + "content": "", + "style": "outline", + "tags": "tags,hashtag,labels,sale,sell,price,discount", + "set_id": 1 + }, + { + "name": "target-duotone", + "content": "", + "style": "outline", + "tags": "bullseye,radar,archery,accuracy,precision", + "set_id": 1 + }, + { + "name": "taxi-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,vehicles,cars,automobiles,livery,limousine,uber", + "set_id": 1 + }, + { + "name": "tea-bag-duotone", + "content": "", + "style": "outline", + "tags": "*new*,drinks,beverages,sachet,caffeine,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "telegram-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "television-duotone", + "content": "", + "style": "outline", + "tags": "screen,tv,displays", + "set_id": 1 + }, + { + "name": "television-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,screen,tv,displays", + "set_id": 1 + }, + { + "name": "tennis-ball-duotone", + "content": "", + "style": "outline", + "tags": "sports,mlb", + "set_id": 1 + }, + { + "name": "tent-duotone", + "content": "", + "style": "outline", + "tags": "camping,outdoors,tarp", + "set_id": 1 + }, + { + "name": "terminal-duotone", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "terminal-window-duotone", + "content": "", + "style": "outline", + "tags": "command line,cli,bash,shell,caret,console", + "set_id": 1 + }, + { + "name": "test-tube-duotone", + "content": "", + "style": "outline", + "tags": "science,chemistry,experiment,vial", + "set_id": 1 + }, + { + "name": "text-a-underline-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "text-aa-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-align-center-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,centered", + "set_id": 1 + }, + { + "name": "text-align-justify-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,justified", + "set_id": 1 + }, + { + "name": "text-align-left-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush left", + "set_id": 1 + }, + { + "name": "text-align-right-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,flush right", + "set_id": 1 + }, + { + "name": "text-b-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,bold,boldface,emphasis", + "set_id": 1 + }, + { + "name": "text-columns-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,typography,print,font,alignment,article", + "set_id": 1 + }, + { + "name": "text-h-duotone", + "content": "", + "style": "outline", + "tags": "heading,typography,print", + "set_id": 1 + }, + { + "name": "text-h-five-duotone", + "content": "", + "style": "outline", + "tags": "heading,h5,typography,print", + "set_id": 1 + }, + { + "name": "text-h-four-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,heading,h4,typography,print", + "set_id": 1 + }, + { + "name": "text-h-one-duotone", + "content": "", + "style": "outline", + "tags": "heading,h1,typography,print", + "set_id": 1 + }, + { + "name": "text-h-six-duotone", + "content": "", + "style": "outline", + "tags": "heading,h6,typography,print", + "set_id": 1 + }, + { + "name": "text-h-three-duotone", + "content": "", + "style": "outline", + "tags": "heading,h3,typography,print", + "set_id": 1 + }, + { + "name": "text-h-two-duotone", + "content": "", + "style": "outline", + "tags": "heading,h2,typography,print", + "set_id": 1 + }, + { + "name": "text-indent-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,menu", + "set_id": 1 + }, + { + "name": "text-italic-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,slant,oblique,stress,emphasis,calligraphy", + "set_id": 1 + }, + { + "name": "text-outdent-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,alignment,tab,unindent,dedent,menu", + "set_id": 1 + }, + { + "name": "text-strikethrough-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,struck,remove,delete,change", + "set_id": 1 + }, + { + "name": "text-subscript-duotone", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,power,exponent,calculator", + "set_id": 1 + }, + { + "name": "text-superscript-duotone", + "content": "", + "style": "outline", + "tags": "*new*,typography,font,formatting,mathematics,calculator", + "set_id": 1 + }, + { + "name": "text-t-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font", + "set_id": 1 + }, + { + "name": "text-t-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,typography,typeface,print,font,formatting,clear", + "set_id": 1 + }, + { + "name": "text-underline-duotone", + "content": "", + "style": "outline", + "tags": "typography,typeface,print,font,underscore,emphasis", + "set_id": 1 + }, + { + "name": "textbox-duotone", + "content": "", + "style": "outline", + "tags": "input,cursor,field", + "set_id": 1 + }, + { + "name": "thermometer-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "thermometer-cold-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit", + "set_id": 1 + }, + { + "name": "thermometer-hot-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,warm", + "set_id": 1 + }, + { + "name": "thermometer-simple-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,temperature,degrees,°,celcius,centigrade,kelvin,fahrenheit,hot,warm,cold", + "set_id": 1 + }, + { + "name": "threads-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,meta,instagram,social media", + "set_id": 1 + }, + { + "name": "three-d-duotone", + "content": "", + "style": "outline", + "tags": "*new*,3d,cad,model", + "set_id": 1 + }, + { + "name": "thumbs-down-duotone", + "content": "", + "style": "outline", + "tags": "dislike,hate,emoji,no", + "set_id": 1 + }, + { + "name": "thumbs-up-duotone", + "content": "", + "style": "outline", + "tags": "like,love,favorited,favorites,emoji,yes", + "set_id": 1 + }, + { + "name": "ticket-duotone", + "content": "", + "style": "outline", + "tags": "ticketstub,movie ticket,entry,admissions,events", + "set_id": 1 + }, + { + "name": "tidal-logo-duotone", + "content": "", + "style": "outline", + "tags": "music,logos", + "set_id": 1 + }, + { + "name": "tiktok-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,social media", + "set_id": 1 + }, + { + "name": "tilde-duotone", + "content": "", + "style": "outline", + "tags": "*new*,~,∼,proportional,comparison,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "timer-duotone", + "content": "", + "style": "outline", + "tags": "clock,alarm,schedule,events,stopwatch,sports", + "set_id": 1 + }, + { + "name": "tip-jar-duotone", + "content": "", + "style": "outline", + "tags": "*new*,give,deposit,donation,savings,money", + "set_id": 1 + }, + { + "name": "tipi-duotone", + "content": "", + "style": "outline", + "tags": "teepee,lodge,tent,outdoors,camping,tarp", + "set_id": 1 + }, + { + "name": "tire-duotone", + "content": "", + "style": "outline", + "tags": "*new*,wheel,vehicles,transportation", + "set_id": 1 + }, + { + "name": "toggle-left-duotone", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toggle-right-duotone", + "content": "", + "style": "outline", + "tags": "switch,controls,settings,preferences", + "set_id": 1 + }, + { + "name": "toilet-duotone", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toilet-paper-duotone", + "content": "", + "style": "outline", + "tags": "bathroom,restroom,lavatory,water closet", + "set_id": 1 + }, + { + "name": "toolbox-duotone", + "content": "", + "style": "outline", + "tags": "tools,carpentry,construction", + "set_id": 1 + }, + { + "name": "tooth-duotone", + "content": "", + "style": "outline", + "tags": "teeth,dentistry,medical,medicine,doctor,cavity", + "set_id": 1 + }, + { + "name": "tornado-duotone", + "content": "", + "style": "outline", + "tags": "*new*,meteorology,twister,storm,wind,disaster", + "set_id": 1 + }, + { + "name": "tote-duotone", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "tote-simple-duotone", + "content": "", + "style": "outline", + "tags": "suitcases,valises,baggage,tote-bag,portfolios", + "set_id": 1 + }, + { + "name": "towel-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clothing,linen,hotel,beach,pool,swimming,shower,bath", + "set_id": 1 + }, + { + "name": "tractor-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,farmer,field,farming,agriculture", + "set_id": 1 + }, + { + "name": "trademark-duotone", + "content": "", + "style": "outline", + "tags": "tm,®,™,intellectual property", + "set_id": 1 + }, + { + "name": "trademark-registered-duotone", + "content": "", + "style": "outline", + "tags": "®,™,intellectual property", + "set_id": 1 + }, + { + "name": "traffic-cone-duotone", + "content": "", + "style": "outline", + "tags": "pylon,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-sign-duotone", + "content": "", + "style": "outline", + "tags": "road signs,transit,transportation", + "set_id": 1 + }, + { + "name": "traffic-signal-duotone", + "content": "", + "style": "outline", + "tags": "stop light,safety,transit,transportation", + "set_id": 1 + }, + { + "name": "train-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-regional-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,freight,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "train-simple-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,subway,light rail,public transit,transportation,commuter,traveling,places,locations", + "set_id": 1 + }, + { + "name": "tram-duotone", + "content": "", + "style": "outline", + "tags": "vehicles,subway,railroad,public transit,transportation,commuter,light rail,shipping,traveling,places,locations", + "set_id": 1 + }, + { + "name": "translate-duotone", + "content": "", + "style": "outline", + "tags": "translation,languages,internationalization,i18n,speech", + "set_id": 1 + }, + { + "name": "trash-duotone", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "trash-simple-duotone", + "content": "", + "style": "outline", + "tags": "garbage,remove,delete,destroy,recycle,recycling", + "set_id": 1 + }, + { + "name": "tray-duotone", + "content": "", + "style": "outline", + "tags": "inbox,mailbox,bin", + "set_id": 1 + }, + { + "name": "tray-arrow-down-duotone", + "content": "", + "style": "outline", + "tags": "inbox,saved,saving,archived,archiving,archival,downloaded,downloading", + "set_id": 1 + }, + { + "name": "tray-arrow-up-duotone", + "content": "", + "style": "outline", + "tags": "*new*,outbox,archival,unarchive,uploaded,uploading", + "set_id": 1 + }, + { + "name": "treasure-chest-duotone", + "content": "", + "style": "outline", + "tags": "*new*,loot,lootbox,inventory,rewards,gaming,pirate", + "set_id": 1 + }, + { + "name": "tree-duotone", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-evergreen-duotone", + "content": "", + "style": "outline", + "tags": "plants,branches,leaves,pine,conifer,green,environmental", + "set_id": 1 + }, + { + "name": "tree-palm-duotone", + "content": "", + "style": "outline", + "tags": "tropical,beach,plants,branches,leaves,green,environmental", + "set_id": 1 + }, + { + "name": "tree-structure-duotone", + "content": "", + "style": "outline", + "tags": "data structures,family tree,genealogy,hierarchy,taxonomy,charts,flowchart", + "set_id": 1 + }, + { + "name": "tree-view-duotone", + "content": "", + "style": "outline", + "tags": "*new*,hierarchy", + "set_id": 1 + }, + { + "name": "trend-down-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,decrease,arrows", + "set_id": 1 + }, + { + "name": "trend-up-duotone", + "content": "", + "style": "outline", + "tags": "graphs,graphing,charts,statistics,analyze,analysis,increase,arrows", + "set_id": 1 + }, + { + "name": "triangle-duotone", + "content": "", + "style": "outline", + "tags": "3,shapes,polygons", + "set_id": 1 + }, + { + "name": "triangle-dashed-duotone", + "content": "", + "style": "outline", + "tags": "*new*,3,shapes,polygons,missing", + "set_id": 1 + }, + { + "name": "trolley-duotone", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trolley-suitcase-duotone", + "content": "", + "style": "outline", + "tags": "*new*,airport,briefcase,valise,baggage", + "set_id": 1 + }, + { + "name": "trophy-duotone", + "content": "", + "style": "outline", + "tags": "ribbons,medals,winning,victory,awards,prize", + "set_id": 1 + }, + { + "name": "truck-duotone", + "content": "", + "style": "outline", + "tags": "trucks,cars,vehicles,automobile,shipping,delivery", + "set_id": 1 + }, + { + "name": "truck-trailer-duotone", + "content": "", + "style": "outline", + "tags": "*new*,vehicles,automobile,shipping,tractor,semi", + "set_id": 1 + }, + { + "name": "tumblr-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,social media,logos", + "set_id": 1 + }, + { + "name": "twitch-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,streaming,livestream,gaming,video games,social media", + "set_id": 1 + }, + { + "name": "twitter-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,social media,tweets,birds", + "set_id": 1 + }, + { + "name": "umbrella-duotone", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "umbrella-simple-duotone", + "content": "", + "style": "outline", + "tags": "raining,rainy,insurance", + "set_id": 1 + }, + { + "name": "union-duotone", + "content": "", + "style": "outline", + "tags": "*new*,∪,union,set,member,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "unite-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,round,join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "unite-square-duotone", + "content": "", + "style": "outline", + "tags": "join,union,merge,combine,intersecting,intersection", + "set_id": 1 + }, + { + "name": "upload-duotone", + "content": "", + "style": "outline", + "tags": "saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "upload-simple-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,saved,saving,archived,archiving,archival,uploaded,uploading,hard drive,disk", + "set_id": 1 + }, + { + "name": "usb-duotone", + "content": "", + "style": "outline", + "tags": "serial,port,plug,peripheral,device", + "set_id": 1 + }, + { + "name": "user-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-check-duotone", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-circle-check-duotone", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,verified", + "set_id": 1 + }, + { + "name": "user-circle-dashed-duotone", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,account,contact,login,pending,missing,removed", + "set_id": 1 + }, + { + "name": "user-circle-gear-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-circle-minus-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-circle-plus-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-focus-duotone", + "content": "", + "style": "outline", + "tags": "identification,biometrics,facial recognition,profile,person,account,autofocus", + "set_id": 1 + }, + { + "name": "user-gear-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,settings,preferences", + "set_id": 1 + }, + { + "name": "user-list-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profiles,accounts,members,address book", + "set_id": 1 + }, + { + "name": "user-minus-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,delete,remove,-", + "set_id": 1 + }, + { + "name": "user-plus-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,add,create,+", + "set_id": 1 + }, + { + "name": "user-rectangle-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-sound-duotone", + "content": "", + "style": "outline", + "tags": "*new*,person,users,profile,speech,speaking,voice", + "set_id": 1 + }, + { + "name": "user-square-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,contact,login", + "set_id": 1 + }, + { + "name": "user-switch-duotone", + "content": "", + "style": "outline", + "tags": "person,users,profile,account,login,logout,signin,signout,settings,preferences", + "set_id": 1 + }, + { + "name": "users-duotone", + "content": "", + "style": "outline", + "tags": "user,group,team,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-four-duotone", + "content": "", + "style": "outline", + "tags": "user,group,team,department,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "users-three-duotone", + "content": "", + "style": "outline", + "tags": "user,group,team,community,people,profiles,accounts,contacts", + "set_id": 1 + }, + { + "name": "van-duotone", + "content": "", + "style": "outline", + "tags": "westfalia,microbus,vanagon,cars,vehicles,automobile,transit,transportation,traveling", + "set_id": 1 + }, + { + "name": "vault-duotone", + "content": "", + "style": "outline", + "tags": "safe,bank,security,secured,authentication,authenticated,locked,encrypted,encryption", + "set_id": 1 + }, + { + "name": "vector-three-duotone", + "content": "", + "style": "outline", + "tags": "*new*,3d,xyz,cartesian,coordinates,plane,volume,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vector-two-duotone", + "content": "", + "style": "outline", + "tags": "*new*,2d,xy,cartesian,coordinates,plane,dimensions,mathematics", + "set_id": 1 + }, + { + "name": "vibrate-duotone", + "content": "", + "style": "outline", + "tags": "audio,volume,viration,ringer,calls,silent,silenced", + "set_id": 1 + }, + { + "name": "video-duotone", + "content": "", + "style": "outline", + "tags": "training,course,education,tutorial", + "set_id": 1 + }, + { + "name": "video-camera-duotone", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording", + "set_id": 1 + }, + { + "name": "video-camera-slash-duotone", + "content": "", + "style": "outline", + "tags": "videography,films,movies,recording,disabled", + "set_id": 1 + }, + { + "name": "video-conference-duotone", + "content": "", + "style": "outline", + "tags": "*new*,video call,zoom,skype,discord,facetime,meeting", + "set_id": 1 + }, + { + "name": "vignette-duotone", + "content": "", + "style": "outline", + "tags": "photography,darkroom,movie,analog", + "set_id": 1 + }, + { + "name": "vinyl-record-duotone", + "content": "", + "style": "outline", + "tags": "recording,audio,album,music,ep,lp", + "set_id": 1 + }, + { + "name": "virtual-reality-duotone", + "content": "", + "style": "outline", + "tags": "virtual reality,vr,headset,metaverse", + "set_id": 1 + }, + { + "name": "virus-duotone", + "content": "", + "style": "outline", + "tags": "germs,disease,illness", + "set_id": 1 + }, + { + "name": "visor-duotone", + "content": "", + "style": "outline", + "tags": "*new*,goggles,vision", + "set_id": 1 + }, + { + "name": "voicemail-duotone", + "content": "", + "style": "outline", + "tags": "phonecalls,missed,recording,telephone,landline", + "set_id": 1 + }, + { + "name": "volleyball-duotone", + "content": "", + "style": "outline", + "tags": "sports", + "set_id": 1 + }, + { + "name": "wall-duotone", + "content": "", + "style": "outline", + "tags": "firewall,security,secured,blocks,bricks", + "set_id": 1 + }, + { + "name": "wallet-duotone", + "content": "", + "style": "outline", + "tags": "money,payment,paying,purchase", + "set_id": 1 + }, + { + "name": "warehouse-duotone", + "content": "", + "style": "outline", + "tags": "storage,industry,manufacture,buildings,places,locations", + "set_id": 1 + }, + { + "name": "warning-duotone", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-circle-duotone", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,round", + "set_id": 1 + }, + { + "name": "warning-diamond-duotone", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors", + "set_id": 1 + }, + { + "name": "warning-octagon-duotone", + "content": "", + "style": "outline", + "tags": "alert,danger,dangerous,caution,errors,8,eight", + "set_id": 1 + }, + { + "name": "washing-machine-duotone", + "content": "", + "style": "outline", + "tags": "*new*,clothing,laundry,cleaning", + "set_id": 1 + }, + { + "name": "watch-duotone", + "content": "", + "style": "outline", + "tags": "times,timer,alarm,schedule,events,clock,wristwatch,wearable", + "set_id": 1 + }, + { + "name": "wave-sawtooth-duotone", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-sine-duotone", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-square-duotone", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "wave-triangle-duotone", + "content": "", + "style": "outline", + "tags": "synth,synthesizer,sound,audio,music,waveform", + "set_id": 1 + }, + { + "name": "waveform-duotone", + "content": "", + "style": "outline", + "tags": "*updated*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waveform-slash-duotone", + "content": "", + "style": "outline", + "tags": "*new*,audio,sound,spectrum,spectrograph,music", + "set_id": 1 + }, + { + "name": "waves-duotone", + "content": "", + "style": "outline", + "tags": "ocean,tides,surf", + "set_id": 1 + }, + { + "name": "webcam-duotone", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webcam-slash-duotone", + "content": "", + "style": "outline", + "tags": "camera,video conference", + "set_id": 1 + }, + { + "name": "webhooks-logo-duotone", + "content": "", + "style": "outline", + "tags": "api", + "set_id": 1 + }, + { + "name": "wechat-logo-duotone", + "content": "", + "style": "outline", + "tags": "weixin,logos", + "set_id": 1 + }, + { + "name": "whatsapp-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,messages,messaging", + "set_id": 1 + }, + { + "name": "wheelchair-duotone", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wheelchair-motion-duotone", + "content": "", + "style": "outline", + "tags": "handicapped,medical,disabled,differently abled,accessible,accessibility,a11y", + "set_id": 1 + }, + { + "name": "wifi-high-duotone", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-low-duotone", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-medium-duotone", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-none-duotone", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity", + "set_id": 1 + }, + { + "name": "wifi-slash-duotone", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disabled,disconnected", + "set_id": 1 + }, + { + "name": "wifi-x-duotone", + "content": "", + "style": "outline", + "tags": "wireless,internet,network,connection,connectivity,disconnected,errors", + "set_id": 1 + }, + { + "name": "wind-duotone", + "content": "", + "style": "outline", + "tags": "meteorology,windy,stormy,blustery,gusty,air", + "set_id": 1 + }, + { + "name": "windmill-duotone", + "content": "", + "style": "outline", + "tags": "*new*,turbine,energy,renewable,sustainability,countryside,landscape,green,power,buildings", + "set_id": 1 + }, + { + "name": "windows-logo-duotone", + "content": "", + "style": "outline", + "tags": "microsoft,computers", + "set_id": 1 + }, + { + "name": "wine-duotone", + "content": "", + "style": "outline", + "tags": "drinks,beverages,vineyard,places,locations,bars,restaurants,food,dining", + "set_id": 1 + }, + { + "name": "wrench-duotone", + "content": "", + "style": "outline", + "tags": "settings,setup,preferences,tools,machinery,mechanical,repairs", + "set_id": 1 + }, + { + "name": "x-duotone", + "content": "", + "style": "outline", + "tags": "×,closed,cancelled,dismissed,times,multiply,mulitplication,product,mathematics,arithmetic,calculator", + "set_id": 1 + }, + { + "name": "x-circle-duotone", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed,round", + "set_id": 1 + }, + { + "name": "x-logo-duotone", + "content": "", + "style": "outline", + "tags": "*new*,twitter,logos,social media,tweets", + "set_id": 1 + }, + { + "name": "x-square-duotone", + "content": "", + "style": "outline", + "tags": "closed,cancelled,dismissed", + "set_id": 1 + }, + { + "name": "yarn-duotone", + "content": "", + "style": "outline", + "tags": "*new*,knitting,sewing", + "set_id": 1 + }, + { + "name": "yin-yang-duotone", + "content": "", + "style": "outline", + "tags": "symbol,good,evil,black,white", + "set_id": 1 + }, + { + "name": "youtube-logo-duotone", + "content": "", + "style": "outline", + "tags": "logos,google,videos,movies,social media", + "set_id": 1 + } + ] + } \ No newline at end of file diff --git a/backend/constants/__init__.py b/backend/constants/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/constants/documents.py b/backend/constants/documents.py new file mode 100644 index 0000000..9d5fef1 --- /dev/null +++ b/backend/constants/documents.py @@ -0,0 +1,20 @@ +PDF_MIME_TYPES = ["application/pdf"] +TEXT_MIME_TYPES = ["text/plain"] +POWERPOINT_TYPES = [ + "application/vnd.openxmlformats-officedocument.presentationml.presentation" +] +WORD_TYPES = [ + "application/msword", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", +] +SPREADSHEET_TYPES = ["text/csv", "application/csv"] + + +PNG_MIME_TYPES = ["image/png"] +JPEG_MIME_TYPES = ["image/jpeg"] +WEBP_MIME_TYPES = ["image/webp"] + + +UPLOAD_ACCEPTED_FILE_TYPES = ( + PDF_MIME_TYPES + TEXT_MIME_TYPES + POWERPOINT_TYPES + WORD_TYPES +) diff --git a/backend/constants/llm.py b/backend/constants/llm.py new file mode 100644 index 0000000..7d374f3 --- /dev/null +++ b/backend/constants/llm.py @@ -0,0 +1,6 @@ +OPENAI_URL = "https://api.openai.com/v1" + +# Default models +DEFAULT_OPENAI_MODEL = "gpt-4.1" +DEFAULT_GOOGLE_MODEL = "models/gemini-2.5-flash" +DEFAULT_ANTHROPIC_MODEL = "claude-sonnet-4-20250514" diff --git a/backend/constants/presentation.py b/backend/constants/presentation.py new file mode 100644 index 0000000..22d6b01 --- /dev/null +++ b/backend/constants/presentation.py @@ -0,0 +1 @@ +DEFAULT_TEMPLATES = ["general", "modern", "standard", "swift"] diff --git a/backend/constants/supported_ollama_models.py b/backend/constants/supported_ollama_models.py new file mode 100644 index 0000000..a02a7a1 --- /dev/null +++ b/backend/constants/supported_ollama_models.py @@ -0,0 +1,180 @@ +from models.ollama_model_metadata import OllamaModelMetadata + + +SUPPORTED_OLLAMA_MODELS = { + "llama3:8b": OllamaModelMetadata( + label="Llama 3:8b", + value="llama3:8b", + size="4.7GB", + ), + "llama3:70b": OllamaModelMetadata( + label="Llama 3:70b", + value="llama3:70b", + size="40GB", + ), + "llama3.1:8b": OllamaModelMetadata( + label="Llama 3.1:8b", + value="llama3.1:8b", + size="4.9GB", + ), + "llama3.1:70b": OllamaModelMetadata( + label="Llama 3.1:70b", + value="llama3.1:70b", + size="43GB", + ), + "llama3.1:405b": OllamaModelMetadata( + label="Llama 3.1:405b", + value="llama3.1:405b", + size="243GB", + ), + "llama3.2:1b": OllamaModelMetadata( + label="Llama 3.2:1b", + value="llama3.2:1b", + size="1.3GB", + ), + "llama3.2:3b": OllamaModelMetadata( + label="Llama 3.2:3b", + value="llama3.2:3b", + size="2GB", + ), + "llama3.3:70b": OllamaModelMetadata( + label="Llama 3.3:70b", + value="llama3.3:70b", + size="43GB", + ), + "llama4:16x17b": OllamaModelMetadata( + label="Llama 4:16x17b", + value="llama4:16x17b", + size="67GB", + ), + "llama4:128x17b": OllamaModelMetadata( + label="Llama 4:128x17b", + value="llama4:128x17b", + size="245GB", + ), +} + +SUPPORTED_GEMMA_MODELS = { + "gemma3:1b": OllamaModelMetadata( + label="Gemma 3:1b", + value="gemma3:1b", + size="815MB", + ), + "gemma3:4b": OllamaModelMetadata( + label="Gemma 3:4b", + value="gemma3:4b", + size="3.3GB", + ), + "gemma3:12b": OllamaModelMetadata( + label="Gemma 3:12b", + value="gemma3:12b", + size="8.1GB", + ), + "gemma3:27b": OllamaModelMetadata( + label="Gemma 3:27b", + value="gemma3:27b", + size="17GB", + ), +} + +SUPPORTED_DEEPSEEK_MODELS = { + "deepseek-r1:1.5b": OllamaModelMetadata( + label="DeepSeek R1:1.5b", + value="deepseek-r1:1.5b", + size="1.1GB", + ), + "deepseek-r1:7b": OllamaModelMetadata( + label="DeepSeek R1:7b", + value="deepseek-r1:7b", + size="4.7GB", + ), + "deepseek-r1:8b": OllamaModelMetadata( + label="DeepSeek R1:8b", + value="deepseek-r1:8b", + size="5.2GB", + ), + "deepseek-r1:14b": OllamaModelMetadata( + label="DeepSeek R1:14b", + value="deepseek-r1:14b", + size="9GB", + ), + "deepseek-r1:32b": OllamaModelMetadata( + label="DeepSeek R1:32b", + value="deepseek-r1:32b", + size="20GB", + ), + "deepseek-r1:70b": OllamaModelMetadata( + label="DeepSeek R1:70b", + value="deepseek-r1:70b", + size="43GB", + ), + "deepseek-r1:671b": OllamaModelMetadata( + label="DeepSeek R1:671b", + value="deepseek-r1:671b", + size="404GB", + ), +} + +SUPPORTED_QWEN_MODELS = { + "qwen3:0.6b": OllamaModelMetadata( + label="Qwen 3:0.6b", + value="qwen3:0.6b", + size="523MB", + ), + "qwen3:1.7b": OllamaModelMetadata( + label="Qwen 3:1.7b", + value="qwen3:1.7b", + size="1.4GB", + ), + "qwen3:4b": OllamaModelMetadata( + label="Qwen 3:4b", + value="qwen3:4b", + size="2.6GB", + ), + "qwen3:8b": OllamaModelMetadata( + label="Qwen 3:8b", + value="qwen3:8b", + size="5.2GB", + ), + "qwen3:14b": OllamaModelMetadata( + label="Qwen 3:14b", + value="qwen3:14b", + size="9.3GB", + ), + "qwen3:30b": OllamaModelMetadata( + label="Qwen 3:30b", + value="qwen3:30b", + size="19GB", + ), + "qwen3:32b": OllamaModelMetadata( + label="Qwen 3:32b", + value="qwen3:32b", + size="20GB", + ), + "qwen3:235b": OllamaModelMetadata( + label="Qwen 3:235b", + value="qwen3:235b", + size="142GB", + ), +} + +SUPPORTED_GPT_OSS_MODELS = { + "gpt-oss:20b": OllamaModelMetadata( + label="GPT-OSS 20b", + value="gpt-oss:20b", + size="14GB", + ), + "gpt-oss:120b": OllamaModelMetadata( + label="GPT-OSS 120b", + value="gpt-oss:120b", + size="65GB", + ), +} + +SUPPORTED_OLLAMA_MODELS = { + **SUPPORTED_OLLAMA_MODELS, + **SUPPORTED_GEMMA_MODELS, + **SUPPORTED_DEEPSEEK_MODELS, + **SUPPORTED_QWEN_MODELS, + **SUPPORTED_GPT_OSS_MODELS, +} diff --git a/backend/enums/__init__.py b/backend/enums/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/enums/image_provider.py b/backend/enums/image_provider.py new file mode 100644 index 0000000..9d773ad --- /dev/null +++ b/backend/enums/image_provider.py @@ -0,0 +1,11 @@ +from enum import Enum + + +class ImageProvider(Enum): + PEXELS = "pexels" + PIXABAY = "pixabay" + GEMINI_FLASH = "gemini_flash" + NANOBANANA_PRO = "nanobanana_pro" + DALLE3 = "dall-e-3" + GPT_IMAGE_1_5 = "gpt-image-1.5" + COMFYUI = "comfyui" diff --git a/backend/enums/llm_call_type.py b/backend/enums/llm_call_type.py new file mode 100644 index 0000000..e37fe4a --- /dev/null +++ b/backend/enums/llm_call_type.py @@ -0,0 +1,8 @@ +from enum import Enum + + +class LLMCallType(Enum): + UNSTRUCTURED = "unstructured" + UNSTRUCTURED_STREAM = "unstructured_stream" + STRUCTURED = "structured" + STRUCTURED_STREAM = "structured_stream" diff --git a/backend/enums/llm_provider.py b/backend/enums/llm_provider.py new file mode 100644 index 0000000..049d365 --- /dev/null +++ b/backend/enums/llm_provider.py @@ -0,0 +1,9 @@ +from enum import Enum + + +class LLMProvider(Enum): + OLLAMA = "ollama" + OPENAI = "openai" + GOOGLE = "google" + ANTHROPIC = "anthropic" + CUSTOM = "custom" diff --git a/backend/enums/tone.py b/backend/enums/tone.py new file mode 100644 index 0000000..5679869 --- /dev/null +++ b/backend/enums/tone.py @@ -0,0 +1,11 @@ +from enum import Enum + + +class Tone(str, Enum): + DEFAULT = "default" + CASUAL = "casual" + PROFESSIONAL = "professional" + FUNNY = "funny" + EDUCATIONAL = "educational" + SALES_PITCH = "sales_pitch" + diff --git a/backend/enums/verbosity.py b/backend/enums/verbosity.py new file mode 100644 index 0000000..aba4ffb --- /dev/null +++ b/backend/enums/verbosity.py @@ -0,0 +1,8 @@ +from enum import Enum + + +class Verbosity(str, Enum): + CONCISE = "concise" + STANDARD = "standard" + TEXT_HEAVY = "text-heavy" + diff --git a/backend/enums/webhook_event.py b/backend/enums/webhook_event.py new file mode 100644 index 0000000..ce1ca4a --- /dev/null +++ b/backend/enums/webhook_event.py @@ -0,0 +1,6 @@ +from enum import Enum + + +class WebhookEvent(str, Enum): + PRESENTATION_GENERATION_COMPLETED = "presentation.generation.completed" + PRESENTATION_GENERATION_FAILED = "presentation.generation.failed" diff --git a/backend/mcp_server.py b/backend/mcp_server.py new file mode 100644 index 0000000..9012017 --- /dev/null +++ b/backend/mcp_server.py @@ -0,0 +1,68 @@ +import sys +import argparse +import asyncio +import traceback + +import httpx +from fastmcp import FastMCP +import json + +with open("openai_spec.json", "r") as f: + openapi_spec = json.load(f) + + +async def main(): + try: + print("DEBUG: MCP (OpenAPI) Server startup initiated") + parser = argparse.ArgumentParser( + description="Run the MCP server (from OpenAPI)" + ) + parser.add_argument( + "--port", type=int, default=8001, help="Port for the MCP HTTP server" + ) + + parser.add_argument( + "--name", + type=str, + default="Presenton API (OpenAPI)", + help="Display name for the generated MCP server", + ) + args = parser.parse_args() + print(f"DEBUG: Parsed args - port={args.port}") + + # Create an HTTP client that the MCP server will use to call the API + api_client = httpx.AsyncClient(base_url="http://127.0.0.1:8000", timeout=60.0) + + # Build MCP server from OpenAPI + print("DEBUG: Creating FastMCP server from OpenAPI spec...") + mcp = FastMCP.from_openapi( + openapi_spec=openapi_spec, + client=api_client, + name=args.name, + ) + print("DEBUG: MCP server created from OpenAPI successfully") + + # Start the MCP server + uvicorn_config = {"reload": True} + print(f"DEBUG: Starting MCP server on host=127.0.0.1, port={args.port}") + await mcp.run_async( + transport="http", + host="127.0.0.1", + port=args.port, + uvicorn_config=uvicorn_config, + ) + print("DEBUG: MCP server run_async completed") + except Exception as e: + print(f"ERROR: MCP server startup failed: {e}") + print(f"ERROR: Traceback: {traceback.format_exc()}") + raise + + +if __name__ == "__main__": + print("DEBUG: Starting MCP (OpenAPI) main function") + try: + asyncio.run(main()) + except Exception as e: + print(f"FATAL ERROR: {e}") + print(f"FATAL TRACEBACK: {traceback.format_exc()}") + sys.exit(1) diff --git a/backend/migrations/__init__.py b/backend/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/migrations/env.py b/backend/migrations/env.py new file mode 100644 index 0000000..b02889b --- /dev/null +++ b/backend/migrations/env.py @@ -0,0 +1,75 @@ +import asyncio +from logging.config import fileConfig + +from sqlalchemy import pool +from sqlalchemy.ext.asyncio import async_engine_from_config +from alembic import context +from sqlmodel import SQLModel + +# Import ALL models so they register with SQLModel.metadata +# Existing models +from models.sql.presentation import PresentationModel # noqa: F401 +from models.sql.slide import SlideModel # noqa: F401 +from models.sql.key_value import KeyValueSqlModel # noqa: F401 +from models.sql.image_asset import ImageAsset # noqa: F401 +from models.sql.presentation_layout_code import PresentationLayoutCodeModel # noqa: F401 +from models.sql.template import TemplateModel # noqa: F401 +from models.sql.webhook_subscription import WebhookSubscription # noqa: F401 +from models.sql.async_presentation_generation_status import AsyncPresentationGenerationTaskModel # noqa: F401 +from models.sql.ollama_pull_status import OllamaPullStatus # noqa: F401 + +# New models +from models.sql.user import UserModel # noqa: F401 +from models.sql.client import ClientModel # noqa: F401 +from models.sql.team import TeamModel # noqa: F401 +from models.sql.team_membership import TeamMembershipModel # noqa: F401 +from models.sql.brand_config import BrandConfigModel # noqa: F401 +from models.sql.master_deck import MasterDeckModel # noqa: F401 +from models.sql.audit_log import AuditLogModel # noqa: F401 +from models.sql.job import JobModel # noqa: F401 + +from utils.db_utils import get_database_url_and_connect_args + +config = context.config + +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +target_metadata = SQLModel.metadata + + +def run_migrations_offline() -> None: + url, _ = get_database_url_and_connect_args() + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + with context.begin_transaction(): + context.run_migrations() + + +def do_run_migrations(connection) -> None: + context.configure(connection=connection, target_metadata=target_metadata) + with context.begin_transaction(): + context.run_migrations() + + +async def run_migrations_online() -> None: + url, connect_args = get_database_url_and_connect_args() + connectable = async_engine_from_config( + {"sqlalchemy.url": url}, + prefix="sqlalchemy.", + poolclass=pool.NullPool, + connect_args=connect_args, + ) + async with connectable.connect() as connection: + await connection.run_sync(do_run_migrations) + await connectable.dispose() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + asyncio.run(run_migrations_online()) diff --git a/backend/migrations/script.py.mako b/backend/migrations/script.py.mako new file mode 100644 index 0000000..6ce3351 --- /dev/null +++ b/backend/migrations/script.py.mako @@ -0,0 +1,27 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import sqlmodel +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision: str = ${repr(up_revision)} +down_revision: Union[str, None] = ${repr(down_revision)} +branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)} +depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)} + + +def upgrade() -> None: + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + ${downgrades if downgrades else "pass"} diff --git a/backend/models/__init__.py b/backend/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/models/api_error_model.py b/backend/models/api_error_model.py new file mode 100644 index 0000000..9def72e --- /dev/null +++ b/backend/models/api_error_model.py @@ -0,0 +1,13 @@ +from fastapi import HTTPException +from pydantic import BaseModel + + +class APIErrorModel(BaseModel): + status_code: int + detail: str + + @classmethod + def from_exception(cls, e: Exception) -> "APIErrorModel": + if isinstance(e, HTTPException): + return APIErrorModel(status_code=e.status_code, detail=e.detail) + return APIErrorModel(status_code=500, detail=str(e)) diff --git a/backend/models/decomposed_file_info.py b/backend/models/decomposed_file_info.py new file mode 100644 index 0000000..c6803aa --- /dev/null +++ b/backend/models/decomposed_file_info.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel + + +class DecomposedFileInfo(BaseModel): + name: str + file_path: str diff --git a/backend/models/document_chunk.py b/backend/models/document_chunk.py new file mode 100644 index 0000000..a7500be --- /dev/null +++ b/backend/models/document_chunk.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel + +from models.presentation_outline_model import SlideOutlineModel + + +class DocumentChunk(BaseModel): + heading: str + content: str + heading_index: int + score: float + + def to_slide_outline(self) -> SlideOutlineModel: + return SlideOutlineModel(content=f"{self.heading}\n{self.content}") diff --git a/backend/models/generate_presentation_request.py b/backend/models/generate_presentation_request.py new file mode 100644 index 0000000..a8fbf44 --- /dev/null +++ b/backend/models/generate_presentation_request.py @@ -0,0 +1,42 @@ +from typing import List, Literal, Optional +from pydantic import BaseModel, Field + +from enums.tone import Tone +from enums.verbosity import Verbosity + + +class GeneratePresentationRequest(BaseModel): + content: str = Field(..., description="The content for generating the presentation") + slides_markdown: Optional[List[str]] = Field( + default=None, description="The markdown for the slides" + ) + instructions: Optional[str] = Field( + default=None, description="The instruction for generating the presentation" + ) + tone: Tone = Field(default=Tone.DEFAULT, description="The tone to use for the text") + verbosity: Verbosity = Field( + default=Verbosity.STANDARD, description="How verbose the presentation should be" + ) + web_search: bool = Field(default=False, description="Whether to enable web search") + n_slides: int = Field(default=8, description="Number of slides to generate") + language: str = Field( + default="English", description="Language for the presentation" + ) + template: str = Field( + default="general", description="Template to use for the presentation" + ) + include_table_of_contents: bool = Field( + default=False, description="Whether to include a table of contents" + ) + include_title_slide: bool = Field( + default=True, description="Whether to include a title slide" + ) + files: Optional[List[str]] = Field( + default=None, description="Files to use for the presentation" + ) + export_as: Literal["pptx", "pdf"] = Field( + default="pptx", description="Export format" + ) + trigger_webhook: bool = Field( + default=False, description="Whether to trigger subscribed webhooks" + ) diff --git a/backend/models/image_prompt.py b/backend/models/image_prompt.py new file mode 100644 index 0000000..f74638c --- /dev/null +++ b/backend/models/image_prompt.py @@ -0,0 +1,10 @@ +from typing import Optional +from pydantic import BaseModel + + +class ImagePrompt(BaseModel): + prompt: str + theme_prompt: Optional[str] = None + + def get_image_prompt(self, with_theme: bool = False) -> str: + return f"{self.prompt}, {self.theme_prompt}" if with_theme else self.prompt diff --git a/backend/models/json_path_guide.py b/backend/models/json_path_guide.py new file mode 100644 index 0000000..58343a1 --- /dev/null +++ b/backend/models/json_path_guide.py @@ -0,0 +1,14 @@ +from typing import List +from pydantic import BaseModel + + +class DictGuide(BaseModel): + key: str + + +class ListGuide(BaseModel): + index: int + + +class JsonPathGuide(BaseModel): + guides: List[DictGuide | ListGuide] diff --git a/backend/models/llm_message.py b/backend/models/llm_message.py new file mode 100644 index 0000000..ba1be4c --- /dev/null +++ b/backend/models/llm_message.py @@ -0,0 +1,59 @@ +from typing import Any, List, Literal, Optional +from pydantic import BaseModel +from google.genai.types import Content as GoogleContent + +from models.llm_tool_call import AnthropicToolCall + + +class LLMMessage(BaseModel): + pass + + +class LLMUserMessage(LLMMessage): + role: Literal["user"] = "user" + content: str + + +class LLMSystemMessage(LLMMessage): + role: Literal["system"] = "system" + content: str + + +class OpenAIAssistantMessage(LLMMessage): + role: Literal["assistant"] = "assistant" + content: str | None = None + tool_calls: Optional[List[dict]] = None + + +class GoogleAssistantMessage(LLMMessage): + role: Literal["assistant"] = "assistant" + content: GoogleContent + + +class AnthropicAssistantMessage(LLMMessage): + role: Literal["assistant"] = "assistant" + content: List[AnthropicToolCall] + + +class AnthropicToolCallMessage(LLMMessage): + type: Literal["tool_result"] = "tool_result" + tool_use_id: str + content: str + + +class AnthropicUserMessage(LLMMessage): + role: Literal["user"] = "user" + content: List[AnthropicToolCallMessage] + + +class OpenAIToolCallMessage(LLMMessage): + role: Literal["tool"] = "tool" + content: str + tool_call_id: str + + +class GoogleToolCallMessage(LLMMessage): + role: Literal["tool"] = "tool" + id: Optional[str] = None + name: str + response: dict diff --git a/backend/models/llm_tool_call.py b/backend/models/llm_tool_call.py new file mode 100644 index 0000000..d0fe7c0 --- /dev/null +++ b/backend/models/llm_tool_call.py @@ -0,0 +1,30 @@ +from typing import Literal, Optional +from pydantic import BaseModel + + +class LLMToolCall(BaseModel): + pass + + +class OpenAIToolCallFunction(BaseModel): + name: str + arguments: str + + +class OpenAIToolCall(LLMToolCall): + id: str + type: Literal["function"] = "function" + function: OpenAIToolCallFunction + + +class GoogleToolCall(LLMToolCall): + id: Optional[str] = None + name: str + arguments: Optional[dict] = None + + +class AnthropicToolCall(LLMToolCall): + type: Literal["tool_use"] = "tool_use" + id: str + name: str + input: object diff --git a/backend/models/llm_tools.py b/backend/models/llm_tools.py new file mode 100644 index 0000000..ccf64e6 --- /dev/null +++ b/backend/models/llm_tools.py @@ -0,0 +1,29 @@ +from typing import Any, Callable, Coroutine, Optional +from pydantic import BaseModel, Field + + +class LLMTool(BaseModel): + pass + + +class LLMDynamicTool(LLMTool): + name: str + description: str + parameters: dict = {} + handler: Callable[..., Coroutine[Any, Any, str]] + + +class SearchWebTool(LLMTool): + """ + Search the web for information. + """ + + query: str = Field(description="The query to search the web for") + + +class GetCurrentDatetimeTool(LLMTool): + """ + Get the current datetime. + """ + + pass diff --git a/backend/models/ollama_model_metadata.py b/backend/models/ollama_model_metadata.py new file mode 100644 index 0000000..88c89cc --- /dev/null +++ b/backend/models/ollama_model_metadata.py @@ -0,0 +1,7 @@ +from pydantic import BaseModel + + +class OllamaModelMetadata(BaseModel): + label: str + value: str + size: str diff --git a/backend/models/ollama_model_status.py b/backend/models/ollama_model_status.py new file mode 100644 index 0000000..521bc2e --- /dev/null +++ b/backend/models/ollama_model_status.py @@ -0,0 +1,10 @@ +from typing import Optional +from pydantic import BaseModel + + +class OllamaModelStatus(BaseModel): + name: str + size: Optional[int] = None + downloaded: Optional[int] = None + status: str + done: bool diff --git a/backend/models/pptx_models.py b/backend/models/pptx_models.py new file mode 100644 index 0000000..80da5cd --- /dev/null +++ b/backend/models/pptx_models.py @@ -0,0 +1,171 @@ +from enum import Enum +from typing import Annotated, List, Literal, Optional +from annotated_types import Len +from pydantic import BaseModel +from pptx.util import Pt +from pptx.enum.text import PP_ALIGN +from pptx.enum.shapes import MSO_AUTO_SHAPE_TYPE, MSO_CONNECTOR_TYPE + + +class PptxBoxShapeEnum(Enum): + RECTANGLE = "rectangle" + CIRCLE = "circle" + + +class PptxObjectFitEnum(Enum): + CONTAIN = "contain" + COVER = "cover" + FILL = "fill" + + +class PptxSpacingModel(BaseModel): + top: int = 0 + bottom: int = 0 + left: int = 0 + right: int = 0 + + @classmethod + def all(cls, num: int): + return PptxSpacingModel(top=num, left=num, bottom=num, right=num) + + +class PptxPositionModel(BaseModel): + left: int = 0 + top: int = 0 + width: int = 0 + height: int = 0 + + @classmethod + def for_textbox(cls, left: int, top: int, width: int): + return cls(left=left, top=top, width=width, height=100) + + def to_pt_list(self) -> List[int]: + return [Pt(self.left), Pt(self.top), Pt(self.width), Pt(self.height)] + + def to_pt_xyxy(self) -> List[int]: + return [ + Pt(self.left), + Pt(self.top), + Pt(self.left + self.width), + Pt(self.top + self.height), + ] + + +class PptxFontModel(BaseModel): + name: str = "Inter" + size: int = 16 + italic: bool = False + color: str = "000000" + font_weight: Optional[int] = 400 + underline: Optional[bool] = None + strike: Optional[bool] = None + + +class PptxFillModel(BaseModel): + color: str + opacity: float = 1.0 + + +class PptxStrokeModel(BaseModel): + color: str + thickness: float + opacity: float = 1.0 + + +class PptxShadowModel(BaseModel): + radius: int + offset: int = 0 + color: str = "000000" + opacity: float = 0.5 + angle: int = 0 + + +class PptxTextRunModel(BaseModel): + text: str + font: Optional[PptxFontModel] = None + + +class PptxParagraphModel(BaseModel): + spacing: Optional[PptxSpacingModel] = None + alignment: Optional[PP_ALIGN] = None + font: Optional[PptxFontModel] = None + line_height: Optional[float] = None + text: Optional[str] = None + text_runs: Optional[List[PptxTextRunModel]] = None + + +class PptxObjectFitModel(BaseModel): + fit: Optional[PptxObjectFitEnum] = None + focus: Optional[ + Annotated[List[Optional[float]], Len(min_length=2, max_length=2)] + ] = None + + +class PptxPictureModel(BaseModel): + is_network: bool + path: str + + +class PptxShapeModel(BaseModel): + shape_type: Literal["textbox", "autoshape", "picture", "connector"] + + +class PptxTextBoxModel(PptxShapeModel): + shape_type: Literal["textbox"] = "textbox" + margin: Optional[PptxSpacingModel] = None + fill: Optional[PptxFillModel] = None + position: PptxPositionModel + text_wrap: bool = True + paragraphs: List[PptxParagraphModel] + + +class PptxAutoShapeBoxModel(PptxShapeModel): + shape_type: Literal["autoshape"] = "autoshape" + type: MSO_AUTO_SHAPE_TYPE = MSO_AUTO_SHAPE_TYPE.RECTANGLE + margin: Optional[PptxSpacingModel] = None + fill: Optional[PptxFillModel] = None + stroke: Optional[PptxStrokeModel] = None + shadow: Optional[PptxShadowModel] = None + position: PptxPositionModel + text_wrap: bool = True + border_radius: Optional[int] = None + paragraphs: Optional[List[PptxParagraphModel]] = None + + +class PptxPictureBoxModel(PptxShapeModel): + shape_type: Literal["picture"] = "picture" + position: PptxPositionModel + margin: Optional[PptxSpacingModel] = None + clip: bool = True + opacity: Optional[float] = None + invert: bool = False + border_radius: Optional[List[int]] = None + shape: Optional[PptxBoxShapeEnum] = None + object_fit: Optional[PptxObjectFitModel] = None + picture: PptxPictureModel + + +class PptxConnectorModel(PptxShapeModel): + shape_type: Literal["connector"] = "connector" + type: MSO_CONNECTOR_TYPE = MSO_CONNECTOR_TYPE.STRAIGHT + position: PptxPositionModel + thickness: float = 0.5 + color: str = "000000" + opacity: float = 1.0 + + +class PptxSlideModel(BaseModel): + background: Optional[PptxFillModel] = None + note: Optional[str] = None + shapes: List[ + PptxTextBoxModel + | PptxAutoShapeBoxModel + | PptxConnectorModel + | PptxPictureBoxModel + ] + + +class PptxPresentationModel(BaseModel): + name: Optional[str] = None + shapes: Optional[List[PptxShapeModel]] = None + slides: List[PptxSlideModel] diff --git a/backend/models/presentation_and_path.py b/backend/models/presentation_and_path.py new file mode 100644 index 0000000..3f2cd7a --- /dev/null +++ b/backend/models/presentation_and_path.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel +import uuid + + +class PresentationAndPath(BaseModel): + presentation_id: uuid.UUID + path: str + + +class PresentationPathAndEditPath(PresentationAndPath): + edit_path: str diff --git a/backend/models/presentation_from_template.py b/backend/models/presentation_from_template.py new file mode 100644 index 0000000..9674485 --- /dev/null +++ b/backend/models/presentation_from_template.py @@ -0,0 +1,14 @@ +from typing import List, Literal +from pydantic import BaseModel +import uuid + + +class SlideContentUpdate(BaseModel): + index: int + content: dict + + +class EditPresentationRequest(BaseModel): + presentation_id: uuid.UUID + slides: List[SlideContentUpdate] + export_as: Literal["pptx", "pdf"] = "pptx" diff --git a/backend/models/presentation_layout.py b/backend/models/presentation_layout.py new file mode 100644 index 0000000..784e41f --- /dev/null +++ b/backend/models/presentation_layout.py @@ -0,0 +1,39 @@ +from typing import List, Optional +from fastapi import HTTPException +from pydantic import BaseModel, Field + +from models.presentation_structure_model import PresentationStructureModel + + +class SlideLayoutModel(BaseModel): + id: str + name: Optional[str] = None + description: Optional[str] = None + json_schema: dict + + +class PresentationLayoutModel(BaseModel): + name: str + ordered: bool = Field(default=False) + slides: List[SlideLayoutModel] + + def get_slide_layout_index(self, slide_layout_id: str) -> int: + for index, slide in enumerate(self.slides): + if slide.id == slide_layout_id: + return index + raise HTTPException( + status_code=404, detail=f"Slide layout {slide_layout_id} not found" + ) + + def to_presentation_structure(self): + return PresentationStructureModel( + slides=[index for index in range(len(self.slides))] + ) + + def to_string(self): + message = f"## Presentation Layout\n\n" + for index, slide in enumerate(self.slides): + message += f"### Slide Layout: {index}: \n" + message += f"- Name: {slide.name or slide.json_schema.get('title')} \n" + message += f"- Description: {slide.description} \n\n" + return message diff --git a/backend/models/presentation_outline_model.py b/backend/models/presentation_outline_model.py new file mode 100644 index 0000000..01a3b2b --- /dev/null +++ b/backend/models/presentation_outline_model.py @@ -0,0 +1,17 @@ +from typing import List +from pydantic import BaseModel + + +class SlideOutlineModel(BaseModel): + content: str + + +class PresentationOutlineModel(BaseModel): + slides: List[SlideOutlineModel] + + def to_string(self): + message = "" + for i, slide in enumerate(self.slides): + message += f"## Slide {i+1}:\n" + message += f" - Content: {slide} \n" + return message diff --git a/backend/models/presentation_structure_model.py b/backend/models/presentation_structure_model.py new file mode 100644 index 0000000..e6993e3 --- /dev/null +++ b/backend/models/presentation_structure_model.py @@ -0,0 +1,6 @@ +from typing import List +from pydantic import BaseModel, Field + + +class PresentationStructureModel(BaseModel): + slides: List[int] = Field(description="List of slide layout indexes") diff --git a/backend/models/presentation_with_slides.py b/backend/models/presentation_with_slides.py new file mode 100644 index 0000000..3a4d83b --- /dev/null +++ b/backend/models/presentation_with_slides.py @@ -0,0 +1,20 @@ +from typing import List, Optional +from datetime import datetime +import uuid + +from pydantic import BaseModel + +from models.sql.slide import SlideModel + + +class PresentationWithSlides(BaseModel): + id: uuid.UUID + content: str + n_slides: int + language: str + title: Optional[str] = None + created_at: datetime + updated_at: datetime + tone: Optional[str] = None + verbosity: Optional[str] = None + slides: List[SlideModel] diff --git a/backend/models/slide_layout_index.py b/backend/models/slide_layout_index.py new file mode 100644 index 0000000..e519742 --- /dev/null +++ b/backend/models/slide_layout_index.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel + + +class SlideLayoutIndex(BaseModel): + index: int diff --git a/backend/models/sql/async_presentation_generation_status.py b/backend/models/sql/async_presentation_generation_status.py new file mode 100644 index 0000000..0431b04 --- /dev/null +++ b/backend/models/sql/async_presentation_generation_status.py @@ -0,0 +1,22 @@ +from datetime import datetime +import secrets +from typing import Optional +import uuid + +from sqlalchemy import JSON, Column +from sqlmodel import Field, SQLModel + + +class AsyncPresentationGenerationTaskModel(SQLModel, table=True): + + __tablename__ = "async_presentation_generation_tasks" + + id: str = Field( + default_factory=lambda: f"task-{secrets.token_hex(32)}", primary_key=True + ) + status: str + message: Optional[str] = None + error: Optional[dict] = Field(sa_column=Column(JSON), default=None) + created_at: datetime = Field(default_factory=datetime.now) + updated_at: datetime = Field(default_factory=datetime.now) + data: Optional[dict] = Field(sa_column=Column(JSON), default=None) diff --git a/backend/models/sql/audit_log.py b/backend/models/sql/audit_log.py new file mode 100644 index 0000000..e18119a --- /dev/null +++ b/backend/models/sql/audit_log.py @@ -0,0 +1,31 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import JSON, Column, DateTime, ForeignKey, String +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class AuditLogModel(SQLModel, table=True): + __tablename__ = "audit_logs" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + user_id: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("users.id"), nullable=True), default=None + ) + action: str + resource_type: str + resource_id: Optional[uuid.UUID] = Field(default=None) + client_id: Optional[uuid.UUID] = Field(default=None) + details: Optional[dict] = Field(sa_column=Column(JSON), default=None) + ip_address: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + index=True, + ), + ) diff --git a/backend/models/sql/brand_config.py b/backend/models/sql/brand_config.py new file mode 100644 index 0000000..9dcffc4 --- /dev/null +++ b/backend/models/sql/brand_config.py @@ -0,0 +1,39 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import JSON, Column, DateTime, ForeignKey, String +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class BrandConfigModel(SQLModel, table=True): + __tablename__ = "brand_configs" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + client_id: uuid.UUID = Field( + sa_column=Column(ForeignKey("clients.id"), unique=True) + ) + primary_colors: Optional[list] = Field(sa_column=Column(JSON), default=None) + secondary_colors: Optional[list] = Field(sa_column=Column(JSON), default=None) + fonts: Optional[dict] = Field(sa_column=Column(JSON), default=None) + logo_paths: Optional[list] = Field(sa_column=Column(JSON), default=None) + voice_rules: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + voice_examples: Optional[list] = Field(sa_column=Column(JSON), default=None) + guideline_doc_path: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + updated_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + onupdate=get_current_utc_datetime, + ), + ) diff --git a/backend/models/sql/client.py b/backend/models/sql/client.py new file mode 100644 index 0000000..b7f756b --- /dev/null +++ b/backend/models/sql/client.py @@ -0,0 +1,35 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import Column, DateTime, String, Boolean, Integer +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class ClientModel(SQLModel, table=True): + __tablename__ = "clients" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + name: str + slug: str = Field(sa_column=Column(String, unique=True, index=True)) + logo_path: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + retention_days: Optional[int] = Field( + sa_column=Column(Integer, nullable=True), default=None + ) + review_policy: str = Field(default="self_approve") # self_approve, require_reviewer + is_active: bool = Field(sa_column=Column(Boolean, default=True, nullable=False)) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + updated_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + onupdate=get_current_utc_datetime, + ), + ) diff --git a/backend/models/sql/image_asset.py b/backend/models/sql/image_asset.py new file mode 100644 index 0000000..3efc99c --- /dev/null +++ b/backend/models/sql/image_asset.py @@ -0,0 +1,20 @@ +from datetime import datetime +from typing import Optional +import uuid + +from sqlalchemy import JSON, Column, DateTime +from sqlmodel import Field, SQLModel + +from utils.datetime_utils import get_current_utc_datetime + + +class ImageAsset(SQLModel, table=True): + id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + is_uploaded: bool = Field(default=False) + path: str + extras: Optional[dict] = Field(sa_column=Column(JSON), default=None) diff --git a/backend/models/sql/job.py b/backend/models/sql/job.py new file mode 100644 index 0000000..7f86a24 --- /dev/null +++ b/backend/models/sql/job.py @@ -0,0 +1,37 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import Column, DateTime, ForeignKey, String, Integer +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class JobModel(SQLModel, table=True): + __tablename__ = "jobs" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + user_id: uuid.UUID = Field(sa_column=Column(ForeignKey("users.id"))) + client_id: uuid.UUID = Field(sa_column=Column(ForeignKey("clients.id"))) + presentation_id: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("presentations.id"), nullable=True), default=None + ) + job_type: str # generate_presentation, parse_master_deck + status: str = Field(default="queued") # queued, processing, completed, failed + progress: int = Field(sa_column=Column(Integer, default=0)) + progress_message: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + error_message: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + started_at: Optional[datetime] = Field( + sa_column=Column(DateTime(timezone=True), nullable=True), default=None + ) + completed_at: Optional[datetime] = Field( + sa_column=Column(DateTime(timezone=True), nullable=True), default=None + ) diff --git a/backend/models/sql/key_value.py b/backend/models/sql/key_value.py new file mode 100644 index 0000000..c7296ac --- /dev/null +++ b/backend/models/sql/key_value.py @@ -0,0 +1,8 @@ +import uuid +from sqlmodel import Field, Column, JSON, SQLModel + + +class KeyValueSqlModel(SQLModel, table=True): + id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True) + key: str = Field(index=True) + value: dict = Field(sa_column=Column(JSON)) diff --git a/backend/models/sql/master_deck.py b/backend/models/sql/master_deck.py new file mode 100644 index 0000000..a5960cf --- /dev/null +++ b/backend/models/sql/master_deck.py @@ -0,0 +1,38 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import JSON, Column, DateTime, ForeignKey, String, Boolean +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class MasterDeckModel(SQLModel, table=True): + __tablename__ = "master_decks" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + client_id: uuid.UUID = Field(sa_column=Column(ForeignKey("clients.id"))) + name: str + description: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + original_file_path: str + thumbnail_path: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + parsed_config: Optional[dict] = Field(sa_column=Column(JSON), default=None) + layouts: Optional[list] = Field(sa_column=Column(JSON), default=None) + parse_status: str = Field(default="pending") # pending, processing, completed, failed + is_active: bool = Field(sa_column=Column(Boolean, default=True, nullable=False)) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + updated_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + onupdate=get_current_utc_datetime, + ), + ) diff --git a/backend/models/sql/ollama_pull_status.py b/backend/models/sql/ollama_pull_status.py new file mode 100644 index 0000000..a9fa10a --- /dev/null +++ b/backend/models/sql/ollama_pull_status.py @@ -0,0 +1,9 @@ +from datetime import datetime +import uuid +from sqlmodel import Field, Column, JSON, SQLModel, DateTime + + +class OllamaPullStatus(SQLModel, table=True): + id: str = Field(primary_key=True) + last_updated: datetime = Field(sa_column=Column(DateTime, default=datetime.now)) + status: dict = Field(sa_column=Column(JSON)) diff --git a/backend/models/sql/presentation.py b/backend/models/sql/presentation.py new file mode 100644 index 0000000..9a3e8d7 --- /dev/null +++ b/backend/models/sql/presentation.py @@ -0,0 +1,102 @@ +from datetime import datetime +from typing import List, Optional +import uuid +from sqlalchemy import JSON, Column, DateTime, ForeignKey, String +from sqlmodel import Boolean, Field, SQLModel + +from models.presentation_layout import PresentationLayoutModel +from models.presentation_outline_model import PresentationOutlineModel +from models.presentation_structure_model import PresentationStructureModel +from utils.datetime_utils import get_current_utc_datetime + + +class PresentationModel(SQLModel, table=True): + __tablename__ = "presentations" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + content: str + n_slides: int + language: str + title: Optional[str] = None + file_paths: Optional[List[str]] = Field(sa_column=Column(JSON), default=None) + outlines: Optional[dict] = Field(sa_column=Column(JSON), default=None) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + updated_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + onupdate=get_current_utc_datetime, + ), + ) + layout: Optional[dict] = Field(sa_column=Column(JSON), default=None) + structure: Optional[dict] = Field(sa_column=Column(JSON), default=None) + instructions: Optional[str] = Field(sa_column=Column(String), default=None) + tone: Optional[str] = Field(sa_column=Column(String), default=None) + verbosity: Optional[str] = Field(sa_column=Column(String), default=None) + include_table_of_contents: bool = Field(sa_column=Column(Boolean), default=False) + include_title_slide: bool = Field(sa_column=Column(Boolean), default=True) + web_search: bool = Field(sa_column=Column(Boolean), default=False) + + # Multi-tenant fields (all nullable for backward compat with existing data) + owner_id: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("users.id"), nullable=True), default=None + ) + client_id: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("clients.id"), nullable=True), default=None + ) + master_deck_id: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("master_decks.id"), nullable=True), default=None + ) + status: str = Field(sa_column=Column(String, default="draft")) # draft, in_review, approved + review_comment: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) + source_type: Optional[str] = Field( + sa_column=Column(String, nullable=True), default=None + ) # brief, url, manual + is_saved: bool = Field(sa_column=Column(Boolean, default=False)) + deleted_at: Optional[datetime] = Field( + sa_column=Column(DateTime(timezone=True), nullable=True), default=None + ) + + def get_new_presentation(self): + return PresentationModel( + id=uuid.uuid4(), + content=self.content, + n_slides=self.n_slides, + language=self.language, + title=self.title, + file_paths=self.file_paths, + outlines=self.outlines, + layout=self.layout, + structure=self.structure, + instructions=self.instructions, + tone=self.tone, + verbosity=self.verbosity, + include_table_of_contents=self.include_table_of_contents, + include_title_slide=self.include_title_slide, + ) + + def get_presentation_outline(self): + if not self.outlines: + return None + return PresentationOutlineModel(**self.outlines) + + def get_layout(self): + return PresentationLayoutModel(**self.layout) + + def set_layout(self, layout: PresentationLayoutModel): + self.layout = layout.model_dump() + + def get_structure(self): + if not self.structure: + return None + return PresentationStructureModel(**self.structure) + + def set_structure(self, structure: PresentationStructureModel): + self.structure = structure.model_dump() diff --git a/backend/models/sql/presentation_layout_code.py b/backend/models/sql/presentation_layout_code.py new file mode 100644 index 0000000..fe57c01 --- /dev/null +++ b/backend/models/sql/presentation_layout_code.py @@ -0,0 +1,37 @@ +from datetime import datetime +from typing import Optional, List +import uuid +from sqlalchemy import Column, DateTime, Text, JSON +from sqlmodel import SQLModel, Field + +from utils.datetime_utils import get_current_utc_datetime + + +class PresentationLayoutCodeModel(SQLModel, table=True): + """Model for storing presentation layout codes""" + + __tablename__ = "presentation_layout_codes" + + id: Optional[int] = Field(default=None, primary_key=True) + presentation: uuid.UUID = Field(index=True, description="UUID of the presentation") + layout_id: str = Field(description="Unique identifier for the layout") + layout_name: str = Field(description="Display name of the layout") + layout_code: str = Field( + sa_column=Column(Text), description="TSX/React component code for the layout" + ) + fonts: Optional[List[str]] = Field( + sa_column=Column(JSON), default=None, description="Optional list of font links" + ) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ) + ) + updated_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + onupdate=get_current_utc_datetime, + ), + ) diff --git a/backend/models/sql/slide.py b/backend/models/sql/slide.py new file mode 100644 index 0000000..0cebe7e --- /dev/null +++ b/backend/models/sql/slide.py @@ -0,0 +1,36 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import DateTime, ForeignKey +from sqlmodel import Field, Column, JSON, SQLModel + + +class SlideModel(SQLModel, table=True): + __tablename__ = "slides" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + presentation: uuid.UUID = Field( + sa_column=Column(ForeignKey("presentations.id", ondelete="CASCADE"), index=True) + ) + layout_group: str + layout: str + index: int + content: dict = Field(sa_column=Column(JSON)) + html_content: Optional[str] + speaker_note: Optional[str] = None + properties: Optional[dict] = Field(sa_column=Column(JSON)) + deleted_at: Optional[datetime] = Field( + sa_column=Column(DateTime(timezone=True), nullable=True), default=None + ) + + def get_new_slide(self, presentation: uuid.UUID, content: Optional[dict] = None): + return SlideModel( + id=uuid.uuid4(), + presentation=presentation, + layout_group=self.layout_group, + layout=self.layout, + index=self.index, + speaker_note=self.speaker_note, + content=content or self.content, + properties=self.properties, + ) diff --git a/backend/models/sql/team.py b/backend/models/sql/team.py new file mode 100644 index 0000000..cfe4e47 --- /dev/null +++ b/backend/models/sql/team.py @@ -0,0 +1,22 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import Column, DateTime, ForeignKey, Boolean +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class TeamModel(SQLModel, table=True): + __tablename__ = "teams" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + name: str + client_id: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("clients.id"), nullable=True), default=None + ) + is_default: bool = Field(sa_column=Column(Boolean, default=False, nullable=False)) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) diff --git a/backend/models/sql/team_membership.py b/backend/models/sql/team_membership.py new file mode 100644 index 0000000..172a3ff --- /dev/null +++ b/backend/models/sql/team_membership.py @@ -0,0 +1,24 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import Column, DateTime, ForeignKey, UniqueConstraint +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class TeamMembershipModel(SQLModel, table=True): + __tablename__ = "team_memberships" + __table_args__ = (UniqueConstraint("user_id", "team_id"),) + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + user_id: uuid.UUID = Field(sa_column=Column(ForeignKey("users.id"), index=True)) + team_id: uuid.UUID = Field(sa_column=Column(ForeignKey("teams.id"), index=True)) + assigned_by: Optional[uuid.UUID] = Field( + sa_column=Column(ForeignKey("users.id", name="fk_assigned_by"), nullable=True), + default=None, + ) + assigned_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) diff --git a/backend/models/sql/template.py b/backend/models/sql/template.py new file mode 100644 index 0000000..a5ca53f --- /dev/null +++ b/backend/models/sql/template.py @@ -0,0 +1,26 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import Column, DateTime +from sqlmodel import SQLModel, Field + +from utils.datetime_utils import get_current_utc_datetime + + +class TemplateModel(SQLModel, table=True): + __tablename__ = "templates" + + id: uuid.UUID = Field( + default_factory=uuid.uuid4, + primary_key=True, + description="UUID for the template (matches presentation_id)", + ) + name: str = Field(description="Human friendly template name") + description: Optional[str] = Field( + default=None, description="Optional template description" + ) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) diff --git a/backend/models/sql/user.py b/backend/models/sql/user.py new file mode 100644 index 0000000..e484306 --- /dev/null +++ b/backend/models/sql/user.py @@ -0,0 +1,37 @@ +from datetime import datetime +from typing import Optional +import uuid +from sqlalchemy import Column, DateTime, String, Boolean +from sqlmodel import Field, SQLModel +from utils.datetime_utils import get_current_utc_datetime + + +class UserModel(SQLModel, table=True): + __tablename__ = "users" + + id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) + azure_oid: Optional[str] = Field( + sa_column=Column(String, unique=True, index=True, nullable=True), + default=None, + ) + email: str = Field(sa_column=Column(String, unique=True, index=True)) + display_name: str + role: str = Field(default="user") # super_admin, client_admin, user + is_active: bool = Field(sa_column=Column(Boolean, default=True, nullable=False)) + last_login_at: Optional[datetime] = Field( + sa_column=Column(DateTime(timezone=True), nullable=True), + default=None, + ) + created_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), nullable=False, default=get_current_utc_datetime + ), + ) + updated_at: datetime = Field( + sa_column=Column( + DateTime(timezone=True), + nullable=False, + default=get_current_utc_datetime, + onupdate=get_current_utc_datetime, + ), + ) diff --git a/backend/models/sql/webhook_subscription.py b/backend/models/sql/webhook_subscription.py new file mode 100644 index 0000000..7dfe075 --- /dev/null +++ b/backend/models/sql/webhook_subscription.py @@ -0,0 +1,22 @@ +import secrets +from typing import Optional +import uuid +from datetime import datetime +from sqlmodel import Column, DateTime, Field, SQLModel + +from utils.datetime_utils import get_current_utc_datetime + + +class WebhookSubscription(SQLModel, table=True): + __tablename__ = "webhook_subscriptions" + + id: str = Field( + default_factory=lambda: f"webhook-{secrets.token_hex(32)}", primary_key=True + ) + created_at: datetime = Field( + sa_column=Column(DateTime(timezone=True), nullable=False), + default_factory=get_current_utc_datetime, + ) + url: str + secret: Optional[str] = None + event: str = Field(index=True) diff --git a/backend/models/sse_response.py b/backend/models/sse_response.py new file mode 100644 index 0000000..18dc9a4 --- /dev/null +++ b/backend/models/sse_response.py @@ -0,0 +1,40 @@ +import json + +from pydantic import BaseModel + + +class SSEResponse(BaseModel): + event: str + data: str + + def to_string(self): + return f"event: {self.event}\ndata: {self.data}\n\n" + + +class SSEStatusResponse(BaseModel): + status: str + + def to_string(self): + return SSEResponse( + event="response", data=json.dumps({"type": "status", "status": self.status}) + ).to_string() + + +class SSEErrorResponse(BaseModel): + detail: str + + def to_string(self): + return SSEResponse( + event="response", data=json.dumps({"type": "error", "detail": self.detail}) + ).to_string() + + +class SSECompleteResponse(BaseModel): + key: str + value: object + + def to_string(self): + return SSEResponse( + event="response", + data=json.dumps({"type": "complete", self.key: self.value}), + ).to_string() diff --git a/backend/models/user_config.py b/backend/models/user_config.py new file mode 100644 index 0000000..da424b5 --- /dev/null +++ b/backend/models/user_config.py @@ -0,0 +1,50 @@ +from typing import Optional +from pydantic import BaseModel + + +class UserConfig(BaseModel): + LLM: Optional[str] = None + + # OpenAI + OPENAI_API_KEY: Optional[str] = None + OPENAI_MODEL: Optional[str] = None + + # Google + GOOGLE_API_KEY: Optional[str] = None + GOOGLE_MODEL: Optional[str] = None + + # Anthropic + ANTHROPIC_API_KEY: Optional[str] = None + ANTHROPIC_MODEL: Optional[str] = None + + # Ollama + OLLAMA_URL: Optional[str] = None + OLLAMA_MODEL: Optional[str] = None + + # Custom LLM + CUSTOM_LLM_URL: Optional[str] = None + CUSTOM_LLM_API_KEY: Optional[str] = None + CUSTOM_MODEL: Optional[str] = None + + # Image Provider + DISABLE_IMAGE_GENERATION: Optional[bool] = None + IMAGE_PROVIDER: Optional[str] = None + PEXELS_API_KEY: Optional[str] = None + PIXABAY_API_KEY: Optional[str] = None + + # ComfyUI + COMFYUI_URL: Optional[str] = None + COMFYUI_WORKFLOW: Optional[str] = None + + # Dalle 3 Quality + DALL_E_3_QUALITY: Optional[str] = None + # Gpt Image 1.5 Quality + GPT_IMAGE_1_5_QUALITY: Optional[str] = None + + # Reasoning + TOOL_CALLS: Optional[bool] = None + DISABLE_THINKING: Optional[bool] = None + EXTENDED_REASONING: Optional[bool] = None + + # Web Search + WEB_GROUNDING: Optional[bool] = None diff --git a/backend/openai_spec.json b/backend/openai_spec.json new file mode 100644 index 0000000..b226c5e --- /dev/null +++ b/backend/openai_spec.json @@ -0,0 +1,294 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "FastAPI", + "version": "0.1.0" + }, + "paths": { + "/api/v1/ppt/presentation/generate": { + "post": { + "tags": ["Presentation"], + "summary": "Returns base URL of generated presentation's PDF or PPTX.", + "operationId": "generate_presentation", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_generate_presentation_api_api_v1_ppt_presentation_generate_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresentationPathAndEditPath" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/v1/ppt/template-management/summary": { + "get": { + "tags": ["template-management"], + "summary": "Get all presentations with layout counts", + "description": "Returns a list of extra custom templates available for presenation creation.", + "operationId": "templates_list", + "responses": { + "200": { + "description": "Presentations summary retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetPresentationSummaryResponse" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Body_generate_presentation_api_api_v1_ppt_presentation_generate_post": { + "properties": { + "content": { + "type": "string", + "title": "Content", + "description": "The content for generating the presentation" + }, + "n_slides": { + "type": "integer", + "title": "N Slides", + "default": 8 + }, + "language": { + "type": "string", + "title": "Language", + "default": "English" + }, + "template": { + "type": "string", + "title": "Template", + "default": "general" + }, + "files": { + "anyOf": [ + { + "items": { + "type": "string", + "format": "binary" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Files" + }, + "export_as": { + "type": "string", + "enum": ["pptx", "pdf"], + "title": "Export As", + "default": "pptx" + } + }, + "type": "object", + "required": ["content"], + "title": "Body_generate_presentation_api_api_v1_ppt_presentation_generate_post" + }, + "PresentationPathAndEditPath": { + "properties": { + "presentation_id": { + "type": "string", + "title": "Presentation Id" + }, + "path": { + "type": "string", + "title": "Path" + }, + "edit_path": { + "type": "string", + "title": "Edit Path" + } + }, + "type": "object", + "required": ["presentation_id", "path", "edit_path"], + "title": "PresentationPathAndEditPath" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": ["loc", "msg", "type"], + "title": "ValidationError" + }, + "GetPresentationSummaryResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success" + }, + "presentations": { + "items": { + "$ref": "#/components/schemas/PresentationSummary" + }, + "type": "array", + "title": "Presentations" + }, + "total_presentations": { + "type": "integer", + "title": "Total Presentations" + }, + "total_layouts": { + "type": "integer", + "title": "Total Layouts" + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Message" + } + }, + "type": "object", + "required": ["success", "presentations", "total_presentations", "total_layouts"], + "title": "GetPresentationSummaryResponse" + }, + "PresentationSummary": { + "properties": { + "presentation_id": { + "type": "string", + "title": "Presentation Id" + }, + "layout_count": { + "type": "integer", + "title": "Layout Count" + }, + "last_updated_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Last Updated At" + }, + "template": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Template" + } + }, + "type": "object", + "required": ["presentation_id", "layout_count"], + "title": "PresentationSummary" + }, + "ErrorResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "default": false + }, + "detail": { + "type": "string", + "title": "Detail" + }, + "error_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error Code" + } + }, + "type": "object", + "required": ["detail"], + "title": "ErrorResponse" + } + } + } +} \ No newline at end of file diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 0000000..b9dd15d --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,36 @@ +[project] +name = "presenton-backend" +version = "0.1.0" +description = "Add your description here" +requires-python = ">=3.11,<3.12" +dependencies = [ + "aiohttp>=3.12.15", + "aiomysql>=0.2.0", + "aiosqlite>=0.21.0", + "anthropic>=0.60.0", + "asyncpg>=0.30.0", + "chromadb>=1.0.15", + "dirtyjson>=1.0.8", + "docling>=2.43.0", + "fastapi[standard]>=0.116.1", + "fastmcp>=2.11.0", + "google-genai>=1.28.0", + "nltk>=3.9.1", + "openai>=1.98.0", + "pathvalidate>=3.3.1", + "pdfplumber>=0.11.7", + "pytest>=8.4.1", + "python-pptx>=1.0.2", + "redis>=6.2.0", + "sqlmodel>=0.0.24", + "alembic>=1.15", + "msal>=1.31", + "python-jose[cryptography]>=3.3", +] + +[[tool.uv.index]] +url = "https://download.pytorch.org/whl/cpu" + +[tool.setuptools.packages.find] +where = ["."] +include = ["api*", "enums*", "models*", "services*", "constants*", "utils*", "scripts*", "workers*", "migrations*"] diff --git a/backend/scripts/__init__.py b/backend/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/scripts/seed.py b/backend/scripts/seed.py new file mode 100644 index 0000000..810e12e --- /dev/null +++ b/backend/scripts/seed.py @@ -0,0 +1,35 @@ +"""Seed the database with the default Oliver Team.""" +import asyncio +import uuid +from datetime import datetime, timezone + +from sqlmodel import select +from services.database import async_session_maker +from models.sql.team import TeamModel + + +async def seed(): + async with async_session_maker() as session: + result = await session.execute( + select(TeamModel).where(TeamModel.is_default == True) # noqa: E712 + ) + existing = result.scalar_one_or_none() + + if existing: + print(f"Oliver Team already exists (id: {existing.id}), skipping seed.") + return + + oliver_team = TeamModel( + id=uuid.uuid4(), + name="Oliver Team", + client_id=None, + is_default=True, + created_at=datetime.now(timezone.utc), + ) + session.add(oliver_team) + await session.commit() + print(f"Created Oliver Team with id: {oliver_team.id}") + + +if __name__ == "__main__": + asyncio.run(seed()) diff --git a/backend/server.py b/backend/server.py new file mode 100644 index 0000000..4fd1ddc --- /dev/null +++ b/backend/server.py @@ -0,0 +1,21 @@ +import uvicorn +import argparse + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Run the FastAPI server") + parser.add_argument( + "--port", type=int, required=True, help="Port number to run the server on" + ) + parser.add_argument( + "--reload", type=str, default="false", help="Reload the server on code changes" + ) + args = parser.parse_args() + reload = args.reload == "true" + + uvicorn.run( + "api.main:app", + host="127.0.0.1", + port=args.port, + log_level="info", + reload=reload, + ) diff --git a/backend/services/__init__.py b/backend/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/services/access_service.py b/backend/services/access_service.py new file mode 100644 index 0000000..83aac65 --- /dev/null +++ b/backend/services/access_service.py @@ -0,0 +1,56 @@ +"""Service for determining resource access based on user role and team memberships.""" +import uuid +from typing import List + +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.sql.client import ClientModel +from models.sql.team import TeamModel +from models.sql.team_membership import TeamMembershipModel +from models.sql.user import UserModel + + +async def get_accessible_client_ids(user: UserModel, session: AsyncSession) -> List[uuid.UUID]: + """Return client IDs the user can access. + + super_admin: all active clients. + Others: clients linked via team memberships. + """ + if user.role == "super_admin": + result = await session.execute( + select(ClientModel.id).where(ClientModel.is_active == True) # noqa: E712 + ) + return list(result.scalars().all()) + + result = await session.execute( + select(TeamModel.client_id) + .join(TeamMembershipModel, TeamMembershipModel.team_id == TeamModel.id) + .where( + TeamMembershipModel.user_id == user.id, + TeamModel.client_id.isnot(None), + ) + .distinct() + ) + return list(result.scalars().all()) + + +async def get_accessible_clients(user: UserModel, session: AsyncSession) -> List[ClientModel]: + """Return full ClientModel objects the user can access.""" + if user.role == "super_admin": + result = await session.execute( + select(ClientModel).where(ClientModel.is_active == True) # noqa: E712 + ) + return list(result.scalars().all()) + + client_ids = await get_accessible_client_ids(user, session) + if not client_ids: + return [] + + result = await session.execute( + select(ClientModel).where( + ClientModel.id.in_(client_ids), + ClientModel.is_active == True, # noqa: E712 + ) + ) + return list(result.scalars().all()) diff --git a/backend/services/audit_service.py b/backend/services/audit_service.py new file mode 100644 index 0000000..12d1c87 --- /dev/null +++ b/backend/services/audit_service.py @@ -0,0 +1,126 @@ +"""Service for creating and querying audit log entries.""" +import asyncio +import csv +import io +import json +import uuid +from datetime import datetime +from typing import Optional + +from sqlalchemy.ext.asyncio import AsyncSession +from sqlmodel import select + +from models.sql.audit_log import AuditLogModel +from services.database import async_session_maker + + +def log( + user_id: Optional[uuid.UUID], + action: str, + resource_type: str, + resource_id: Optional[uuid.UUID] = None, + client_id: Optional[uuid.UUID] = None, + details: Optional[dict] = None, + ip_address: Optional[str] = None, +) -> None: + """Fire-and-forget audit log entry creation.""" + asyncio.create_task( + _write_log(user_id, action, resource_type, resource_id, client_id, details, ip_address) + ) + + +async def _write_log( + user_id: Optional[uuid.UUID], + action: str, + resource_type: str, + resource_id: Optional[uuid.UUID], + client_id: Optional[uuid.UUID], + details: Optional[dict], + ip_address: Optional[str], +) -> None: + try: + async with async_session_maker() as session: + entry = AuditLogModel( + user_id=user_id, + action=action, + resource_type=resource_type, + resource_id=resource_id, + client_id=client_id, + details=details, + ip_address=ip_address, + ) + session.add(entry) + await session.commit() + except Exception as e: + # Audit logging should never break the request + print(f"Audit log error: {e}") + + +async def query( + session: AsyncSession, + user_id: Optional[uuid.UUID] = None, + action: Optional[str] = None, + resource_type: Optional[str] = None, + client_id: Optional[uuid.UUID] = None, + date_from: Optional[datetime] = None, + date_to: Optional[datetime] = None, + offset: int = 0, + limit: int = 50, +) -> list: + """Query audit logs with optional filters.""" + q = select(AuditLogModel) + + if user_id: + q = q.where(AuditLogModel.user_id == user_id) + if action: + q = q.where(AuditLogModel.action == action) + if resource_type: + q = q.where(AuditLogModel.resource_type == resource_type) + if client_id: + q = q.where(AuditLogModel.client_id == client_id) + if date_from: + q = q.where(AuditLogModel.created_at >= date_from) + if date_to: + q = q.where(AuditLogModel.created_at <= date_to) + + q = q.order_by(AuditLogModel.created_at.desc()).offset(offset).limit(limit) + result = await session.execute(q) + return list(result.scalars().all()) + + +def export_csv(logs: list) -> str: + """Export audit logs as CSV string.""" + output = io.StringIO() + writer = csv.writer(output) + writer.writerow(["id", "user_id", "action", "resource_type", "resource_id", "client_id", "details", "ip_address", "created_at"]) + for log_entry in logs: + writer.writerow([ + str(log_entry.id), + str(log_entry.user_id) if log_entry.user_id else "", + log_entry.action, + log_entry.resource_type, + str(log_entry.resource_id) if log_entry.resource_id else "", + str(log_entry.client_id) if log_entry.client_id else "", + json.dumps(log_entry.details) if log_entry.details else "", + log_entry.ip_address or "", + log_entry.created_at.isoformat() if log_entry.created_at else "", + ]) + return output.getvalue() + + +def export_json(logs: list) -> str: + """Export audit logs as JSON string.""" + entries = [] + for log_entry in logs: + entries.append({ + "id": str(log_entry.id), + "user_id": str(log_entry.user_id) if log_entry.user_id else None, + "action": log_entry.action, + "resource_type": log_entry.resource_type, + "resource_id": str(log_entry.resource_id) if log_entry.resource_id else None, + "client_id": str(log_entry.client_id) if log_entry.client_id else None, + "details": log_entry.details, + "ip_address": log_entry.ip_address, + "created_at": log_entry.created_at.isoformat() if log_entry.created_at else None, + }) + return json.dumps(entries, indent=2) diff --git a/backend/services/auth_service.py b/backend/services/auth_service.py new file mode 100644 index 0000000..aa712c0 --- /dev/null +++ b/backend/services/auth_service.py @@ -0,0 +1,154 @@ +import os +import uuid +from datetime import datetime, timedelta, timezone +from typing import Optional + +from jose import jwt, JWTError +from sqlmodel import select + +from models.sql.user import UserModel +from models.sql.team import TeamModel +from models.sql.team_membership import TeamMembershipModel + + +class AuthService: + def __init__(self): + self.tenant_id = os.getenv("AZURE_AD_TENANT_ID") + self.client_id = os.getenv("AZURE_AD_CLIENT_ID") + self.client_secret = os.getenv("AZURE_AD_CLIENT_SECRET") + self.redirect_uri = os.getenv("AZURE_AD_REDIRECT_URI", "http://localhost/api/v1/auth/callback") + self.jwt_secret = os.getenv("JWT_SECRET_KEY", "dev-secret-change-me") + self.jwt_algorithm = "HS256" + self.jwt_expiry_hours = 24 + self.dev_password = os.getenv("DEV_AUTH_PASSWORD", "devpass123") + + self._msal_app = None + + @property + def is_dev_mode(self) -> bool: + return not self.tenant_id + + @property + def msal_app(self): + if self._msal_app is None and not self.is_dev_mode: + import msal + self._msal_app = msal.ConfidentialClientApplication( + self.client_id, + authority=f"https://login.microsoftonline.com/{self.tenant_id}", + client_credential=self.client_secret, + ) + return self._msal_app + + def get_authorization_url(self) -> str: + if self.is_dev_mode: + raise ValueError("Azure AD not configured — use dev login") + result = self.msal_app.get_authorization_request_url( + scopes=["User.Read"], + redirect_uri=self.redirect_uri, + ) + return result + + async def exchange_code_for_token(self, code: str) -> dict: + if self.is_dev_mode: + raise ValueError("Azure AD not configured — use dev login") + result = self.msal_app.acquire_token_by_authorization_code( + code, + scopes=["User.Read"], + redirect_uri=self.redirect_uri, + ) + if "error" in result: + raise ValueError(f"Token exchange failed: {result.get('error_description', result.get('error'))}") + return result + + def create_session_jwt(self, user: UserModel) -> str: + payload = { + "sub": str(user.id), + "email": user.email, + "role": user.role, + "exp": datetime.now(timezone.utc) + timedelta(hours=self.jwt_expiry_hours), + "iat": datetime.now(timezone.utc), + } + return jwt.encode(payload, self.jwt_secret, algorithm=self.jwt_algorithm) + + def validate_token(self, token: str) -> Optional[dict]: + try: + payload = jwt.decode(token, self.jwt_secret, algorithms=[self.jwt_algorithm]) + return payload + except JWTError: + return None + + async def get_or_create_user(self, claims: dict, session) -> UserModel: + """Find user by azure_oid or create new one. Auto-adds to Oliver Team.""" + azure_oid = claims.get("oid") + email = claims.get("preferred_username") or claims.get("email") + display_name = claims.get("name", email) + + # Try find by azure_oid + if azure_oid: + result = await session.execute( + select(UserModel).where(UserModel.azure_oid == azure_oid) + ) + user = result.scalar_one_or_none() + if user: + user.last_login_at = datetime.now(timezone.utc) + user.display_name = display_name + session.add(user) + await session.commit() + return user + + # Try find by email + result = await session.execute( + select(UserModel).where(UserModel.email == email) + ) + user = result.scalar_one_or_none() + if user: + if azure_oid and not user.azure_oid: + user.azure_oid = azure_oid + user.last_login_at = datetime.now(timezone.utc) + user.display_name = display_name + session.add(user) + await session.commit() + return user + + # Create new user + user = UserModel( + azure_oid=azure_oid, + email=email, + display_name=display_name, + role="user", + is_active=True, + last_login_at=datetime.now(timezone.utc), + created_at=datetime.now(timezone.utc), + updated_at=datetime.now(timezone.utc), + ) + session.add(user) + await session.flush() + + # Auto-add to Oliver Team + oliver_result = await session.execute( + select(TeamModel).where(TeamModel.is_default == True) # noqa: E712 + ) + oliver_team = oliver_result.scalar_one_or_none() + if oliver_team: + membership = TeamMembershipModel( + user_id=user.id, + team_id=oliver_team.id, + assigned_at=datetime.now(timezone.utc), + ) + session.add(membership) + + await session.commit() + return user + + async def dev_login(self, email: str, password: str, session) -> Optional[UserModel]: + """Dev-mode login: validate password, get or create user.""" + if not self.is_dev_mode: + return None + if password != self.dev_password: + return None + + claims = { + "email": email, + "name": email.split("@")[0].replace(".", " ").title(), + } + return await self.get_or_create_user(claims, session) diff --git a/backend/services/concurrent_service.py b/backend/services/concurrent_service.py new file mode 100644 index 0000000..e2c922f --- /dev/null +++ b/backend/services/concurrent_service.py @@ -0,0 +1,35 @@ +import asyncio +from asyncio import Task +from typing import Any, Callable, Coroutine, Optional + + +class ConcurrentService: + def __init__(self): + self._background_tasks = set[Task]() + + def run_task( + self, + delay: Optional[int], + callable: Callable[..., Coroutine[Any, Any, Any]], + *args, + **kwargs, + ): + async def wrapper(): + if delay: + await asyncio.sleep(delay) + await callable(*args, **kwargs) + + task = asyncio.create_task(wrapper()) + + print(f"Running task: {task} - executing {callable.__name__}") + + self._background_tasks.add(task) + task.add_done_callback(self.on_task_done) + + def on_task_done(self, task: Task): + print(f"Task done: {task}") + + self._background_tasks.discard(task) + + +CONCURRENT_SERVICE = ConcurrentService() diff --git a/backend/services/database.py b/backend/services/database.py new file mode 100644 index 0000000..e0ce806 --- /dev/null +++ b/backend/services/database.py @@ -0,0 +1,24 @@ +from collections.abc import AsyncGenerator +from sqlalchemy.ext.asyncio import ( + AsyncEngine, + create_async_engine, + async_sessionmaker, + AsyncSession, +) +from utils.db_utils import get_database_url_and_connect_args + + +database_url, connect_args = get_database_url_and_connect_args() + +sql_engine: AsyncEngine = create_async_engine(database_url, connect_args=connect_args) +async_session_maker = async_sessionmaker(sql_engine, expire_on_commit=False) + + +async def get_async_session() -> AsyncGenerator[AsyncSession, None]: + async with async_session_maker() as session: + yield session + + +async def create_db_and_tables(): + """No-op: migrations are now handled by Alembic.""" + pass diff --git a/backend/services/docling_service.py b/backend/services/docling_service.py new file mode 100644 index 0000000..f6ae203 --- /dev/null +++ b/backend/services/docling_service.py @@ -0,0 +1,33 @@ +from docling.document_converter import ( + DocumentConverter, + PdfFormatOption, + PowerpointFormatOption, + WordFormatOption, +) +from docling.datamodel.pipeline_options import PdfPipelineOptions +from docling.datamodel.base_models import InputFormat + + +class DoclingService: + def __init__(self): + self.pipeline_options = PdfPipelineOptions() + self.pipeline_options.do_ocr = False + + self.converter = DocumentConverter( + allowed_formats=[InputFormat.PPTX, InputFormat.PDF, InputFormat.DOCX], + format_options={ + InputFormat.DOCX: WordFormatOption( + pipeline_options=self.pipeline_options, + ), + InputFormat.PPTX: PowerpointFormatOption( + pipeline_options=self.pipeline_options, + ), + InputFormat.PDF: PdfFormatOption( + pipeline_options=self.pipeline_options, + ), + }, + ) + + def parse_to_markdown(self, file_path: str) -> str: + result = self.converter.convert(file_path) + return result.document.export_to_markdown() diff --git a/backend/services/documents_loader.py b/backend/services/documents_loader.py new file mode 100644 index 0000000..548d19e --- /dev/null +++ b/backend/services/documents_loader.py @@ -0,0 +1,115 @@ +import mimetypes +from fastapi import HTTPException +import os, asyncio +from typing import List, Optional, Tuple +import pdfplumber + +from constants.documents import ( + PDF_MIME_TYPES, + POWERPOINT_TYPES, + TEXT_MIME_TYPES, + WORD_TYPES, +) +from services.docling_service import DoclingService + + +class DocumentsLoader: + + def __init__(self, file_paths: List[str]): + self._file_paths = file_paths + + self.docling_service = DoclingService() + + self._documents: List[str] = [] + self._images: List[List[str]] = [] + + @property + def documents(self): + return self._documents + + @property + def images(self): + return self._images + + async def load_documents( + self, + temp_dir: Optional[str] = None, + load_text: bool = True, + load_images: bool = False, + ): + """If load_images is True, temp_dir must be provided""" + + documents: List[str] = [] + images: List[str] = [] + + for file_path in self._file_paths: + if not os.path.exists(file_path): + raise HTTPException( + status_code=404, detail=f"File {file_path} not found" + ) + + document = "" + imgs = [] + + mime_type = mimetypes.guess_type(file_path)[0] + if mime_type in PDF_MIME_TYPES: + document, imgs = await self.load_pdf( + file_path, load_text, load_images, temp_dir + ) + elif mime_type in TEXT_MIME_TYPES: + document = await self.load_text(file_path) + elif mime_type in POWERPOINT_TYPES: + document = self.load_powerpoint(file_path) + elif mime_type in WORD_TYPES: + document = self.load_msword(file_path) + + documents.append(document) + images.append(imgs) + + self._documents = documents + self._images = images + + async def load_pdf( + self, + file_path: str, + load_text: bool, + load_images: bool, + temp_dir: Optional[str] = None, + ) -> Tuple[str, List[str]]: + image_paths = [] + document: str = "" + + if load_text: + document = self.docling_service.parse_to_markdown(file_path) + + if load_images: + image_paths = await self.get_page_images_from_pdf_async(file_path, temp_dir) + + return document, image_paths + + async def load_text(self, file_path: str) -> str: + with open(file_path, "r") as file: + return await asyncio.to_thread(file.read) + + def load_msword(self, file_path: str) -> str: + return self.docling_service.parse_to_markdown(file_path) + + def load_powerpoint(self, file_path: str) -> str: + return self.docling_service.parse_to_markdown(file_path) + + @classmethod + def get_page_images_from_pdf(cls, file_path: str, temp_dir: str) -> List[str]: + with pdfplumber.open(file_path) as pdf: + images = [] + for page in pdf.pages: + img = page.to_image(resolution=150) + image_path = os.path.join(temp_dir, f"page_{page.page_number}.png") + img.save(image_path) + images.append(image_path) + return images + + @classmethod + async def get_page_images_from_pdf_async(cls, file_path: str, temp_dir: str): + return await asyncio.to_thread( + cls.get_page_images_from_pdf, file_path, temp_dir + ) diff --git a/backend/services/html_to_text_runs_service.py b/backend/services/html_to_text_runs_service.py new file mode 100644 index 0000000..25a441a --- /dev/null +++ b/backend/services/html_to_text_runs_service.py @@ -0,0 +1,65 @@ +from html.parser import HTMLParser +from typing import List, Optional + +from models.pptx_models import PptxFontModel, PptxTextRunModel + + +class InlineHTMLToRunsParser(HTMLParser): + def __init__(self, base_font: PptxFontModel): + super().__init__(convert_charrefs=True) + self.base_font = base_font + self.tag_stack: List[str] = [] + self.text_runs: List[PptxTextRunModel] = [] + + def _current_font(self) -> PptxFontModel: + font_json = self.base_font.model_dump() + is_bold = any(tag in ("strong", "b") for tag in self.tag_stack) + is_italic = any(tag in ("em", "i") for tag in self.tag_stack) + is_underline = any(tag == "u" for tag in self.tag_stack) + is_strike = any(tag in ("s", "strike", "del") for tag in self.tag_stack) + is_code = any(tag == "code" for tag in self.tag_stack) + + if is_bold: + font_json["font_weight"] = 700 + if is_italic: + font_json["italic"] = True + if is_underline: + font_json["underline"] = True + if is_strike: + font_json["strike"] = True + if is_code: + font_json["name"] = "Courier New" + + return PptxFontModel(**font_json) + + def handle_starttag(self, tag, attrs): + tag = tag.lower() + if tag == "br": + self.text_runs.append(PptxTextRunModel(text="\n")) + return + self.tag_stack.append(tag) + + def handle_endtag(self, tag): + tag = tag.lower() + for i in range(len(self.tag_stack) - 1, -1, -1): + if self.tag_stack[i] == tag: + del self.tag_stack[i] + break + + def handle_data(self, data): + if data == "": + return + self.text_runs.append(PptxTextRunModel(text=data, font=self._current_font())) + + +def parse_html_text_to_text_runs( + text: str, base_font: Optional[PptxFontModel] = None +) -> List[PptxTextRunModel]: + normalized_text = text.replace("\r\n", "\n").replace("\r", "\n") + normalized_text = normalized_text.replace("\n", "
") + + parser = InlineHTMLToRunsParser(base_font if base_font else PptxFontModel()) + parser.feed(normalized_text) + return parser.text_runs + + diff --git a/backend/services/icon_finder_service.py b/backend/services/icon_finder_service.py new file mode 100644 index 0000000..3bf75c3 --- /dev/null +++ b/backend/services/icon_finder_service.py @@ -0,0 +1,56 @@ +import asyncio +import json +import chromadb +from chromadb.config import Settings +from chromadb.utils.embedding_functions import ONNXMiniLM_L6_V2 + + +class IconFinderService: + def __init__(self): + self.collection_name = "icons" + self.client = chromadb.PersistentClient( + path="chroma", settings=Settings(anonymized_telemetry=False) + ) + print("Initializing icons collection...") + self._initialize_icons_collection() + print("Icons collection initialized.") + + def _initialize_icons_collection(self): + self.embedding_function = ONNXMiniLM_L6_V2() + self.embedding_function.DOWNLOAD_PATH = "chroma/models" + self.embedding_function._download_model_if_not_exists() + try: + self.collection = self.client.get_collection( + self.collection_name, embedding_function=self.embedding_function + ) + except Exception: + with open("assets/icons.json", "r") as f: + icons = json.load(f) + + documents = [] + ids = [] + + for i, each in enumerate(icons["icons"]): + if each["name"].split("-")[-1] == "bold": + doc_text = f"{each['name']} {each['tags']}" + documents.append(doc_text) + ids.append(each["name"]) + + if documents: + self.collection = self.client.create_collection( + name=self.collection_name, + embedding_function=self.embedding_function, + metadata={"hnsw:space": "cosine"}, + ) + self.collection.add(documents=documents, ids=ids) + + async def search_icons(self, query: str, k: int = 1): + result = await asyncio.to_thread( + self.collection.query, + query_texts=[query], + n_results=k, + ) + return [f"/static/icons/bold/{each}.svg" for each in result["ids"][0]] + + +ICON_FINDER_SERVICE = IconFinderService() diff --git a/backend/services/image_generation_service.py b/backend/services/image_generation_service.py new file mode 100644 index 0000000..f9ec120 --- /dev/null +++ b/backend/services/image_generation_service.py @@ -0,0 +1,415 @@ +import asyncio +import base64 +import json +import os +import aiohttp +from fastapi import HTTPException +from google import genai +from openai import NOT_GIVEN, AsyncOpenAI +from models.image_prompt import ImagePrompt +from models.sql.image_asset import ImageAsset +from utils.get_env import ( + get_dall_e_3_quality_env, + get_gpt_image_1_5_quality_env, + get_pexels_api_key_env, +) +from utils.get_env import get_pixabay_api_key_env +from utils.get_env import get_comfyui_url_env +from utils.get_env import get_comfyui_workflow_env +from utils.image_provider import ( + is_gpt_image_1_5_selected, + is_image_generation_disabled, + is_pixels_selected, + is_pixabay_selected, + is_gemini_flash_selected, + is_nanobanana_pro_selected, + is_dalle3_selected, + is_comfyui_selected, +) +import uuid + + +class ImageGenerationService: + def __init__(self, output_directory: str): + self.output_directory = output_directory + self.is_image_generation_disabled = is_image_generation_disabled() + self.image_gen_func = self.get_image_gen_func() + + def get_image_gen_func(self): + if self.is_image_generation_disabled: + return None + + if is_pixabay_selected(): + return self.get_image_from_pixabay + elif is_pixels_selected(): + return self.get_image_from_pexels + elif is_gemini_flash_selected(): + return self.generate_image_gemini_flash + elif is_nanobanana_pro_selected(): + return self.generate_image_nanobanana_pro + elif is_dalle3_selected(): + return self.generate_image_openai_dalle3 + elif is_gpt_image_1_5_selected(): + return self.generate_image_openai_gpt_image_1_5 + elif is_comfyui_selected(): + return self.generate_image_comfyui + return None + + def is_stock_provider_selected(self): + return is_pixels_selected() or is_pixabay_selected() + + async def generate_image(self, prompt: ImagePrompt) -> str | ImageAsset: + """ + Generates an image based on the provided prompt. + - If no image generation function is available, returns a placeholder image. + - If the stock provider is selected, it uses the prompt directly, + otherwise it uses the full image prompt with theme. + - Output Directory is used for saving the generated image not the stock provider. + """ + if self.is_image_generation_disabled: + print("Image generation is disabled. Using placeholder image.") + return "/static/images/placeholder.jpg" + + if not self.image_gen_func: + print("No image generation function found. Using placeholder image.") + return "/static/images/placeholder.jpg" + + image_prompt = prompt.get_image_prompt( + with_theme=not self.is_stock_provider_selected() + ) + print(f"Request - Generating Image for {image_prompt}") + + try: + if self.is_stock_provider_selected(): + image_path = await self.image_gen_func(image_prompt) + else: + image_path = await self.image_gen_func( + image_prompt, self.output_directory + ) + if image_path: + if image_path.startswith("http"): + return image_path + elif os.path.exists(image_path): + return ImageAsset( + path=image_path, + is_uploaded=False, + extras={ + "prompt": prompt.prompt, + "theme_prompt": prompt.theme_prompt, + }, + ) + raise Exception(f"Image not found at {image_path}") + + except Exception as e: + print(f"Error generating image: {e}") + return "/static/images/placeholder.jpg" + + async def generate_image_openai( + self, prompt: str, output_directory: str, model: str, quality: str + ) -> str: + client = AsyncOpenAI() + result = await client.images.generate( + model=model, + prompt=prompt, + n=1, + quality=quality, + response_format="b64_json" if model == "dall-e-3" else NOT_GIVEN, + size="1024x1024", + ) + image_path = os.path.join(output_directory, f"{uuid.uuid4()}.png") + with open(image_path, "wb") as f: + f.write(base64.b64decode(result.data[0].b64_json)) + return image_path + + async def generate_image_openai_dalle3( + self, prompt: str, output_directory: str + ) -> str: + return await self.generate_image_openai( + prompt, + output_directory, + "dall-e-3", + get_dall_e_3_quality_env() or "standard", + ) + + async def generate_image_openai_gpt_image_1_5( + self, prompt: str, output_directory: str + ) -> str: + return await self.generate_image_openai( + prompt, + output_directory, + "gpt-image-1.5", + get_gpt_image_1_5_quality_env() or "medium", + ) + + async def _generate_image_google( + self, prompt: str, output_directory: str, model: str + ) -> str: + """Base method for Google image generation models.""" + client = genai.Client() + response = await asyncio.to_thread( + client.models.generate_content, + model=model, + contents=[prompt], + ) + + image_path = None + for part in response.candidates[0].content.parts: + if part.inline_data is not None: + image = part.as_image() + image_path = os.path.join(output_directory, f"{uuid.uuid4()}.jpg") + image.save(image_path) + + if not image_path: + raise HTTPException( + status_code=500, detail=f"No image generated by google {model}" + ) + + return image_path + + async def generate_image_gemini_flash( + self, prompt: str, output_directory: str + ) -> str: + """Generate image using Gemini Flash (gemini-2.5-flash-image-preview).""" + return await self._generate_image_google( + prompt, output_directory, "gemini-2.5-flash-image-preview" + ) + + async def generate_image_nanobanana_pro( + self, prompt: str, output_directory: str + ) -> str: + """Generate image using NanoBanana Pro (gemini-3-pro-image-preview).""" + return await self._generate_image_google( + prompt, output_directory, "gemini-3-pro-image-preview" + ) + + async def get_image_from_pexels(self, prompt: str) -> str: + async with aiohttp.ClientSession(trust_env=True) as session: + response = await session.get( + f"https://api.pexels.com/v1/search?query={prompt}&per_page=1", + headers={"Authorization": f"{get_pexels_api_key_env()}"}, + ) + data = await response.json() + image_url = data["photos"][0]["src"]["large"] + return image_url + + async def get_image_from_pixabay(self, prompt: str) -> str: + async with aiohttp.ClientSession(trust_env=True) as session: + response = await session.get( + f"https://pixabay.com/api/?key={get_pixabay_api_key_env()}&q={prompt}&image_type=photo&per_page=3" + ) + data = await response.json() + image_url = data["hits"][0]["largeImageURL"] + return image_url + + async def generate_image_comfyui(self, prompt: str, output_directory: str) -> str: + """ + Generate image using ComfyUI workflow API. + + User provides: + - COMFYUI_URL: ComfyUI server URL (e.g., http://192.168.1.7:8188) + - COMFYUI_WORKFLOW: Workflow JSON exported from ComfyUI + + The workflow should have a CLIPTextEncode node with "Positive" in the title + where the prompt will be injected. + + Args: + prompt: The text prompt for image generation + output_directory: Directory to save the generated image + + Returns: + Path to the generated image file + """ + comfyui_url = get_comfyui_url_env() + workflow_json = get_comfyui_workflow_env() + + if not comfyui_url: + raise ValueError("COMFYUI_URL environment variable is not set") + + if not workflow_json: + raise ValueError( + "COMFYUI_WORKFLOW environment variable is not set. Please provide a ComfyUI workflow JSON." + ) + + # Ensure URL doesn't have trailing slash + comfyui_url = comfyui_url.rstrip("/") + + # Parse the workflow JSON + try: + workflow = json.loads(workflow_json) + except json.JSONDecodeError as e: + raise ValueError(f"Invalid workflow JSON: {str(e)}") + + # Find and update the positive prompt node + workflow = self._inject_prompt_into_workflow(workflow, prompt) + + async with aiohttp.ClientSession(trust_env=True) as session: + # Step 1: Submit workflow + prompt_id = await self._submit_comfyui_workflow( + session, comfyui_url, workflow + ) + + # Step 2: Wait for completion + status_data = await self._wait_for_comfyui_completion( + session, comfyui_url, prompt_id + ) + + # Step 3: Download the generated image + image_path = await self._download_comfyui_image( + session, comfyui_url, status_data, prompt_id, output_directory + ) + + return image_path + + def _inject_prompt_into_workflow(self, workflow: dict, prompt: str) -> dict: + """ + Find the prompt node in the workflow and inject the prompt text. + Looks for a node with title 'Input Prompt' (case-insensitive). + + User must rename their prompt node to 'Input Prompt' in ComfyUI. + """ + for node_id, node_data in workflow.items(): + meta = node_data.get("_meta", {}) + title = meta.get("title", "").lower() + + if title == "input prompt": + if "inputs" in node_data and "text" in node_data["inputs"]: + node_data["inputs"]["text"] = prompt + print( + f"Injected prompt into node {node_id}: {meta.get('title', '')}" + ) + return workflow + + raise ValueError( + "Could not find a node with title 'Input Prompt' in the workflow. Please rename your prompt node to 'Input Prompt' in ComfyUI." + ) + + async def _submit_comfyui_workflow( + self, session: aiohttp.ClientSession, comfyui_url: str, workflow: dict + ) -> str: + """Submit workflow to ComfyUI and return the prompt_id.""" + client_id = str(uuid.uuid4()) + payload = {"prompt": workflow, "client_id": client_id} + + response = await session.post( + f"{comfyui_url}/prompt", + json=payload, + timeout=aiohttp.ClientTimeout(total=30), + ) + + if response.status != 200: + error_text = await response.text() + raise Exception(f"Failed to submit workflow to ComfyUI: {error_text}") + + data = await response.json() + prompt_id = data.get("prompt_id") + + if not prompt_id: + raise Exception("No prompt_id returned from ComfyUI") + + print(f"ComfyUI workflow submitted. Prompt ID: {prompt_id}") + return prompt_id + + async def _wait_for_comfyui_completion( + self, + session: aiohttp.ClientSession, + comfyui_url: str, + prompt_id: str, + timeout: int = 300, + poll_interval: int = 4, + ) -> dict: + """Poll ComfyUI history endpoint until workflow completes.""" + start_time = asyncio.get_event_loop().time() + + while True: + elapsed = asyncio.get_event_loop().time() - start_time + if elapsed > timeout: + raise Exception(f"ComfyUI workflow timed out after {timeout} seconds") + + await asyncio.sleep(poll_interval) + + response = await session.get( + f"{comfyui_url}/history/{prompt_id}", + timeout=aiohttp.ClientTimeout(total=30), + ) + + if response.status != 200: + continue + + try: + status_data = await response.json() + except Exception as _: + continue + + if prompt_id in status_data: + execution_data = status_data[prompt_id] + + # Check for completion + if "status" in execution_data: + status = execution_data["status"] + if status.get("completed", False): + print("ComfyUI workflow completed successfully") + return status_data + if "error" in status: + raise Exception(f"ComfyUI workflow error: {status['error']}") + + # Also check if outputs exist (alternative completion check) + if "outputs" in execution_data and execution_data["outputs"]: + print("ComfyUI workflow completed (outputs found)") + return status_data + + print(f"Waiting for ComfyUI workflow... ({int(elapsed)}s)") + + async def _download_comfyui_image( + self, + session: aiohttp.ClientSession, + comfyui_url: str, + status_data: dict, + prompt_id: str, + output_directory: str, + ) -> str: + """Download the generated image from ComfyUI.""" + if prompt_id not in status_data: + raise Exception("Prompt ID not found in status data") + + outputs = status_data[prompt_id].get("outputs", {}) + + if not outputs: + raise Exception("No outputs found in ComfyUI response") + + # Find the first image in outputs + for node_id, node_output in outputs.items(): + if "images" in node_output: + for image_info in node_output["images"]: + filename = image_info["filename"] + subfolder = image_info.get("subfolder", "") + + # Build view params + params = {"filename": filename, "type": "output"} + if subfolder: + params["subfolder"] = subfolder + + # Download the image + response = await session.get( + f"{comfyui_url}/view", + params=params, + timeout=aiohttp.ClientTimeout(total=60), + ) + + if response.status == 200: + image_data = await response.read() + + # Determine extension + ext = filename.split(".")[-1] if "." in filename else "png" + image_path = os.path.join( + output_directory, f"{uuid.uuid4()}.{ext}" + ) + + with open(image_path, "wb") as f: + f.write(image_data) + + print(f"Downloaded image from ComfyUI: {image_path}") + return image_path + else: + raise Exception(f"Failed to download image: {response.status}") + + raise Exception("No images found in ComfyUI outputs") diff --git a/backend/services/llm_client.py b/backend/services/llm_client.py new file mode 100644 index 0000000..9662122 --- /dev/null +++ b/backend/services/llm_client.py @@ -0,0 +1,1615 @@ +import asyncio +import dirtyjson +import json +from typing import AsyncGenerator, List, Optional +from fastapi import HTTPException +from openai import AsyncOpenAI +from openai.types.chat.chat_completion_chunk import ( + ChatCompletionChunk as OpenAIChatCompletionChunk, +) +from google import genai +from google.genai.types import Content as GoogleContent, Part as GoogleContentPart +from google.genai.types import ( + GenerateContentConfig, + GoogleSearch, + ToolConfig as GoogleToolConfig, + FunctionCallingConfig as GoogleFunctionCallingConfig, + FunctionCallingConfigMode as GoogleFunctionCallingConfigMode, +) +from google.genai.types import Tool as GoogleTool +from anthropic import AsyncAnthropic +from anthropic.types import Message as AnthropicMessage +from anthropic import MessageStreamEvent as AnthropicMessageStreamEvent +from enums.llm_provider import LLMProvider +from models.llm_message import ( + AnthropicAssistantMessage, + AnthropicUserMessage, + GoogleAssistantMessage, + GoogleToolCallMessage, + OpenAIAssistantMessage, + LLMMessage, + LLMSystemMessage, + LLMUserMessage, +) +from models.llm_tool_call import ( + AnthropicToolCall, + GoogleToolCall, + LLMToolCall, + OpenAIToolCall, + OpenAIToolCallFunction, +) +from models.llm_tools import LLMDynamicTool, LLMTool +from services.llm_tool_calls_handler import LLMToolCallsHandler +from utils.async_iterator import iterator_to_async +from utils.dummy_functions import do_nothing_async +from utils.get_env import ( + get_anthropic_api_key_env, + get_custom_llm_api_key_env, + get_custom_llm_url_env, + get_disable_thinking_env, + get_google_api_key_env, + get_ollama_url_env, + get_openai_api_key_env, + get_tool_calls_env, + get_web_grounding_env, +) +from utils.llm_provider import get_llm_provider, get_model +from utils.parsers import parse_bool_or_none +from utils.schema_utils import ( + ensure_strict_json_schema, + flatten_json_schema, + remove_titles_from_schema, +) + + +class LLMClient: + def __init__(self): + self.llm_provider = get_llm_provider() + self._client = self._get_client() + self.tool_calls_handler = LLMToolCallsHandler(self) + + # ? Use tool calls + def use_tool_calls_for_structured_output(self) -> bool: + if self.llm_provider != LLMProvider.CUSTOM: + return False + return parse_bool_or_none(get_tool_calls_env()) or False + + # ? Web Grounding + def enable_web_grounding(self) -> bool: + if ( + self.llm_provider == LLMProvider.OLLAMA + or self.llm_provider == LLMProvider.CUSTOM + ): + return False + return parse_bool_or_none(get_web_grounding_env()) or False + + # ? Disable thinking + def disable_thinking(self) -> bool: + return parse_bool_or_none(get_disable_thinking_env()) or False + + # ? Clients + def _get_client(self): + match self.llm_provider: + case LLMProvider.OPENAI: + return self._get_openai_client() + case LLMProvider.GOOGLE: + return self._get_google_client() + case LLMProvider.ANTHROPIC: + return self._get_anthropic_client() + case LLMProvider.OLLAMA: + return self._get_ollama_client() + case LLMProvider.CUSTOM: + return self._get_custom_client() + case _: + raise HTTPException( + status_code=400, + detail="LLM Provider must be either openai, google, anthropic, ollama, or custom", + ) + + def _get_openai_client(self): + if not get_openai_api_key_env(): + raise HTTPException( + status_code=400, + detail="OpenAI API Key is not set", + ) + return AsyncOpenAI() + + def _get_google_client(self): + if not get_google_api_key_env(): + raise HTTPException( + status_code=400, + detail="Google API Key is not set", + ) + return genai.Client() + + def _get_anthropic_client(self): + if not get_anthropic_api_key_env(): + raise HTTPException( + status_code=400, + detail="Anthropic API Key is not set", + ) + return AsyncAnthropic() + + def _get_ollama_client(self): + return AsyncOpenAI( + base_url=(get_ollama_url_env() or "http://localhost:11434") + "/v1", + api_key="ollama", + ) + + def _get_custom_client(self): + if not get_custom_llm_url_env(): + raise HTTPException( + status_code=400, + detail="Custom LLM URL is not set", + ) + return AsyncOpenAI( + base_url=get_custom_llm_url_env(), + api_key=get_custom_llm_api_key_env() or "null", + ) + + # ? Prompts + def _get_system_prompt(self, messages: List[LLMMessage]) -> str: + for message in messages: + if isinstance(message, LLMSystemMessage): + return message.content + return "" + + def _get_google_messages(self, messages: List[LLMMessage]) -> List[GoogleContent]: + contents = [] + for message in messages: + if isinstance(message, LLMUserMessage): + contents.append( + GoogleContent( + role=message.role, + parts=[GoogleContentPart(text=message.content)], + ) + ) + elif isinstance(message, GoogleAssistantMessage): + contents.append(message.content) + elif isinstance(message, GoogleToolCallMessage): + contents.append( + GoogleContent( + role="user", + parts=[ + GoogleContentPart.from_function_response( + name=message.name, + response=message.response, + ) + ], + ) + ) + + return contents + + def _get_anthropic_messages(self, messages: List[LLMMessage]) -> List[LLMMessage]: + return [ + message for message in messages if not isinstance(message, LLMSystemMessage) + ] + + # ? Generate Unstructured Content + async def _generate_openai( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + extra_body: Optional[dict] = None, + depth: int = 0, + ) -> str | None: + client: AsyncOpenAI = self._client + response = await client.chat.completions.create( + model=model, + messages=[message.model_dump() for message in messages], + max_completion_tokens=max_tokens, + tools=tools, + extra_body=extra_body, + ) + + if len(response.choices) == 0: + return None + + tool_calls = response.choices[0].message.tool_calls + if tool_calls: + parsed_tool_calls = [ + OpenAIToolCall( + id=tool_call.id, + type=tool_call.type, + function=OpenAIToolCallFunction( + name=tool_call.function.name, + arguments=tool_call.function.arguments, + ), + ) + for tool_call in tool_calls + ] + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_openai( + parsed_tool_calls + ) + assistant_message = OpenAIAssistantMessage( + role="assistant", + content=response.choices[0].message.content, + tool_calls=[tool_call.model_dump() for tool_call in parsed_tool_calls], + ) + new_messages = [ + *messages, + assistant_message, + *tool_call_messages, + ] + return await self._generate_openai( + model=model, + messages=new_messages, + max_tokens=max_tokens, + tools=tools, + extra_body=extra_body, + depth=depth + 1, + ) + + return response.choices[0].message.content + + async def _generate_google( + self, + model: str, + messages: List[LLMMessage], + tools: Optional[List[dict]] = None, + max_tokens: Optional[int] = None, + depth: int = 0, + ) -> str | None: + client: genai.Client = self._client + + google_tools = None + if tools: + google_tools = [GoogleTool(function_declarations=[tool]) for tool in tools] + + response = await asyncio.to_thread( + client.models.generate_content, + model=model, + contents=self._get_google_messages(messages), + config=GenerateContentConfig( + tools=google_tools, + system_instruction=self._get_system_prompt(messages), + response_mime_type="text/plain", + max_output_tokens=max_tokens, + ), + ) + + content = response.candidates[0].content + response_parts = content.parts + + if not response_parts: + return None + + text_content = None + tool_calls = [] + for each_part in response_parts: + if each_part.function_call: + tool_calls.append( + GoogleToolCall( + id=each_part.function_call.id, + name=each_part.function_call.name, + arguments=each_part.function_call.args, + ) + ) + if each_part.text: + text_content = each_part.text + + if tool_calls: + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_google( + tool_calls + ) + new_messages = [ + *messages, + GoogleAssistantMessage( + role="assistant", + content=content, + ), + *tool_call_messages, + ] + return await self._generate_google( + model=model, + messages=new_messages, + max_tokens=max_tokens, + tools=tools, + depth=depth + 1, + ) + + return text_content + + async def _generate_anthropic( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + depth: int = 0, + ) -> str | None: + client: AsyncAnthropic = self._client + + response: AnthropicMessage = await client.messages.create( + model=model, + system=self._get_system_prompt(messages), + messages=[ + message.model_dump() + for message in self._get_anthropic_messages(messages) + ], + tools=tools, + max_tokens=max_tokens or 4000, + ) + text_content = None + tool_calls: List[AnthropicToolCall] = [] + for content in response.content: + if content.type == "text" and isinstance(content.text, str): + text_content = content.text + + if content.type == "tool_use": + tool_calls.append( + AnthropicToolCall( + id=content.id, + type=content.type, + name=content.name, + input=content.input, + ) + ) + + if tool_calls: + tool_call_messages = ( + await self.tool_calls_handler.handle_tool_calls_anthropic(tool_calls) + ) + new_messages = [ + *messages, + AnthropicAssistantMessage( + role="assistant", + content=[each.model_dump() for each in tool_calls], + ), + AnthropicUserMessage( + role="user", + content=[each.model_dump() for each in tool_call_messages], + ), + ] + return await self._generate_anthropic( + model=model, + messages=new_messages, + max_tokens=max_tokens, + tools=tools, + depth=depth + 1, + ) + + return text_content + + async def _generate_ollama( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + depth: int = 0, + ): + return await self._generate_openai( + model=model, messages=messages, max_tokens=max_tokens, depth=depth + ) + + async def _generate_custom( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + depth: int = 0, + ): + extra_body = {"enable_thinking": False} if self.disable_thinking() else None + return await self._generate_openai( + model=model, + messages=messages, + max_tokens=max_tokens, + extra_body=extra_body, + depth=depth, + ) + + async def generate( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + tools: Optional[List[type[LLMTool] | LLMDynamicTool]] = None, + ): + parsed_tools = self.tool_calls_handler.parse_tools(tools) + + content = None + match self.llm_provider: + case LLMProvider.OPENAI: + content = await self._generate_openai( + model=model, + messages=messages, + max_tokens=max_tokens, + tools=parsed_tools, + ) + case LLMProvider.GOOGLE: + content = await self._generate_google( + model=model, + messages=messages, + max_tokens=max_tokens, + tools=parsed_tools, + ) + case LLMProvider.ANTHROPIC: + content = await self._generate_anthropic( + model=model, + messages=messages, + max_tokens=max_tokens, + tools=parsed_tools, + ) + case LLMProvider.OLLAMA: + content = await self._generate_ollama( + model=model, messages=messages, max_tokens=max_tokens + ) + case LLMProvider.CUSTOM: + content = await self._generate_custom( + model=model, messages=messages, max_tokens=max_tokens + ) + if content is None: + raise HTTPException( + status_code=400, + detail="LLM did not return any content", + ) + return content + + # ? Generate Structured Content + async def _generate_openai_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + extra_body: Optional[dict] = None, + depth: int = 0, + ) -> dict | None: + client: AsyncOpenAI = self._client + response_schema = response_format + all_tools = [*tools] if tools else None + + use_tool_calls_for_structured_output = ( + self.use_tool_calls_for_structured_output() + ) + if strict and depth == 0: + response_schema = ensure_strict_json_schema( + response_schema, + path=(), + root=response_schema, + ) + if use_tool_calls_for_structured_output and depth == 0: + if all_tools is None: + all_tools = [] + all_tools.append( + self.tool_calls_handler.parse_tool( + LLMDynamicTool( + name="ResponseSchema", + description="Provide response to the user", + parameters=response_schema, + handler=do_nothing_async, + ), + strict=strict, + ) + ) + + response = await client.chat.completions.create( + model=model, + messages=[message.model_dump() for message in messages], + response_format=( + { + "type": "json_schema", + "json_schema": ( + { + "name": "ResponseSchema", + "strict": strict, + "schema": response_schema, + } + ), + } + if not use_tool_calls_for_structured_output + else None + ), + max_completion_tokens=max_tokens, + tools=all_tools, + extra_body=extra_body, + ) + + if len(response.choices) == 0: + return None + + content = response.choices[0].message.content + + tool_calls = response.choices[0].message.tool_calls + has_response_schema = False + + if tool_calls: + for tool_call in tool_calls: + if tool_call.function.name == "ResponseSchema": + content = tool_call.function.arguments + has_response_schema = True + + if not has_response_schema: + parsed_tool_calls = [ + OpenAIToolCall( + id=tool_call.id, + type=tool_call.type, + function=OpenAIToolCallFunction( + name=tool_call.function.name, + arguments=tool_call.function.arguments, + ), + ) + for tool_call in tool_calls + ] + tool_call_messages = ( + await self.tool_calls_handler.handle_tool_calls_openai( + parsed_tool_calls + ) + ) + new_messages = [ + *messages, + OpenAIAssistantMessage( + role="assistant", + content=response.choices[0].message.content, + tool_calls=[each.model_dump() for each in parsed_tool_calls], + ), + *tool_call_messages, + ] + content = await self._generate_openai_structured( + model=model, + messages=new_messages, + response_format=response_schema, + strict=strict, + max_tokens=max_tokens, + tools=all_tools, + extra_body=extra_body, + depth=depth + 1, + ) + if content: + if depth == 0: + return dict(dirtyjson.loads(content)) + return content + return None + + async def _generate_google_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + depth: int = 0, + ) -> dict | None: + client: genai.Client = self._client + + google_tools = None + if tools: + google_tools = [GoogleTool(function_declarations=[tool]) for tool in tools] + google_tools.append( + GoogleTool( + function_declarations=[ + { + "name": "ResponseSchema", + "description": "Provide response to the user", + "parameters": remove_titles_from_schema( + flatten_json_schema(response_format) + ), + } + ] + ) + ) + + response = await asyncio.to_thread( + client.models.generate_content, + model=model, + contents=self._get_google_messages(messages), + config=GenerateContentConfig( + tools=google_tools, + tool_config=( + GoogleToolConfig( + function_calling_config=GoogleFunctionCallingConfig( + mode=GoogleFunctionCallingConfigMode.ANY, + ), + ) + if tools + else None + ), + system_instruction=self._get_system_prompt(messages), + response_mime_type="application/json" if not tools else None, + response_json_schema=response_format if not tools else None, + max_output_tokens=max_tokens, + ), + ) + + content = response.candidates[0].content + response_parts = content.parts + text_content = None + + if not response_parts: + return None + + tool_calls: List[GoogleToolCall] = [] + for each_part in response_parts: + if each_part.function_call: + tool_calls.append( + GoogleToolCall( + id=each_part.function_call.id, + name=each_part.function_call.name, + arguments=each_part.function_call.args, + ) + ) + + if each_part.text: + text_content = each_part.text + + for each in tool_calls: + if each.name == "ResponseSchema": + return each.arguments + + if tool_calls: + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_google( + tool_calls + ) + new_messages = [ + *messages, + GoogleAssistantMessage( + role="assistant", + content=content, + ), + *tool_call_messages, + ] + return await self._generate_google_structured( + model=model, + messages=new_messages, + max_tokens=max_tokens, + response_format=response_format, + tools=tools, + depth=depth + 1, + ) + + if text_content: + return dict(dirtyjson.loads(text_content)) + return None + + async def _generate_anthropic_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + tools: Optional[List[dict]] = None, + max_tokens: Optional[int] = None, + depth: int = 0, + ): + client: AsyncAnthropic = self._client + response: AnthropicMessage = await client.messages.create( + model=model, + system=self._get_system_prompt(messages), + messages=[ + message.model_dump() + for message in self._get_anthropic_messages(messages) + ], + max_tokens=max_tokens or 4000, + tools=[ + { + "name": "ResponseSchema", + "description": "A response to the user's message", + "input_schema": response_format, + }, + *(tools or []), + ], + ) + tool_calls: List[AnthropicToolCall] = [] + for content in response.content: + if content.type == "tool_use": + tool_calls.append( + AnthropicToolCall( + id=content.id, + type=content.type, + name=content.name, + input=content.input, + ) + ) + + for each in tool_calls: + if each.name == "ResponseSchema": + return each.input + + if tool_calls: + tool_call_messages = ( + await self.tool_calls_handler.handle_tool_calls_anthropic(tool_calls) + ) + new_messages = [ + *messages, + AnthropicAssistantMessage( + role="assistant", + content=[each.model_dump() for each in tool_calls], + ), + AnthropicUserMessage( + role="user", + content=[each.model_dump() for each in tool_call_messages], + ), + ] + return await self._generate_anthropic_structured( + model=model, + messages=new_messages, + max_tokens=max_tokens, + response_format=response_format, + tools=tools, + depth=depth + 1, + ) + + return None + + async def _generate_ollama_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + max_tokens: Optional[int] = None, + depth: int = 0, + ): + return await self._generate_openai_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + depth=depth, + ) + + async def _generate_custom_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + max_tokens: Optional[int] = None, + depth: int = 0, + ): + extra_body = {"enable_thinking": False} if self.disable_thinking() else None + return await self._generate_openai_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + extra_body=extra_body, + depth=depth, + ) + + async def generate_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + tools: Optional[List[type[LLMTool] | LLMDynamicTool]] = None, + max_tokens: Optional[int] = None, + ) -> dict: + parsed_tools = self.tool_calls_handler.parse_tools(tools) + + content = None + match self.llm_provider: + case LLMProvider.OPENAI: + content = await self._generate_openai_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + tools=parsed_tools, + max_tokens=max_tokens, + ) + case LLMProvider.GOOGLE: + content = await self._generate_google_structured( + model=model, + messages=messages, + response_format=response_format, + tools=parsed_tools, + max_tokens=max_tokens, + ) + case LLMProvider.ANTHROPIC: + content = await self._generate_anthropic_structured( + model=model, + messages=messages, + response_format=response_format, + tools=parsed_tools, + max_tokens=max_tokens, + ) + case LLMProvider.OLLAMA: + content = await self._generate_ollama_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + ) + case LLMProvider.CUSTOM: + content = await self._generate_custom_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + ) + if content is None: + raise HTTPException( + status_code=400, + detail="LLM did not return any content", + ) + return content + + # ? Stream Unstructured Content + async def _stream_openai( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + extra_body: Optional[dict] = None, + depth: int = 0, + ) -> AsyncGenerator[str, None]: + client: AsyncOpenAI = self._client + + tool_calls: List[LLMToolCall] = [] + current_index = 0 + current_id = None + current_name = None + current_arguments = None + async for event in await client.chat.completions.create( + model=model, + messages=[message.model_dump() for message in messages], + max_completion_tokens=max_tokens, + tools=tools, + extra_body=extra_body, + stream=True, + ): + event: OpenAIChatCompletionChunk = event + if not event.choices: + continue + + content_chunk = event.choices[0].delta.content + if content_chunk: + yield content_chunk + + tool_call_chunk = event.choices[0].delta.tool_calls + if tool_call_chunk: + tool_index = tool_call_chunk[0].index + tool_id = tool_call_chunk[0].id + tool_name = tool_call_chunk[0].function.name + tool_arguments = tool_call_chunk[0].function.arguments + + if current_index != tool_index: + tool_calls.append( + OpenAIToolCall( + id=current_id, + type="function", + function=OpenAIToolCallFunction( + name=current_name, + arguments=current_arguments, + ), + ) + ) + current_index = tool_index + current_id = tool_id + current_name = tool_name + current_arguments = tool_arguments + else: + current_name = tool_name or current_name + current_id = tool_id or current_id + if current_arguments is None: + current_arguments = tool_arguments + elif tool_arguments: + current_arguments += tool_arguments + + if current_id is not None: + tool_calls.append( + OpenAIToolCall( + id=current_id, + type="function", + function=OpenAIToolCallFunction( + name=current_name, + arguments=current_arguments, + ), + ) + ) + + if tool_calls: + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_openai( + tool_calls + ) + new_messages = [ + *messages, + OpenAIAssistantMessage( + role="assistant", + content=None, + tool_calls=[each.model_dump() for each in tool_calls], + ), + *tool_call_messages, + ] + async for event in self._stream_openai( + model=model, + messages=new_messages, + max_tokens=max_tokens, + tools=tools, + extra_body=extra_body, + depth=depth + 1, + ): + yield event + + async def _stream_google( + self, + model: str, + messages: List[LLMMessage], + tools: Optional[List[dict]] = None, + max_tokens: Optional[int] = None, + depth: int = 0, + ) -> AsyncGenerator[str, None]: + client: genai.Client = self._client + + google_tools = None + if tools: + google_tools = [GoogleTool(function_declarations=[tool]) for tool in tools] + + generated_contents = [] + tool_calls: List[GoogleToolCall] = [] + async for event in iterator_to_async(client.models.generate_content_stream)( + model=model, + contents=self._get_google_messages(messages), + config=GenerateContentConfig( + system_instruction=self._get_system_prompt(messages), + response_mime_type="text/plain", + tools=google_tools, + max_output_tokens=max_tokens, + ), + ): + if not ( + event.candidates + and event.candidates[0].content + and event.candidates[0].content.parts + ): + continue + + generated_contents.append(event.candidates[0].content) + + for each_part in event.candidates[0].content.parts: + if each_part.text: + yield each_part.text + + if each_part.function_call: + tool_calls.append( + GoogleToolCall( + id=each_part.function_call.id, + name=each_part.function_call.name, + arguments=each_part.function_call.args, + ) + ) + + if tool_calls: + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_google( + tool_calls + ) + new_messages = [ + *messages, + *[ + GoogleAssistantMessage( + role="assistant", + content=each, + ) + for each in generated_contents + ], + *tool_call_messages, + ] + async for event in self._stream_google( + model=model, + messages=new_messages, + max_tokens=max_tokens, + tools=tools, + depth=depth + 1, + ): + yield event + + async def _stream_anthropic( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + depth: int = 0, + ): + client: AsyncAnthropic = self._client + + tool_calls: List[AnthropicToolCall] = [] + async with client.messages.stream( + model=model, + system=self._get_system_prompt(messages), + messages=[ + message.model_dump() + for message in self._get_anthropic_messages(messages) + ], + max_tokens=max_tokens or 4000, + tools=tools, + ) as stream: + async for event in stream: + event: AnthropicMessageStreamEvent = event + + if event.type == "text": + yield event.text + + if ( + event.type == "content_block_stop" + and event.content_block.type == "tool_use" + ): + tool_calls.append( + AnthropicToolCall( + id=event.content_block.id, + type=event.content_block.type, + name=event.content_block.name, + input=event.content_block.input, + ) + ) + + if tool_calls: + tool_call_messages = ( + await self.tool_calls_handler.handle_tool_calls_anthropic(tool_calls) + ) + new_messages = [ + *messages, + AnthropicAssistantMessage( + role="assistant", + content=[each.model_dump() for each in tool_calls], + ), + AnthropicUserMessage( + role="user", + content=[each.model_dump() for each in tool_call_messages], + ), + ] + async for event in self._stream_anthropic( + model=model, + messages=new_messages, + max_tokens=max_tokens, + tools=tools, + depth=depth + 1, + ): + yield event + + def _stream_ollama( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + depth: int = 0, + ): + return self._stream_openai( + model=model, messages=messages, max_tokens=max_tokens, depth=depth + ) + + def _stream_custom( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + depth: int = 0, + ): + extra_body = {"enable_thinking": False} if self.disable_thinking() else None + return self._stream_openai( + model=model, + messages=messages, + max_tokens=max_tokens, + extra_body=extra_body, + depth=depth, + ) + + def stream( + self, + model: str, + messages: List[LLMMessage], + max_tokens: Optional[int] = None, + tools: Optional[List[type[LLMTool] | LLMDynamicTool]] = None, + ): + parsed_tools = self.tool_calls_handler.parse_tools(tools) + + match self.llm_provider: + case LLMProvider.OPENAI: + return self._stream_openai( + model=model, + messages=messages, + max_tokens=max_tokens, + tools=parsed_tools, + ) + case LLMProvider.GOOGLE: + return self._stream_google( + model=model, + messages=messages, + max_tokens=max_tokens, + tools=parsed_tools, + ) + case LLMProvider.ANTHROPIC: + return self._stream_anthropic( + model=model, + messages=messages, + max_tokens=max_tokens, + tools=parsed_tools, + ) + case LLMProvider.OLLAMA: + return self._stream_ollama( + model=model, messages=messages, max_tokens=max_tokens + ) + case LLMProvider.CUSTOM: + return self._stream_custom( + model=model, messages=messages, max_tokens=max_tokens + ) + + # ? Stream Structured Content + async def _stream_openai_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + extra_body: Optional[dict] = None, + depth: int = 0, + ) -> AsyncGenerator[str, None]: + client: AsyncOpenAI = self._client + + response_schema = response_format + all_tools = [*tools] if tools else None + + use_tool_calls_for_structured_output = ( + self.use_tool_calls_for_structured_output() + ) + if strict and depth == 0: + response_schema = ensure_strict_json_schema( + response_schema, + path=(), + root=response_schema, + ) + + if use_tool_calls_for_structured_output and depth == 0: + if all_tools is None: + all_tools = [] + all_tools.append( + self.tool_calls_handler.parse_tool( + LLMDynamicTool( + name="ResponseSchema", + description="Provide response to the user", + parameters=response_schema, + handler=do_nothing_async, + ), + strict=strict, + ) + ) + + tool_calls: List[LLMToolCall] = [] + current_index = 0 + current_id = None + current_name = None + current_arguments = None + + has_response_schema_tool_call = False + async for event in await client.chat.completions.create( + model=model, + messages=[message.model_dump() for message in messages], + max_completion_tokens=max_tokens, + tools=all_tools, + response_format=( + { + "type": "json_schema", + "json_schema": ( + { + "name": "ResponseSchema", + "strict": strict, + "schema": response_schema, + } + ), + } + if not use_tool_calls_for_structured_output + else None + ), + extra_body=extra_body, + stream=True, + ): + event: OpenAIChatCompletionChunk = event + if not event.choices: + continue + + content_chunk = event.choices[0].delta.content + if content_chunk and not use_tool_calls_for_structured_output: + yield content_chunk + + tool_call_chunk = event.choices[0].delta.tool_calls + if tool_call_chunk: + tool_index = tool_call_chunk[0].index + tool_id = tool_call_chunk[0].id + tool_name = tool_call_chunk[0].function.name + tool_arguments = tool_call_chunk[0].function.arguments + + if current_index != tool_index: + tool_calls.append( + OpenAIToolCall( + id=current_id, + type="function", + function=OpenAIToolCallFunction( + name=current_name, + arguments=current_arguments, + ), + ) + ) + current_index = tool_index + current_id = tool_id + current_name = tool_name + current_arguments = tool_arguments + else: + current_name = tool_name or current_name + current_id = tool_id or current_id + if current_arguments is None: + current_arguments = tool_arguments + elif tool_arguments: + current_arguments += tool_arguments + + if current_name == "ResponseSchema": + if tool_arguments: + yield tool_arguments + has_response_schema_tool_call = True + + if current_id is not None: + tool_calls.append( + OpenAIToolCall( + id=current_id, + type="function", + function=OpenAIToolCallFunction( + name=current_name, + arguments=current_arguments, + ), + ) + ) + + if tool_calls and not has_response_schema_tool_call: + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_openai( + tool_calls + ) + new_messages = [ + *messages, + OpenAIAssistantMessage( + role="assistant", + content=None, + tool_calls=[each.model_dump() for each in tool_calls], + ), + *tool_call_messages, + ] + async for event in self._stream_openai_structured( + model=model, + messages=new_messages, + max_tokens=max_tokens, + strict=strict, + tools=all_tools, + response_format=response_schema, + extra_body=extra_body, + depth=depth + 1, + ): + yield event + + async def _stream_google_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + max_tokens: Optional[int] = None, + tools: Optional[List[dict]] = None, + depth: int = 0, + ) -> AsyncGenerator[str, None]: + + client: genai.Client = self._client + + google_tools = None + if tools: + google_tools = [GoogleTool(function_declarations=[tool]) for tool in tools] + google_tools.append( + GoogleTool( + function_declarations=[ + { + "name": "ResponseSchema", + "description": "Provide response to the user", + "parameters": remove_titles_from_schema( + flatten_json_schema(response_format) + ), + } + ] + ) + ) + + parsed_messages = self._get_google_messages(messages) + + generated_contents = [] + tool_calls: List[GoogleToolCall] = [] + has_response_schema_tool_call = False + async for event in iterator_to_async(client.models.generate_content_stream)( + model=model, + contents=parsed_messages, + config=GenerateContentConfig( + tools=google_tools, + tool_config=( + GoogleToolConfig( + function_calling_config=GoogleFunctionCallingConfig( + mode=GoogleFunctionCallingConfigMode.ANY, + ), + ) + if tools + else None + ), + system_instruction=self._get_system_prompt(messages), + response_mime_type="application/json" if not tools else None, + response_json_schema=response_format if not tools else None, + max_output_tokens=max_tokens, + ), + ): + if not ( + event.candidates + and event.candidates[0].content + and event.candidates[0].content.parts + ): + continue + + generated_contents.append(event.candidates[0].content) + + for each_part in event.candidates[0].content.parts: + if each_part.text and not google_tools: + yield each_part.text + + if each_part.function_call: + if each_part.function_call.name == "ResponseSchema": + has_response_schema_tool_call = True + if each_part.function_call.args: + yield json.dumps(each_part.function_call.args) + + tool_calls.append( + GoogleToolCall( + id=each_part.function_call.id, + name=each_part.function_call.name, + arguments=each_part.function_call.args, + ) + ) + + if tool_calls and not has_response_schema_tool_call: + tool_call_messages = await self.tool_calls_handler.handle_tool_calls_google( + tool_calls + ) + new_messages = [ + *messages, + *[ + GoogleAssistantMessage( + role="assistant", + content=each, + ) + for each in generated_contents + ], + *tool_call_messages, + ] + async for event in self._stream_google_structured( + model=model, + messages=new_messages, + max_tokens=max_tokens, + response_format=response_format, + tools=tools, + depth=depth + 1, + ): + yield event + + async def _stream_anthropic_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + tools: Optional[List[dict]] = None, + max_tokens: Optional[int] = None, + depth: int = 0, + ) -> AsyncGenerator[str, None]: + client: AsyncAnthropic = self._client + + tool_calls: List[AnthropicToolCall] = [] + has_response_schema_tool_call = False + async with client.messages.stream( + model=model, + system=self._get_system_prompt(messages), + messages=[ + message.model_dump() + for message in self._get_anthropic_messages(messages) + ], + max_tokens=max_tokens or 4000, + tools=[ + { + "name": "ResponseSchema", + "description": "A response to the user's message", + "input_schema": response_format, + }, + *(tools or []), + ], + ) as stream: + is_response_schema_tool_call_started = False + async for event in stream: + event: AnthropicMessageStreamEvent = event + + if ( + event.type == "content_block_start" + and event.content_block.type == "tool_use" + ): + if event.content_block.name == "ResponseSchema": + has_response_schema_tool_call = True + is_response_schema_tool_call_started = True + + if ( + event.type == "content_block_delta" + and event.delta.type == "input_json_delta" + and is_response_schema_tool_call_started + ): + yield event.delta.partial_json + + if ( + event.type == "content_block_stop" + and event.content_block.type == "tool_use" + ): + tool_calls.append( + AnthropicToolCall( + id=event.content_block.id, + type=event.content_block.type, + name=event.content_block.name, + input=event.content_block.input, + ) + ) + + if tool_calls and not has_response_schema_tool_call: + tool_call_messages = ( + await self.tool_calls_handler.handle_tool_calls_anthropic(tool_calls) + ) + new_messages = [ + *messages, + AnthropicAssistantMessage( + role="assistant", + content=[each.model_dump() for each in tool_calls], + ), + AnthropicUserMessage( + role="user", + content=[each.model_dump() for each in tool_call_messages], + ), + ] + async for event in self._stream_anthropic_structured( + model=model, + messages=new_messages, + max_tokens=max_tokens, + response_format=response_format, + tools=tools, + depth=depth + 1, + ): + yield event + + def _stream_ollama_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + max_tokens: Optional[int] = None, + depth: int = 0, + ): + return self._stream_openai_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + depth=depth, + ) + + def _stream_custom_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + max_tokens: Optional[int] = None, + depth: int = 0, + ): + extra_body = {"enable_thinking": False} if self.disable_thinking() else None + return self._stream_openai_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + extra_body=extra_body, + depth=depth, + ) + + def stream_structured( + self, + model: str, + messages: List[LLMMessage], + response_format: dict, + strict: bool = False, + tools: Optional[List[type[LLMTool] | LLMDynamicTool]] = None, + max_tokens: Optional[int] = None, + ): + parsed_tools = self.tool_calls_handler.parse_tools(tools) + + match self.llm_provider: + case LLMProvider.OPENAI: + return self._stream_openai_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + tools=parsed_tools, + max_tokens=max_tokens, + ) + case LLMProvider.GOOGLE: + return self._stream_google_structured( + model=model, + messages=messages, + response_format=response_format, + tools=parsed_tools, + max_tokens=max_tokens, + ) + case LLMProvider.ANTHROPIC: + return self._stream_anthropic_structured( + model=model, + messages=messages, + response_format=response_format, + tools=parsed_tools, + max_tokens=max_tokens, + ) + case LLMProvider.OLLAMA: + return self._stream_ollama_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + ) + case LLMProvider.CUSTOM: + return self._stream_custom_structured( + model=model, + messages=messages, + response_format=response_format, + strict=strict, + max_tokens=max_tokens, + ) + + # ? Web search + async def _search_openai(self, query: str) -> str: + client: AsyncOpenAI = self._client + response = await client.responses.create( + model=get_model(), + tools=[ + { + "type": "web_search_preview", + } + ], + input=query, + ) + return response.output_text + + async def _search_google(self, query: str) -> str: + client: genai.Client = self._client + grounding_tool = GoogleTool(google_search=GoogleSearch()) + config = GenerateContentConfig(tools=[grounding_tool]) + + response = await asyncio.to_thread( + client.models.generate_content, + model=get_model(), + contents=query, + config=config, + ) + return response.text + + async def _search_anthropic(self, query: str) -> str: + client: AsyncAnthropic = self._client + + response = await client.messages.create( + model=get_model(), + max_tokens=4000, + messages=[{"role": "user", "content": query}], + tools=[ + {"type": "web_search_20250305", "name": "web_search", "max_uses": 1} + ], + ) + result = "\n".join( + [each.text for each in response.content if each.type == "text"] + ) + return result diff --git a/backend/services/llm_tool_calls_handler.py b/backend/services/llm_tool_calls_handler.py new file mode 100644 index 0000000..6347602 --- /dev/null +++ b/backend/services/llm_tool_calls_handler.py @@ -0,0 +1,211 @@ +import asyncio +from datetime import datetime +import json +from typing import Any, Callable, Coroutine, List, Optional +from fastapi import HTTPException +from enums.llm_provider import LLMProvider +from models.llm_message import ( + AnthropicToolCallMessage, + GoogleToolCallMessage, + OpenAIToolCallMessage, +) +from models.llm_tool_call import AnthropicToolCall, GoogleToolCall, OpenAIToolCall +from models.llm_tools import LLMDynamicTool, LLMTool, SearchWebTool +from utils.schema_utils import ( + ensure_strict_json_schema, + flatten_json_schema, + remove_titles_from_schema, +) + + +class LLMToolCallsHandler: + def __init__(self, client): + from services.llm_client import LLMClient + + self.client: LLMClient = client + + self.tools_map: dict[str, Callable[..., Coroutine[Any, Any, str]]] = { + "SearchWebTool": self.search_web_tool_call_handler, + "GetCurrentDatetimeTool": self.get_current_datetime_tool_call_handler, + } + self.dynamic_tools: List[LLMDynamicTool] = [] + + def get_tool_handler( + self, tool_name: str + ) -> Callable[..., Coroutine[Any, Any, str]]: + handler = self.tools_map.get(tool_name) + if handler: + return handler + else: + dynamic_tools = list( + filter(lambda tool: tool.name == tool_name, self.dynamic_tools) + ) + if dynamic_tools: + return dynamic_tools[0].handler + raise HTTPException(status_code=500, detail=f"Tool {tool_name} not found") + + def parse_tools(self, tools: Optional[List[type[LLMTool] | LLMDynamicTool]] = None): + if tools is None: + return None + parsed_tools = map(self.parse_tool, tools) + return list(parsed_tools) + + def parse_tool(self, tool: type[LLMTool] | LLMDynamicTool, strict: bool = False): + if isinstance(tool, LLMDynamicTool): + self.dynamic_tools.append(tool) + + match self.client.llm_provider: + case LLMProvider.OPENAI | LLMProvider.OLLAMA | LLMProvider.CUSTOM: + return self.parse_tool_openai(tool, strict) + case LLMProvider.ANTHROPIC: + return self.parse_tool_anthropic(tool) + case LLMProvider.GOOGLE: + return self.parse_tool_google(tool) + case _: + raise ValueError( + f"LLM provider must be either openai, anthropic, or google" + ) + + def parse_tool_openai( + self, tool: type[LLMTool] | LLMDynamicTool, strict: bool = False + ): + if isinstance(tool, LLMDynamicTool): + name = tool.name + description = tool.description + parameters = tool.parameters + else: + name = tool.__name__ + description = tool.__doc__ or "" + parameters = tool.model_json_schema() + + if strict: + parameters = ensure_strict_json_schema(parameters, path=(), root=parameters) + + return { + "type": "function", + "function": { + "name": name, + "description": description, + "strict": strict, + "parameters": parameters, + }, + } + + def parse_tool_google(self, tool: type[LLMTool] | LLMDynamicTool): + parsed = self.parse_tool_openai(tool) + parsed["function"]["parameters"] = ( + remove_titles_from_schema( + flatten_json_schema(parsed["function"]["parameters"]) + ) + if parsed["function"]["parameters"] + else {} + ) + return { + "name": parsed["function"]["name"], + "description": parsed["function"]["description"], + "parameters": parsed["function"]["parameters"], + } + + def parse_tool_anthropic(self, tool: type[LLMTool] | LLMDynamicTool): + parsed = self.parse_tool_openai(tool) + input_schema = parsed["function"]["parameters"] + return { + "name": parsed["function"]["name"], + "description": parsed["function"]["description"], + "input_schema": {"type": "object"} if input_schema == {} else input_schema, + } + + async def handle_tool_calls_openai( + self, + tool_calls: List[OpenAIToolCall], + ) -> List[OpenAIToolCallMessage]: + async_tool_calls_tasks = [] + for tool_call in tool_calls: + tool_name = tool_call.function.name + tool_handler = self.get_tool_handler(tool_name) + async_tool_calls_tasks.append(tool_handler(tool_call.function.arguments)) + + tool_call_results: List[str] = await asyncio.gather(*async_tool_calls_tasks) + tool_call_messages = [ + OpenAIToolCallMessage( + content=result, + tool_call_id=tool_call.id, + ) + for tool_call, result in zip(tool_calls, tool_call_results) + ] + return tool_call_messages + + async def handle_tool_calls_google( + self, + tool_calls: List[GoogleToolCall], + ) -> List[GoogleToolCallMessage]: + async_tool_calls_tasks = [] + for tool_call in tool_calls: + tool_name = tool_call.name + tool_handler = self.get_tool_handler(tool_name) + async_tool_calls_tasks.append(tool_handler(json.dumps(tool_call.arguments))) + + tool_call_results: List[str] = await asyncio.gather(*async_tool_calls_tasks) + + tool_call_messages = [ + GoogleToolCallMessage( + id=tool_call.id, + name=tool_call.name, + response={"result": result}, + ) + for tool_call, result in zip(tool_calls, tool_call_results) + ] + return tool_call_messages + + async def handle_tool_calls_anthropic( + self, + tool_calls: List[AnthropicToolCall], + ) -> List[AnthropicToolCallMessage]: + async_tool_calls_tasks = [] + for tool_call in tool_calls: + tool_name = tool_call.name + tool_handler = self.get_tool_handler(tool_name) + async_tool_calls_tasks.append(tool_handler(json.dumps(tool_call.input))) + + tool_call_results: List[str] = await asyncio.gather(*async_tool_calls_tasks) + tool_call_messages = [ + AnthropicToolCallMessage( + content=result, + tool_use_id=tool_call.id, + ) + for tool_call, result in zip(tool_calls, tool_call_results) + ] + return tool_call_messages + + # ? Tool call handlers + # Search web tool call handler + async def search_web_tool_call_handler(self, arguments: str) -> str: + match self.client.llm_provider: + case LLMProvider.OPENAI: + return await self.search_web_tool_call_handler_openai(arguments) + case LLMProvider.ANTHROPIC: + return await self.search_web_tool_call_handler_anthropic(arguments) + case LLMProvider.GOOGLE: + return await self.search_web_tool_call_handler_google(arguments) + case _: + return ( + "Web search tool call handler not implemented for this LLM provider: " + + self.client.llm_provider.value + ) + + async def search_web_tool_call_handler_openai(self, arguments: str) -> str: + args = SearchWebTool.model_validate_json(arguments) + return await self.client._search_openai(args.query) + + async def search_web_tool_call_handler_google(self, arguments: str) -> str: + args = SearchWebTool.model_validate_json(arguments) + return await self.client._search_google(args.query) + + async def search_web_tool_call_handler_anthropic(self, arguments: str) -> str: + args = SearchWebTool.model_validate_json(arguments) + return await self.client._search_anthropic(args.query) + + # Get current datetime tool call handler + async def get_current_datetime_tool_call_handler(self, _) -> str: + current_time = datetime.now() + return f"{current_time.strftime('%A, %B %d, %Y')} at {current_time.strftime('%I:%M:%S %p')}" diff --git a/backend/services/master_deck_parser_service.py b/backend/services/master_deck_parser_service.py new file mode 100644 index 0000000..ffee6b0 --- /dev/null +++ b/backend/services/master_deck_parser_service.py @@ -0,0 +1,317 @@ +"""Master deck parser: extract layouts from a PPTX master/template file. + +Pipeline per layout: + 1. Unzip PPTX → extract slide layout XMLs and slide master XML + 2. Convert to PDF via LibreOffice → screenshots per layout + 3. Extract theme colors, fonts from OXML + 4. For each slide layout: generate HTML → generate React code via LLM + 5. Auto-classify layout type via LLM + 6. Persist results to MasterDeckModel +""" +import asyncio +import base64 +import os +import shutil +import tempfile +import traceback +import uuid +import zipfile +import xml.etree.ElementTree as ET +from typing import List, Optional + +from services.database import async_session_maker + +# Reuse existing extraction utilities +from api.v1.ppt.endpoints.pptx_slides import ( + _extract_slide_xmls, + _convert_pptx_to_pdf, + extract_fonts_from_oxml, + normalize_font_family_name, +) +from api.v1.ppt.endpoints.slide_to_html import ( + generate_html_from_slide, + generate_react_component_from_html, +) +from services.documents_loader import DocumentsLoader + +# OXML namespaces +NS = { + "a": "http://schemas.openxmlformats.org/drawingml/2006/main", + "p": "http://schemas.openxmlformats.org/presentationml/2006/main", + "r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships", +} + +LAYOUT_TYPE_HINTS = { + "title": "title_slide", + "section": "section_header", + "two content": "two_column", + "comparison": "comparison", + "content": "content", + "blank": "blank", + "picture": "picture", + "caption": "caption", +} + + +def _extract_slide_layout_xmls(pptx_path: str, temp_dir: str) -> List[dict]: + """Extract slide layout XMLs from ppt/slideLayouts/ and return metadata.""" + extract_dir = os.path.join(temp_dir, "pptx_extract") + if not os.path.exists(extract_dir): + with zipfile.ZipFile(pptx_path, "r") as zf: + zf.extractall(extract_dir) + + layouts_dir = os.path.join(extract_dir, "ppt", "slideLayouts") + if not os.path.exists(layouts_dir): + return [] + + layout_files = sorted( + [f for f in os.listdir(layouts_dir) if f.endswith(".xml")], + key=lambda x: int("".join(c for c in x if c.isdigit()) or "0"), + ) + + layouts = [] + for lf in layout_files: + path = os.path.join(layouts_dir, lf) + with open(path, "r", encoding="utf-8") as f: + xml_content = f.read() + + # Try to extract layout name from OXML + layout_name = lf.replace(".xml", "") + try: + root = ET.fromstring(xml_content) + cSld = root.find("p:cSld", NS) + if cSld is not None and cSld.get("name"): + layout_name = cSld.get("name") + except Exception: + pass + + layouts.append({ + "filename": lf, + "layout_name": layout_name, + "xml_content": xml_content, + }) + + return layouts + + +def _extract_theme_info(pptx_path: str, temp_dir: str) -> dict: + """Extract theme colors and font scheme from the PPTX theme XML.""" + extract_dir = os.path.join(temp_dir, "pptx_extract") + if not os.path.exists(extract_dir): + with zipfile.ZipFile(pptx_path, "r") as zf: + zf.extractall(extract_dir) + + theme_dir = os.path.join(extract_dir, "ppt", "theme") + if not os.path.exists(theme_dir): + return {"colors": [], "fonts": {}} + + theme_files = [f for f in os.listdir(theme_dir) if f.endswith(".xml")] + if not theme_files: + return {"colors": [], "fonts": {}} + + theme_path = os.path.join(theme_dir, theme_files[0]) + with open(theme_path, "r", encoding="utf-8") as f: + theme_xml = f.read() + + colors = [] + fonts_info = {} + + try: + root = ET.fromstring(theme_xml) + + # Extract color scheme + clrScheme = root.find(".//a:clrScheme", NS) + if clrScheme is not None: + for child in clrScheme: + tag = child.tag.split("}")[-1] if "}" in child.tag else child.tag + # Look for srgbClr or sysClr + srgb = child.find("a:srgbClr", NS) + if srgb is not None: + colors.append({"name": tag, "hex": f"#{srgb.get('val', '')}"}) + else: + sys_clr = child.find("a:sysClr", NS) + if sys_clr is not None: + last_clr = sys_clr.get("lastClr", "") + colors.append({"name": tag, "hex": f"#{last_clr}"}) + + # Extract font scheme + majorFont = root.find(".//a:majorFont/a:latin", NS) + minorFont = root.find(".//a:minorFont/a:latin", NS) + if majorFont is not None: + fonts_info["heading"] = majorFont.get("typeface", "") + if minorFont is not None: + fonts_info["body"] = minorFont.get("typeface", "") + + except Exception: + pass + + return {"colors": colors, "fonts": fonts_info} + + +def _guess_layout_type(layout_name: str) -> str: + """Heuristic layout type guess from layout name.""" + name_lower = layout_name.lower() + for hint, layout_type in LAYOUT_TYPE_HINTS.items(): + if hint in name_lower: + return layout_type + return "custom" + + +async def parse_master_deck(deck_id: uuid.UUID) -> None: + """Parse a master deck PPTX asynchronously. Updates DB on completion/failure.""" + async with async_session_maker() as session: + from models.sql.master_deck import MasterDeckModel + + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + return + + deck.parse_status = "processing" + await session.commit() + + try: + result = await _do_parse(deck_id) + async with async_session_maker() as session: + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + return + deck.parsed_config = result["parsed_config"] + deck.layouts = result["layouts"] + deck.thumbnail_path = result.get("thumbnail_path") + deck.parse_status = "completed" + await session.commit() + + except Exception as e: + traceback.print_exc() + async with async_session_maker() as session: + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + return + deck.parse_status = "failed" + deck.parsed_config = {"error": str(e)} + await session.commit() + + +async def _do_parse(deck_id: uuid.UUID) -> dict: + """Core parsing logic. Returns dict with parsed_config, layouts, thumbnail_path.""" + async with async_session_maker() as session: + from models.sql.master_deck import MasterDeckModel + + deck = await session.get(MasterDeckModel, deck_id) + if not deck: + raise ValueError("Deck not found") + pptx_path = deck.original_file_path + client_id = deck.client_id + + if not os.path.exists(pptx_path): + raise FileNotFoundError(f"PPTX file not found: {pptx_path}") + + with tempfile.TemporaryDirectory() as temp_dir: + # 1. Extract slide XMLs (actual slides, not layouts) for screenshots + slide_xmls = _extract_slide_xmls(pptx_path, temp_dir) + + # 2. Extract slide layout XMLs from ppt/slideLayouts/ + layout_metas = _extract_slide_layout_xmls(pptx_path, temp_dir) + + # 3. Extract theme info + theme_info = _extract_theme_info(pptx_path, temp_dir) + + # 4. Convert to PDF → screenshots (for slides, used as layout previews) + screenshots = [] + thumbnail_path = None + try: + pdf_path = await _convert_pptx_to_pdf(pptx_path, temp_dir) + screenshot_paths = await DocumentsLoader.get_page_images_from_pdf_async( + pdf_path, temp_dir + ) + # Copy screenshots to permanent location + deck_dir = os.path.join( + os.path.dirname(__file__), "..", "data", "clients", + str(client_id), "master_decks", str(deck_id), "screenshots" + ) + os.makedirs(deck_dir, exist_ok=True) + + for i, sp in enumerate(screenshot_paths): + if os.path.exists(sp) and os.path.getsize(sp) > 0: + dest = os.path.join(deck_dir, f"slide_{i + 1}.png") + shutil.copy2(sp, dest) + screenshots.append(dest) + if i == 0: + thumbnail_path = dest + + except Exception as e: + print(f"Screenshot generation failed (non-fatal): {e}") + + # 5. Collect all fonts used + all_fonts = set() + for lm in layout_metas: + raw = extract_fonts_from_oxml(lm["xml_content"]) + all_fonts.update(normalize_font_family_name(f) for f in raw if f) + for sx in slide_xmls: + raw = extract_fonts_from_oxml(sx) + all_fonts.update(normalize_font_family_name(f) for f in raw if f) + + # 6. Process each slide layout through LLM pipeline + api_key = os.getenv("OPENAI_API_KEY") + layouts_result = [] + + for idx, lm in enumerate(layout_metas): + layout_entry = { + "index": idx, + "layout_name": lm["layout_name"], + "layout_type": _guess_layout_type(lm["layout_name"]), + "xml_snippet": lm["xml_content"][:2000], # Store truncated XML for reference + "fonts": list( + {normalize_font_family_name(f) for f in extract_fonts_from_oxml(lm["xml_content"]) if f} + ), + "html": None, + "react_code": None, + "screenshot_path": screenshots[idx] if idx < len(screenshots) else None, + } + + # Run LLM pipeline if API key available and we have a screenshot + if api_key and idx < len(screenshots) and os.path.exists(screenshots[idx]): + try: + with open(screenshots[idx], "rb") as img_f: + img_b64 = base64.b64encode(img_f.read()).decode("utf-8") + + # Step A: Generate HTML from slide screenshot + layout OXML + html = await generate_html_from_slide( + base64_image=img_b64, + media_type="image/png", + xml_content=lm["xml_content"], + api_key=api_key, + fonts=layout_entry["fonts"] or None, + ) + html = html.replace("```html", "").replace("```", "") + layout_entry["html"] = html + + # Step B: Generate React component from HTML + react_code = await generate_react_component_from_html( + html_content=html, + api_key=api_key, + image_base64=img_b64, + media_type="image/png", + ) + react_code = react_code.replace("```tsx", "").replace("```", "") + layout_entry["react_code"] = react_code + + except Exception as e: + print(f"LLM pipeline failed for layout {idx} ({lm['layout_name']}): {e}") + layout_entry["html"] = None + layout_entry["react_code"] = None + + layouts_result.append(layout_entry) + + parsed_config = { + "theme": theme_info, + "total_slides": len(slide_xmls), + "total_layouts": len(layout_metas), + "fonts": sorted(all_fonts), + } + + return { + "parsed_config": parsed_config, + "layouts": layouts_result, + "thumbnail_path": thumbnail_path, + } diff --git a/backend/services/pptx_presentation_creator.py b/backend/services/pptx_presentation_creator.py new file mode 100644 index 0000000..26b20b2 --- /dev/null +++ b/backend/services/pptx_presentation_creator.py @@ -0,0 +1,486 @@ +import os +from typing import List, Optional +from lxml import etree +from services.html_to_text_runs_service import ( + parse_html_text_to_text_runs as parse_inline_html_to_runs, +) + +from pptx import Presentation +from pptx.shapes.autoshape import Shape +from pptx.slide import Slide +from pptx.text.text import _Paragraph, TextFrame, Font, _Run +from pptx.opc.constants import RELATIONSHIP_TYPE as RT +from lxml.etree import fromstring, tostring +from PIL import Image +from pptx.oxml.xmlchemy import OxmlElement + +from pptx.util import Pt +from pptx.dml.color import RGBColor + +from models.pptx_models import ( + PptxAutoShapeBoxModel, + PptxBoxShapeEnum, + PptxConnectorModel, + PptxFillModel, + PptxFontModel, + PptxParagraphModel, + PptxPictureBoxModel, + PptxPositionModel, + PptxPresentationModel, + PptxShadowModel, + PptxSlideModel, + PptxSpacingModel, + PptxStrokeModel, + PptxTextBoxModel, + PptxTextRunModel, +) +from utils.download_helpers import download_files +from utils.image_utils import ( + clip_image, + create_circle_image, + fit_image, + invert_image, + round_image_corners, + set_image_opacity, +) +import uuid + +BLANK_SLIDE_LAYOUT = 6 + + +class PptxPresentationCreator: + def __init__(self, ppt_model: PptxPresentationModel, temp_dir: str): + self._temp_dir = temp_dir + + self._ppt_model = ppt_model + self._slide_models = ppt_model.slides + + self._ppt = Presentation() + self._ppt.slide_width = Pt(1280) + self._ppt.slide_height = Pt(720) + + def get_sub_element(self, parent, tagname, **kwargs): + """Helper method to create XML elements""" + element = OxmlElement(tagname) + element.attrib.update(kwargs) + parent.append(element) + return element + + async def fetch_network_assets(self): + image_urls = [] + models_with_network_asset: List[PptxPictureBoxModel] = [] + + if self._ppt_model.shapes: + for each_shape in self._ppt_model.shapes: + if isinstance(each_shape, PptxPictureBoxModel): + image_path = each_shape.picture.path + if image_path.startswith("http"): + if "app_data/" in image_path: + relative_path = image_path.split("app_data/")[1] + each_shape.picture.path = os.path.join( + "/app_data", relative_path + ) + each_shape.picture.is_network = False + continue + image_urls.append(image_path) + models_with_network_asset.append(each_shape) + + for each_slide in self._slide_models: + for each_shape in each_slide.shapes: + if isinstance(each_shape, PptxPictureBoxModel): + image_path = each_shape.picture.path + if image_path.startswith("http"): + if "app_data" in image_path: + relative_path = image_path.split("app_data/")[1] + each_shape.picture.path = os.path.join( + "/app_data", relative_path + ) + each_shape.picture.is_network = False + continue + image_urls.append(image_path) + models_with_network_asset.append(each_shape) + + if image_urls: + image_paths = await download_files(image_urls, self._temp_dir) + + for each_shape, each_image_path in zip( + models_with_network_asset, image_paths + ): + if each_image_path: + each_shape.picture.path = each_image_path + each_shape.picture.is_network = False + + async def create_ppt(self): + await self.fetch_network_assets() + + for slide_model in self._slide_models: + # Adding global shapes to slide + if self._ppt_model.shapes: + slide_model.shapes.append(self._ppt_model.shapes) + + self.add_and_populate_slide(slide_model) + + def set_presentation_theme(self): + slide_master = self._ppt.slide_master + slide_master_part = slide_master.part + + theme_part = slide_master_part.part_related_by(RT.THEME) + theme = fromstring(theme_part.blob) + + theme_colors = self._theme.colors.theme_color_mapping + nsmap = {"a": "http://schemas.openxmlformats.org/drawingml/2006/main"} + + for color_name, hex_value in theme_colors.items(): + if color_name: + color_element = theme.xpath( + f"a:themeElements/a:clrScheme/a:{color_name}/a:srgbClr", + namespaces=nsmap, + )[0] + color_element.set("val", hex_value.encode("utf-8")) + + theme_part._blob = tostring(theme) + + def add_and_populate_slide(self, slide_model: PptxSlideModel): + slide = self._ppt.slides.add_slide(self._ppt.slide_layouts[BLANK_SLIDE_LAYOUT]) + + if slide_model.background: + self.apply_fill_to_shape(slide.background, slide_model.background) + + if slide_model.note: + slide.notes_slide.notes_text_frame.text = slide_model.note + + for shape_model in slide_model.shapes: + model_type = type(shape_model) + + if model_type is PptxPictureBoxModel: + self.add_picture(slide, shape_model) + + elif model_type is PptxAutoShapeBoxModel: + self.add_autoshape(slide, shape_model) + + elif model_type is PptxTextBoxModel: + self.add_textbox(slide, shape_model) + + elif model_type is PptxConnectorModel: + self.add_connector(slide, shape_model) + + def add_connector(self, slide: Slide, connector_model: PptxConnectorModel): + if connector_model.thickness == 0: + return + connector_shape = slide.shapes.add_connector( + connector_model.type, *connector_model.position.to_pt_xyxy() + ) + connector_shape.line.width = Pt(connector_model.thickness) + connector_shape.line.color.rgb = RGBColor.from_string(connector_model.color) + self.set_fill_opacity(connector_shape, connector_model.opacity) + + def add_picture(self, slide: Slide, picture_model: PptxPictureBoxModel): + image_path = picture_model.picture.path + if ( + picture_model.clip + or picture_model.border_radius + or picture_model.invert + or picture_model.opacity + or picture_model.object_fit + or picture_model.shape + ): + try: + image = Image.open(image_path) + except Exception: + print(f"Could not open image: {image_path}") + return + + image = image.convert("RGBA") + # ? Applying border radius twice to support both clip and object fit + if picture_model.border_radius: + image = round_image_corners(image, picture_model.border_radius) + if picture_model.object_fit: + image = fit_image( + image, + picture_model.position.width, + picture_model.position.height, + picture_model.object_fit, + ) + elif picture_model.clip: + image = clip_image( + image, + picture_model.position.width, + picture_model.position.height, + ) + if picture_model.border_radius: + image = round_image_corners(image, picture_model.border_radius) + if picture_model.shape == PptxBoxShapeEnum.CIRCLE: + image = create_circle_image(image) + if picture_model.invert: + image = invert_image(image) + if picture_model.opacity: + image = set_image_opacity(image, picture_model.opacity) + image_path = os.path.join(self._temp_dir, f"{uuid.uuid4()}.png") + image.save(image_path) + + margined_position = self.get_margined_position( + picture_model.position, picture_model.margin + ) + + slide.shapes.add_picture(image_path, *margined_position.to_pt_list()) + + def add_autoshape(self, slide: Slide, autoshape_box_model: PptxAutoShapeBoxModel): + position = autoshape_box_model.position + if autoshape_box_model.margin: + position = self.get_margined_position(position, autoshape_box_model.margin) + + autoshape = slide.shapes.add_shape( + autoshape_box_model.type, *position.to_pt_list() + ) + + textbox = autoshape.text_frame + textbox.word_wrap = autoshape_box_model.text_wrap + + self.apply_fill_to_shape(autoshape, autoshape_box_model.fill) + self.apply_margin_to_text_box(textbox, autoshape_box_model.margin) + self.apply_stroke_to_shape(autoshape, autoshape_box_model.stroke) + self.apply_shadow_to_shape(autoshape, autoshape_box_model.shadow) + self.apply_border_radius_to_shape(autoshape, autoshape_box_model.border_radius) + + if autoshape_box_model.paragraphs: + self.add_paragraphs(textbox, autoshape_box_model.paragraphs) + + def add_textbox(self, slide: Slide, textbox_model: PptxTextBoxModel): + position = textbox_model.position + textbox_shape = slide.shapes.add_textbox(*position.to_pt_list()) + textbox_shape.width += Pt(2) + + textbox = textbox_shape.text_frame + textbox.word_wrap = textbox_model.text_wrap + + self.apply_fill_to_shape(textbox_shape, textbox_model.fill) + self.apply_margin_to_text_box(textbox, textbox_model.margin) + self.add_paragraphs(textbox, textbox_model.paragraphs) + + def add_paragraphs( + self, textbox: TextFrame, paragraph_models: List[PptxParagraphModel] + ): + for index, paragraph_model in enumerate(paragraph_models): + paragraph = textbox.add_paragraph() if index > 0 else textbox.paragraphs[0] + self.populate_paragraph(paragraph, paragraph_model) + + def populate_paragraph( + self, paragraph: _Paragraph, paragraph_model: PptxParagraphModel + ): + if paragraph_model.spacing: + self.apply_spacing_to_paragraph(paragraph, paragraph_model.spacing) + + if paragraph_model.line_height: + paragraph.line_spacing = paragraph_model.line_height + + if paragraph_model.alignment: + paragraph.alignment = paragraph_model.alignment + + if paragraph_model.font: + self.apply_font_to_paragraph(paragraph, paragraph_model.font) + + text_runs = [] + if paragraph_model.text: + text_runs = self.parse_html_text_to_text_runs( + paragraph_model.font, paragraph_model.text + ) + elif paragraph_model.text_runs: + text_runs = paragraph_model.text_runs + + for text_run_model in text_runs: + text_run = paragraph.add_run() + self.populate_text_run(text_run, text_run_model) + + def parse_html_text_to_text_runs(self, font: Optional[PptxFontModel], text: str): + return parse_inline_html_to_runs(text, font) + + def populate_text_run(self, text_run: _Run, text_run_model: PptxTextRunModel): + text_run.text = text_run_model.text + if text_run_model.font: + self.apply_font(text_run.font, text_run_model.font) + + def apply_border_radius_to_shape(self, shape: Shape, border_radius: Optional[int]): + if not border_radius: + return + try: + normalized_border_radius = Pt(border_radius) / min( + shape.width, shape.height + ) + shape.adjustments[0] = normalized_border_radius + except Exception: + print("Could not apply border radius.") + + def apply_fill_to_shape(self, shape: Shape, fill: Optional[PptxFillModel] = None): + if not fill: + shape.fill.background() + else: + shape.fill.solid() + shape.fill.fore_color.rgb = RGBColor.from_string(fill.color) + self.set_fill_opacity(shape.fill, fill.opacity) + + def apply_stroke_to_shape( + self, shape: Shape, stroke: Optional[PptxStrokeModel] = None + ): + if not stroke or stroke.thickness == 0: + shape.line.fill.background() + else: + shape.line.fill.solid() + shape.line.fill.fore_color.rgb = RGBColor.from_string(stroke.color) + shape.line.width = Pt(stroke.thickness) + self.set_fill_opacity(shape.line.fill, stroke.opacity) + + def apply_shadow_to_shape( + self, shape: Shape, shadow: Optional[PptxShadowModel] = None + ): + # Access the XML for the shape + sp_element = shape._element + sp_pr = sp_element.xpath("p:spPr")[0] # Shape properties XML element + + nsmap = sp_pr.nsmap + + # # Remove existing shadow effects if present + effect_list = sp_pr.find("a:effectLst", namespaces=nsmap) + if effect_list: + old_outer_shadow = effect_list.find("a:outerShdw") + if old_outer_shadow: + effect_list.remove( + old_outer_shadow, namespaces=nsmap + ) # Remove the old shadow + old_inner_shadow = effect_list.find("a:innerShdw") + if old_inner_shadow: + effect_list.remove( + old_inner_shadow, namespaces=nsmap + ) # Remove the old shadow + old_prst_shadow = effect_list.find("a:prstShdw") + if old_prst_shadow: + effect_list.remove( + old_prst_shadow, namespaces=nsmap + ) # Remove the old shadow + + if not effect_list: + effect_list = etree.SubElement( + sp_pr, f"{{{nsmap['a']}}}effectLst", nsmap=nsmap + ) + + if shadow is None: + # Apply shadow with zero values when shadow is None + outer_shadow = etree.SubElement( + effect_list, + f"{{{nsmap['a']}}}outerShdw", + { + "blurRad": "0", + "dist": "0", + "dir": "0", + }, + nsmap=nsmap, + ) + color_element = etree.SubElement( + outer_shadow, + f"{{{nsmap['a']}}}srgbClr", + {"val": "000000"}, + nsmap=nsmap, + ) + etree.SubElement( + color_element, + f"{{{nsmap['a']}}}alpha", + {"val": "0"}, + nsmap=nsmap, + ) + else: + # Apply the provided shadow + # dir expects 60000ths of a degree in OOXML + angle_dir = ( + int(round((shadow.angle % 360) * 60000)) + if shadow.angle is not None + else 0 + ) + outer_shadow = etree.SubElement( + effect_list, + f"{{{nsmap['a']}}}outerShdw", + { + "blurRad": f"{Pt(shadow.radius)}", + "dir": f"{angle_dir}", + "dist": f"{Pt(shadow.offset)}", + "rotWithShape": "0", + }, + nsmap=nsmap, + ) + color_element = etree.SubElement( + outer_shadow, + f"{{{nsmap['a']}}}srgbClr", + {"val": f"{shadow.color}"}, + nsmap=nsmap, + ) + etree.SubElement( + color_element, + f"{{{nsmap['a']}}}alpha", + {"val": f"{int(shadow.opacity * 100000)}"}, + nsmap=nsmap, + ) + + def set_fill_opacity(self, fill, opacity): + if opacity is None or opacity >= 1.0: + return + + alpha = int((opacity) * 100000) + + try: + ts = fill._xPr.solidFill + sF = ts.get_or_change_to_srgbClr() + self.get_sub_element(sF, "a:alpha", val=str(alpha)) + except Exception as e: + print(f"Could not set fill opacity: {e}") + + def get_margined_position( + self, position: PptxPositionModel, margin: Optional[PptxSpacingModel] + ) -> PptxPositionModel: + if not margin: + return position + + left = position.left + margin.left + top = position.top + margin.top + width = max(position.width - margin.left - margin.right, 0) + height = max(position.height - margin.top - margin.bottom, 0) + + return PptxPositionModel(left=left, top=top, width=width, height=height) + + def apply_margin_to_text_box( + self, text_frame: TextFrame, margin: Optional[PptxSpacingModel] + ) -> PptxPositionModel: + text_frame.margin_left = Pt(margin.left if margin else 0) + text_frame.margin_right = Pt(margin.right if margin else 0) + text_frame.margin_top = Pt(margin.top if margin else 0) + text_frame.margin_bottom = Pt(margin.bottom if margin else 0) + + def apply_spacing_to_paragraph( + self, paragraph: _Paragraph, spacing: PptxSpacingModel + ): + paragraph.space_before = Pt(spacing.top) + paragraph.space_after = Pt(spacing.bottom) + + def apply_font_to_paragraph(self, paragraph: _Paragraph, font: PptxFontModel): + self.apply_font(paragraph.font, font) + + def apply_font(self, font: Font, font_model: PptxFontModel): + font.name = font_model.name + font.color.rgb = RGBColor.from_string(font_model.color) + font.italic = font_model.italic + font.size = Pt(font_model.size) + font.bold = font_model.font_weight >= 600 + if font_model.underline is not None: + font.underline = bool(font_model.underline) + if font_model.strike is not None: + self.apply_strike_to_font(font, font_model.strike) + + def apply_strike_to_font(self, font: Font, strike: Optional[bool]): + try: + rPr = font._element + if strike is True: + rPr.set("strike", "sngStrike") + elif strike is False: + rPr.set("strike", "noStrike") + except Exception as e: + print(f"Could not apply strikethrough: {e}") + + def save(self, path: str): + self._ppt.save(path) diff --git a/backend/services/score_based_chunker.py b/backend/services/score_based_chunker.py new file mode 100644 index 0000000..c67de79 --- /dev/null +++ b/backend/services/score_based_chunker.py @@ -0,0 +1,163 @@ +import asyncio +from typing import List + +from models.document_chunk import DocumentChunk + + +class ScoreBasedChunker: + + def extract_headings(self, text: str) -> List[str]: + lines = text.split("\n") + headings = [] + + for line in lines: + line = line.strip() + if line.startswith("#"): + headings.append(line) + + return headings + + def score_headings(self, headings: List[str]) -> List[float]: + heading_scores = [] + last_heading_index = -1 + first_heading_found = False + + for i, heading in enumerate(headings): + score = 0.0 + + heading_level = len(heading) - len(heading.lstrip("#")) + + if heading_level <= 3: + score += 10.0 - (heading_level - 1) * 2.0 + else: + score += 4.0 - (heading_level - 4) * 0.5 + + if not first_heading_found: + score += 5.0 + first_heading_found = True + + if last_heading_index != -1: + distance = i - last_heading_index + distance_bonus = min(5.0, distance * 0.5) + score += distance_bonus + + last_heading_index = i + heading_scores.append(score) + + return heading_scores + + def get_chunks_from_headings( + self, + text: str, + headings: List[str], + heading_scores: List[float], + top_k: int = 10, + ) -> List[DocumentChunk]: + if not heading_scores: + heading_scores = self.score_headings(headings) + + chunks = [] + heading_indices = [] + + for i, score in enumerate(heading_scores): + if score > 0: + heading_indices.append((i, score)) + + if len(heading_indices) == 0: + return chunks + + heading_indices.sort(key=lambda x: (-x[1], x[0])) + + if len(heading_indices) <= top_k: + selected_indices = [idx for idx, _ in heading_indices] + selected_indices.sort() + else: + score_groups = {} + for idx, score in heading_indices: + rounded_score = round(score) + if rounded_score not in score_groups: + score_groups[rounded_score] = [] + score_groups[rounded_score].append(idx) + + sorted_groups = sorted( + score_groups.items(), key=lambda x: x[0], reverse=True + ) + + selected_indices = [] + + for score, indices in sorted_groups: + indices.sort() + remaining_needed = top_k - len(selected_indices) + + if remaining_needed <= 0: + break + + if len(indices) <= remaining_needed: + selected_indices.extend(indices) + else: + if remaining_needed == 1: + mid_idx = len(indices) // 2 + selected_indices.append(indices[mid_idx]) + elif remaining_needed == 2: + selected_indices.append(indices[0]) + selected_indices.append(indices[-1]) + else: + step = (len(indices) - 1) / (remaining_needed - 1) + + for i in range(remaining_needed): + index = int(round(i * step)) + if index < len(indices): + selected_indices.append(indices[index]) + + selected_indices.sort() + + lines = text.split("\n") + heading_positions = {} + + for i, line in enumerate(lines): + line_stripped = line.strip() + if line_stripped.startswith("#"): + for heading_idx, heading in enumerate(headings): + if heading == line_stripped and heading_idx not in heading_positions: + heading_positions[heading_idx] = i + break + + for i, heading_idx in enumerate(selected_indices): + if heading_idx not in heading_positions: + continue + + heading = headings[heading_idx] + heading_line_idx = heading_positions[heading_idx] + + if i + 1 < len(selected_indices): + next_heading_idx = selected_indices[i + 1] + if next_heading_idx in heading_positions: + next_heading_line_idx = heading_positions[next_heading_idx] + content_end = next_heading_line_idx + else: + content_end = len(lines) + else: + content_end = len(lines) + + content_lines = lines[heading_line_idx + 1 : content_end] + content = "\n".join(content_lines).strip() + + chunk = DocumentChunk( + heading=heading, + content=content, + heading_index=heading_idx, + score=heading_scores[heading_idx], + ) + chunks.append(chunk) + + return chunks + + async def get_n_chunks(self, text: str, n: int) -> List[DocumentChunk]: + headings = await asyncio.to_thread(self.extract_headings, text) + heading_scores = await asyncio.to_thread(self.score_headings, headings) + chunks = await asyncio.to_thread( + self.get_chunks_from_headings, text, headings, heading_scores, n + ) + if len(chunks) < n: + raise ValueError(f"Only {len(chunks)} chunks found, requested {n}") + return chunks diff --git a/backend/services/temp_file_service.py b/backend/services/temp_file_service.py new file mode 100644 index 0000000..c8a6651 --- /dev/null +++ b/backend/services/temp_file_service.py @@ -0,0 +1,70 @@ +import os +from typing import Optional, Union + +from utils.get_env import get_temp_directory_env +import uuid + + +class TempFileService: + + def __init__(self): + self.base_dir = get_temp_directory_env() or "/tmp/presenton" + self.cleanup_base_dir() + os.makedirs(self.base_dir, exist_ok=True) + + def create_dir_in_dir(self, base_dir: str, dir_name: Optional[str] = None) -> str: + temp_dir = os.path.join(base_dir, dir_name if dir_name else str(uuid.uuid4())) + os.makedirs(temp_dir, exist_ok=True) + return temp_dir + + def create_temp_dir(self, dir_name: Optional[str] = None) -> str: + return self.create_dir_in_dir(self.base_dir, dir_name) + + def create_temp_file_path( + self, file_path: str, dir_path: Optional[str] = None + ) -> str: + if dir_path is None: + dir_path = self.base_dir + + full_path = os.path.join(dir_path, file_path) + + os.makedirs(os.path.dirname(full_path), exist_ok=True) + return full_path + + def create_temp_file( + self, file_path: str, content: Union[bytes, str], dir_path: Optional[str] = None + ) -> str: + file_path = self.create_temp_file_path(file_path, dir_path) + mode = "wb" if isinstance(content, bytes) else "w" + with open(file_path, mode) as f: + f.write(content) + + return file_path + + def read_temp_file(self, file_path: str, binary: bool = True) -> Union[bytes, str]: + mode = "rb" if binary else "r" + with open(file_path, mode) as f: + return f.read() + + def cleanup_temp_file(self, file_path: str): + if os.path.exists(file_path): + os.remove(file_path) + + def delete_dir_files(self, dir_path: str): + if os.path.exists(dir_path): + for root, dirs, files in os.walk(dir_path, topdown=False): + for name in files: + os.remove(os.path.join(root, name)) + for name in dirs: + os.rmdir(os.path.join(root, name)) + + def cleanup_temp_dir(self, dir_path: str): + if os.path.exists(dir_path): + self.delete_dir_files(dir_path) + os.rmdir(dir_path) + + def cleanup_base_dir(self): + self.cleanup_temp_dir(self.base_dir) + + +TEMP_FILE_SERVICE = TempFileService() diff --git a/backend/services/webhook_service.py b/backend/services/webhook_service.py new file mode 100644 index 0000000..4525e15 --- /dev/null +++ b/backend/services/webhook_service.py @@ -0,0 +1,55 @@ +import asyncio +import aiohttp +from sqlmodel import select +from enums.webhook_event import WebhookEvent +from models.sql.webhook_subscription import WebhookSubscription +from services.database import get_async_session + + +class WebhookService: + + @classmethod + async def send_webhook(cls, event: WebhookEvent, data: dict): + async for sql_session in get_async_session(): + webhook_subscriptions = await sql_session.scalars( + select(WebhookSubscription).where( + WebhookSubscription.event == event.value + ) + ) + webhook_subscriptions = list(webhook_subscriptions) + if not webhook_subscriptions: + return + + async_tasks = [] + for webhook_subscription in webhook_subscriptions: + async_tasks.append( + cls.send_request_to_webhook(webhook_subscription, data) + ) + + await asyncio.gather(*async_tasks) + + break + + @classmethod + async def send_request_to_webhook( + cls, subscription: WebhookSubscription, data: dict + ): + + headers = { + "Content-Type": "application/json", + } + if subscription.secret: + headers["Authorization"] = f"Bearer {subscription.secret}" + + try: + async with aiohttp.ClientSession() as session: + async with session.post( + subscription.url, + json=data, + headers=headers, + ) as _: + pass + + except Exception as e: + print(f"Error sending request to webhook {subscription.id}: {e}") + pass diff --git a/backend/static/icons/bold/acorn-bold.svg b/backend/static/icons/bold/acorn-bold.svg new file mode 100644 index 0000000..e64b5f6 --- /dev/null +++ b/backend/static/icons/bold/acorn-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/address-book-bold.svg b/backend/static/icons/bold/address-book-bold.svg new file mode 100644 index 0000000..4222740 --- /dev/null +++ b/backend/static/icons/bold/address-book-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/address-book-tabs-bold.svg b/backend/static/icons/bold/address-book-tabs-bold.svg new file mode 100644 index 0000000..b0221f8 --- /dev/null +++ b/backend/static/icons/bold/address-book-tabs-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/air-traffic-control-bold.svg b/backend/static/icons/bold/air-traffic-control-bold.svg new file mode 100644 index 0000000..23182af --- /dev/null +++ b/backend/static/icons/bold/air-traffic-control-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplane-bold.svg b/backend/static/icons/bold/airplane-bold.svg new file mode 100644 index 0000000..a6ea4dd --- /dev/null +++ b/backend/static/icons/bold/airplane-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplane-in-flight-bold.svg b/backend/static/icons/bold/airplane-in-flight-bold.svg new file mode 100644 index 0000000..3b493cc --- /dev/null +++ b/backend/static/icons/bold/airplane-in-flight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplane-landing-bold.svg b/backend/static/icons/bold/airplane-landing-bold.svg new file mode 100644 index 0000000..e020333 --- /dev/null +++ b/backend/static/icons/bold/airplane-landing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplane-takeoff-bold.svg b/backend/static/icons/bold/airplane-takeoff-bold.svg new file mode 100644 index 0000000..4a66831 --- /dev/null +++ b/backend/static/icons/bold/airplane-takeoff-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplane-taxiing-bold.svg b/backend/static/icons/bold/airplane-taxiing-bold.svg new file mode 100644 index 0000000..7573299 --- /dev/null +++ b/backend/static/icons/bold/airplane-taxiing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplane-tilt-bold.svg b/backend/static/icons/bold/airplane-tilt-bold.svg new file mode 100644 index 0000000..0fd5087 --- /dev/null +++ b/backend/static/icons/bold/airplane-tilt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/airplay-bold.svg b/backend/static/icons/bold/airplay-bold.svg new file mode 100644 index 0000000..ca52ce9 --- /dev/null +++ b/backend/static/icons/bold/airplay-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/alarm-bold.svg b/backend/static/icons/bold/alarm-bold.svg new file mode 100644 index 0000000..7daeac9 --- /dev/null +++ b/backend/static/icons/bold/alarm-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/alien-bold.svg b/backend/static/icons/bold/alien-bold.svg new file mode 100644 index 0000000..2556b29 --- /dev/null +++ b/backend/static/icons/bold/alien-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-bottom-bold.svg b/backend/static/icons/bold/align-bottom-bold.svg new file mode 100644 index 0000000..6bc5598 --- /dev/null +++ b/backend/static/icons/bold/align-bottom-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-bottom-simple-bold.svg b/backend/static/icons/bold/align-bottom-simple-bold.svg new file mode 100644 index 0000000..647b79e --- /dev/null +++ b/backend/static/icons/bold/align-bottom-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-center-horizontal-bold.svg b/backend/static/icons/bold/align-center-horizontal-bold.svg new file mode 100644 index 0000000..dc24acb --- /dev/null +++ b/backend/static/icons/bold/align-center-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-center-horizontal-simple-bold.svg b/backend/static/icons/bold/align-center-horizontal-simple-bold.svg new file mode 100644 index 0000000..9d2f57b --- /dev/null +++ b/backend/static/icons/bold/align-center-horizontal-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-center-vertical-bold.svg b/backend/static/icons/bold/align-center-vertical-bold.svg new file mode 100644 index 0000000..42a189d --- /dev/null +++ b/backend/static/icons/bold/align-center-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-center-vertical-simple-bold.svg b/backend/static/icons/bold/align-center-vertical-simple-bold.svg new file mode 100644 index 0000000..9fe9b45 --- /dev/null +++ b/backend/static/icons/bold/align-center-vertical-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-left-bold.svg b/backend/static/icons/bold/align-left-bold.svg new file mode 100644 index 0000000..c0e5ddd --- /dev/null +++ b/backend/static/icons/bold/align-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-left-simple-bold.svg b/backend/static/icons/bold/align-left-simple-bold.svg new file mode 100644 index 0000000..146b5e0 --- /dev/null +++ b/backend/static/icons/bold/align-left-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-right-bold.svg b/backend/static/icons/bold/align-right-bold.svg new file mode 100644 index 0000000..bde198f --- /dev/null +++ b/backend/static/icons/bold/align-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-right-simple-bold.svg b/backend/static/icons/bold/align-right-simple-bold.svg new file mode 100644 index 0000000..0b87fc7 --- /dev/null +++ b/backend/static/icons/bold/align-right-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-top-bold.svg b/backend/static/icons/bold/align-top-bold.svg new file mode 100644 index 0000000..261512b --- /dev/null +++ b/backend/static/icons/bold/align-top-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/align-top-simple-bold.svg b/backend/static/icons/bold/align-top-simple-bold.svg new file mode 100644 index 0000000..f2ceae5 --- /dev/null +++ b/backend/static/icons/bold/align-top-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/amazon-logo-bold.svg b/backend/static/icons/bold/amazon-logo-bold.svg new file mode 100644 index 0000000..cec3bcd --- /dev/null +++ b/backend/static/icons/bold/amazon-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ambulance-bold.svg b/backend/static/icons/bold/ambulance-bold.svg new file mode 100644 index 0000000..be5f728 --- /dev/null +++ b/backend/static/icons/bold/ambulance-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/anchor-bold.svg b/backend/static/icons/bold/anchor-bold.svg new file mode 100644 index 0000000..37adc99 --- /dev/null +++ b/backend/static/icons/bold/anchor-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/anchor-simple-bold.svg b/backend/static/icons/bold/anchor-simple-bold.svg new file mode 100644 index 0000000..f8113f0 --- /dev/null +++ b/backend/static/icons/bold/anchor-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/android-logo-bold.svg b/backend/static/icons/bold/android-logo-bold.svg new file mode 100644 index 0000000..d8544d8 --- /dev/null +++ b/backend/static/icons/bold/android-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/angle-bold.svg b/backend/static/icons/bold/angle-bold.svg new file mode 100644 index 0000000..740c078 --- /dev/null +++ b/backend/static/icons/bold/angle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/angular-logo-bold.svg b/backend/static/icons/bold/angular-logo-bold.svg new file mode 100644 index 0000000..2cfb673 --- /dev/null +++ b/backend/static/icons/bold/angular-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/aperture-bold.svg b/backend/static/icons/bold/aperture-bold.svg new file mode 100644 index 0000000..1244906 --- /dev/null +++ b/backend/static/icons/bold/aperture-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/app-store-logo-bold.svg b/backend/static/icons/bold/app-store-logo-bold.svg new file mode 100644 index 0000000..8fde302 --- /dev/null +++ b/backend/static/icons/bold/app-store-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/app-window-bold.svg b/backend/static/icons/bold/app-window-bold.svg new file mode 100644 index 0000000..deed942 --- /dev/null +++ b/backend/static/icons/bold/app-window-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/apple-logo-bold.svg b/backend/static/icons/bold/apple-logo-bold.svg new file mode 100644 index 0000000..654f073 --- /dev/null +++ b/backend/static/icons/bold/apple-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/apple-podcasts-logo-bold.svg b/backend/static/icons/bold/apple-podcasts-logo-bold.svg new file mode 100644 index 0000000..bdcf52a --- /dev/null +++ b/backend/static/icons/bold/apple-podcasts-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/approximate-equals-bold.svg b/backend/static/icons/bold/approximate-equals-bold.svg new file mode 100644 index 0000000..d0585c5 --- /dev/null +++ b/backend/static/icons/bold/approximate-equals-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/archive-bold.svg b/backend/static/icons/bold/archive-bold.svg new file mode 100644 index 0000000..ee07349 --- /dev/null +++ b/backend/static/icons/bold/archive-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/armchair-bold.svg b/backend/static/icons/bold/armchair-bold.svg new file mode 100644 index 0000000..216122e --- /dev/null +++ b/backend/static/icons/bold/armchair-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-arc-left-bold.svg b/backend/static/icons/bold/arrow-arc-left-bold.svg new file mode 100644 index 0000000..8087017 --- /dev/null +++ b/backend/static/icons/bold/arrow-arc-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-arc-right-bold.svg b/backend/static/icons/bold/arrow-arc-right-bold.svg new file mode 100644 index 0000000..852f8a3 --- /dev/null +++ b/backend/static/icons/bold/arrow-arc-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-double-up-left-bold.svg b/backend/static/icons/bold/arrow-bend-double-up-left-bold.svg new file mode 100644 index 0000000..a966c62 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-double-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-double-up-right-bold.svg b/backend/static/icons/bold/arrow-bend-double-up-right-bold.svg new file mode 100644 index 0000000..d0c9f63 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-double-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-down-left-bold.svg b/backend/static/icons/bold/arrow-bend-down-left-bold.svg new file mode 100644 index 0000000..4e75c20 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-down-right-bold.svg b/backend/static/icons/bold/arrow-bend-down-right-bold.svg new file mode 100644 index 0000000..03f1b1c --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-left-down-bold.svg b/backend/static/icons/bold/arrow-bend-left-down-bold.svg new file mode 100644 index 0000000..3a05bd6 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-left-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-left-up-bold.svg b/backend/static/icons/bold/arrow-bend-left-up-bold.svg new file mode 100644 index 0000000..b6713f1 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-left-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-right-down-bold.svg b/backend/static/icons/bold/arrow-bend-right-down-bold.svg new file mode 100644 index 0000000..23261f4 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-right-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-right-up-bold.svg b/backend/static/icons/bold/arrow-bend-right-up-bold.svg new file mode 100644 index 0000000..cd76e41 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-right-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-up-left-bold.svg b/backend/static/icons/bold/arrow-bend-up-left-bold.svg new file mode 100644 index 0000000..c3cbdb9 --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-bend-up-right-bold.svg b/backend/static/icons/bold/arrow-bend-up-right-bold.svg new file mode 100644 index 0000000..c18562d --- /dev/null +++ b/backend/static/icons/bold/arrow-bend-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-down-bold.svg b/backend/static/icons/bold/arrow-circle-down-bold.svg new file mode 100644 index 0000000..81b805e --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-down-left-bold.svg b/backend/static/icons/bold/arrow-circle-down-left-bold.svg new file mode 100644 index 0000000..c6c6922 --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-down-right-bold.svg b/backend/static/icons/bold/arrow-circle-down-right-bold.svg new file mode 100644 index 0000000..cffbdca --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-left-bold.svg b/backend/static/icons/bold/arrow-circle-left-bold.svg new file mode 100644 index 0000000..e859aec --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-right-bold.svg b/backend/static/icons/bold/arrow-circle-right-bold.svg new file mode 100644 index 0000000..cc84213 --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-up-bold.svg b/backend/static/icons/bold/arrow-circle-up-bold.svg new file mode 100644 index 0000000..07cecca --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-up-left-bold.svg b/backend/static/icons/bold/arrow-circle-up-left-bold.svg new file mode 100644 index 0000000..edcfa3d --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-circle-up-right-bold.svg b/backend/static/icons/bold/arrow-circle-up-right-bold.svg new file mode 100644 index 0000000..ab117be --- /dev/null +++ b/backend/static/icons/bold/arrow-circle-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-clockwise-bold.svg b/backend/static/icons/bold/arrow-clockwise-bold.svg new file mode 100644 index 0000000..18685da --- /dev/null +++ b/backend/static/icons/bold/arrow-clockwise-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-counter-clockwise-bold.svg b/backend/static/icons/bold/arrow-counter-clockwise-bold.svg new file mode 100644 index 0000000..b14545f --- /dev/null +++ b/backend/static/icons/bold/arrow-counter-clockwise-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-down-bold.svg b/backend/static/icons/bold/arrow-down-bold.svg new file mode 100644 index 0000000..0cdb05e --- /dev/null +++ b/backend/static/icons/bold/arrow-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-down-left-bold.svg b/backend/static/icons/bold/arrow-down-left-bold.svg new file mode 100644 index 0000000..050da84 --- /dev/null +++ b/backend/static/icons/bold/arrow-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-down-right-bold.svg b/backend/static/icons/bold/arrow-down-right-bold.svg new file mode 100644 index 0000000..834a890 --- /dev/null +++ b/backend/static/icons/bold/arrow-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-down-left-bold.svg b/backend/static/icons/bold/arrow-elbow-down-left-bold.svg new file mode 100644 index 0000000..ef04fd9 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-down-right-bold.svg b/backend/static/icons/bold/arrow-elbow-down-right-bold.svg new file mode 100644 index 0000000..4c23452 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-left-bold.svg b/backend/static/icons/bold/arrow-elbow-left-bold.svg new file mode 100644 index 0000000..30513c7 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-left-down-bold.svg b/backend/static/icons/bold/arrow-elbow-left-down-bold.svg new file mode 100644 index 0000000..95f987d --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-left-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-left-up-bold.svg b/backend/static/icons/bold/arrow-elbow-left-up-bold.svg new file mode 100644 index 0000000..60da724 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-left-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-right-bold.svg b/backend/static/icons/bold/arrow-elbow-right-bold.svg new file mode 100644 index 0000000..fb4f53f --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-right-down-bold.svg b/backend/static/icons/bold/arrow-elbow-right-down-bold.svg new file mode 100644 index 0000000..4301e0a --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-right-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-right-up-bold.svg b/backend/static/icons/bold/arrow-elbow-right-up-bold.svg new file mode 100644 index 0000000..406b699 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-right-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-up-left-bold.svg b/backend/static/icons/bold/arrow-elbow-up-left-bold.svg new file mode 100644 index 0000000..1977684 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-elbow-up-right-bold.svg b/backend/static/icons/bold/arrow-elbow-up-right-bold.svg new file mode 100644 index 0000000..28f7d07 --- /dev/null +++ b/backend/static/icons/bold/arrow-elbow-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-down-bold.svg b/backend/static/icons/bold/arrow-fat-down-bold.svg new file mode 100644 index 0000000..de03027 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-left-bold.svg b/backend/static/icons/bold/arrow-fat-left-bold.svg new file mode 100644 index 0000000..cec5d23 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-line-down-bold.svg b/backend/static/icons/bold/arrow-fat-line-down-bold.svg new file mode 100644 index 0000000..5a188a9 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-line-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-line-left-bold.svg b/backend/static/icons/bold/arrow-fat-line-left-bold.svg new file mode 100644 index 0000000..f9233b8 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-line-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-line-right-bold.svg b/backend/static/icons/bold/arrow-fat-line-right-bold.svg new file mode 100644 index 0000000..3d5b246 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-line-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-line-up-bold.svg b/backend/static/icons/bold/arrow-fat-line-up-bold.svg new file mode 100644 index 0000000..59203cf --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-line-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-lines-down-bold.svg b/backend/static/icons/bold/arrow-fat-lines-down-bold.svg new file mode 100644 index 0000000..db9ab7a --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-lines-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-lines-left-bold.svg b/backend/static/icons/bold/arrow-fat-lines-left-bold.svg new file mode 100644 index 0000000..ad6b43f --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-lines-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-lines-right-bold.svg b/backend/static/icons/bold/arrow-fat-lines-right-bold.svg new file mode 100644 index 0000000..c131d98 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-lines-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-lines-up-bold.svg b/backend/static/icons/bold/arrow-fat-lines-up-bold.svg new file mode 100644 index 0000000..b09db5b --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-lines-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-right-bold.svg b/backend/static/icons/bold/arrow-fat-right-bold.svg new file mode 100644 index 0000000..efd3c31 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-fat-up-bold.svg b/backend/static/icons/bold/arrow-fat-up-bold.svg new file mode 100644 index 0000000..bc914f0 --- /dev/null +++ b/backend/static/icons/bold/arrow-fat-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-left-bold.svg b/backend/static/icons/bold/arrow-left-bold.svg new file mode 100644 index 0000000..6ef7f7e --- /dev/null +++ b/backend/static/icons/bold/arrow-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-down-bold.svg b/backend/static/icons/bold/arrow-line-down-bold.svg new file mode 100644 index 0000000..ab3ce20 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-down-left-bold.svg b/backend/static/icons/bold/arrow-line-down-left-bold.svg new file mode 100644 index 0000000..6622a23 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-down-right-bold.svg b/backend/static/icons/bold/arrow-line-down-right-bold.svg new file mode 100644 index 0000000..4c58c6e --- /dev/null +++ b/backend/static/icons/bold/arrow-line-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-left-bold.svg b/backend/static/icons/bold/arrow-line-left-bold.svg new file mode 100644 index 0000000..4861277 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-right-bold.svg b/backend/static/icons/bold/arrow-line-right-bold.svg new file mode 100644 index 0000000..09b0c50 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-up-bold.svg b/backend/static/icons/bold/arrow-line-up-bold.svg new file mode 100644 index 0000000..0a9b0b7 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-up-left-bold.svg b/backend/static/icons/bold/arrow-line-up-left-bold.svg new file mode 100644 index 0000000..0bb4f71 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-line-up-right-bold.svg b/backend/static/icons/bold/arrow-line-up-right-bold.svg new file mode 100644 index 0000000..42b9fb8 --- /dev/null +++ b/backend/static/icons/bold/arrow-line-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-right-bold.svg b/backend/static/icons/bold/arrow-right-bold.svg new file mode 100644 index 0000000..81784be --- /dev/null +++ b/backend/static/icons/bold/arrow-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-down-bold.svg b/backend/static/icons/bold/arrow-square-down-bold.svg new file mode 100644 index 0000000..c58a9b1 --- /dev/null +++ b/backend/static/icons/bold/arrow-square-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-down-left-bold.svg b/backend/static/icons/bold/arrow-square-down-left-bold.svg new file mode 100644 index 0000000..2b3c50a --- /dev/null +++ b/backend/static/icons/bold/arrow-square-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-down-right-bold.svg b/backend/static/icons/bold/arrow-square-down-right-bold.svg new file mode 100644 index 0000000..bcad6a8 --- /dev/null +++ b/backend/static/icons/bold/arrow-square-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-in-bold.svg b/backend/static/icons/bold/arrow-square-in-bold.svg new file mode 100644 index 0000000..53345dc --- /dev/null +++ b/backend/static/icons/bold/arrow-square-in-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-left-bold.svg b/backend/static/icons/bold/arrow-square-left-bold.svg new file mode 100644 index 0000000..d0662db --- /dev/null +++ b/backend/static/icons/bold/arrow-square-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-out-bold.svg b/backend/static/icons/bold/arrow-square-out-bold.svg new file mode 100644 index 0000000..018c102 --- /dev/null +++ b/backend/static/icons/bold/arrow-square-out-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-right-bold.svg b/backend/static/icons/bold/arrow-square-right-bold.svg new file mode 100644 index 0000000..bd283bb --- /dev/null +++ b/backend/static/icons/bold/arrow-square-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-up-bold.svg b/backend/static/icons/bold/arrow-square-up-bold.svg new file mode 100644 index 0000000..4502cd4 --- /dev/null +++ b/backend/static/icons/bold/arrow-square-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-up-left-bold.svg b/backend/static/icons/bold/arrow-square-up-left-bold.svg new file mode 100644 index 0000000..95c5a5a --- /dev/null +++ b/backend/static/icons/bold/arrow-square-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-square-up-right-bold.svg b/backend/static/icons/bold/arrow-square-up-right-bold.svg new file mode 100644 index 0000000..9a31f3f --- /dev/null +++ b/backend/static/icons/bold/arrow-square-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-down-left-bold.svg b/backend/static/icons/bold/arrow-u-down-left-bold.svg new file mode 100644 index 0000000..60ac112 --- /dev/null +++ b/backend/static/icons/bold/arrow-u-down-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-down-right-bold.svg b/backend/static/icons/bold/arrow-u-down-right-bold.svg new file mode 100644 index 0000000..6b782d2 --- /dev/null +++ b/backend/static/icons/bold/arrow-u-down-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-left-down-bold.svg b/backend/static/icons/bold/arrow-u-left-down-bold.svg new file mode 100644 index 0000000..403af9c --- /dev/null +++ b/backend/static/icons/bold/arrow-u-left-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-left-up-bold.svg b/backend/static/icons/bold/arrow-u-left-up-bold.svg new file mode 100644 index 0000000..85d0da1 --- /dev/null +++ b/backend/static/icons/bold/arrow-u-left-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-right-down-bold.svg b/backend/static/icons/bold/arrow-u-right-down-bold.svg new file mode 100644 index 0000000..22a9032 --- /dev/null +++ b/backend/static/icons/bold/arrow-u-right-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-right-up-bold.svg b/backend/static/icons/bold/arrow-u-right-up-bold.svg new file mode 100644 index 0000000..f0b5f40 --- /dev/null +++ b/backend/static/icons/bold/arrow-u-right-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-up-left-bold.svg b/backend/static/icons/bold/arrow-u-up-left-bold.svg new file mode 100644 index 0000000..88c98eb --- /dev/null +++ b/backend/static/icons/bold/arrow-u-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-u-up-right-bold.svg b/backend/static/icons/bold/arrow-u-up-right-bold.svg new file mode 100644 index 0000000..70dd087 --- /dev/null +++ b/backend/static/icons/bold/arrow-u-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-up-bold.svg b/backend/static/icons/bold/arrow-up-bold.svg new file mode 100644 index 0000000..f78b4b4 --- /dev/null +++ b/backend/static/icons/bold/arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-up-left-bold.svg b/backend/static/icons/bold/arrow-up-left-bold.svg new file mode 100644 index 0000000..6a02554 --- /dev/null +++ b/backend/static/icons/bold/arrow-up-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrow-up-right-bold.svg b/backend/static/icons/bold/arrow-up-right-bold.svg new file mode 100644 index 0000000..7ed9314 --- /dev/null +++ b/backend/static/icons/bold/arrow-up-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-clockwise-bold.svg b/backend/static/icons/bold/arrows-clockwise-bold.svg new file mode 100644 index 0000000..1ca3f83 --- /dev/null +++ b/backend/static/icons/bold/arrows-clockwise-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-counter-clockwise-bold.svg b/backend/static/icons/bold/arrows-counter-clockwise-bold.svg new file mode 100644 index 0000000..b76283b --- /dev/null +++ b/backend/static/icons/bold/arrows-counter-clockwise-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-down-up-bold.svg b/backend/static/icons/bold/arrows-down-up-bold.svg new file mode 100644 index 0000000..eaf4af5 --- /dev/null +++ b/backend/static/icons/bold/arrows-down-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-horizontal-bold.svg b/backend/static/icons/bold/arrows-horizontal-bold.svg new file mode 100644 index 0000000..0f8aaaa --- /dev/null +++ b/backend/static/icons/bold/arrows-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-in-bold.svg b/backend/static/icons/bold/arrows-in-bold.svg new file mode 100644 index 0000000..7ef865a --- /dev/null +++ b/backend/static/icons/bold/arrows-in-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-in-cardinal-bold.svg b/backend/static/icons/bold/arrows-in-cardinal-bold.svg new file mode 100644 index 0000000..fe65f6a --- /dev/null +++ b/backend/static/icons/bold/arrows-in-cardinal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-in-line-horizontal-bold.svg b/backend/static/icons/bold/arrows-in-line-horizontal-bold.svg new file mode 100644 index 0000000..811ab60 --- /dev/null +++ b/backend/static/icons/bold/arrows-in-line-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-in-line-vertical-bold.svg b/backend/static/icons/bold/arrows-in-line-vertical-bold.svg new file mode 100644 index 0000000..52dbfa4 --- /dev/null +++ b/backend/static/icons/bold/arrows-in-line-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-in-simple-bold.svg b/backend/static/icons/bold/arrows-in-simple-bold.svg new file mode 100644 index 0000000..3a80427 --- /dev/null +++ b/backend/static/icons/bold/arrows-in-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-left-right-bold.svg b/backend/static/icons/bold/arrows-left-right-bold.svg new file mode 100644 index 0000000..950520d --- /dev/null +++ b/backend/static/icons/bold/arrows-left-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-merge-bold.svg b/backend/static/icons/bold/arrows-merge-bold.svg new file mode 100644 index 0000000..f79552b --- /dev/null +++ b/backend/static/icons/bold/arrows-merge-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-out-bold.svg b/backend/static/icons/bold/arrows-out-bold.svg new file mode 100644 index 0000000..120ee2f --- /dev/null +++ b/backend/static/icons/bold/arrows-out-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-out-cardinal-bold.svg b/backend/static/icons/bold/arrows-out-cardinal-bold.svg new file mode 100644 index 0000000..a7d31dd --- /dev/null +++ b/backend/static/icons/bold/arrows-out-cardinal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-out-line-horizontal-bold.svg b/backend/static/icons/bold/arrows-out-line-horizontal-bold.svg new file mode 100644 index 0000000..fb33a47 --- /dev/null +++ b/backend/static/icons/bold/arrows-out-line-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-out-line-vertical-bold.svg b/backend/static/icons/bold/arrows-out-line-vertical-bold.svg new file mode 100644 index 0000000..e21c647 --- /dev/null +++ b/backend/static/icons/bold/arrows-out-line-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-out-simple-bold.svg b/backend/static/icons/bold/arrows-out-simple-bold.svg new file mode 100644 index 0000000..79f1b0b --- /dev/null +++ b/backend/static/icons/bold/arrows-out-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-split-bold.svg b/backend/static/icons/bold/arrows-split-bold.svg new file mode 100644 index 0000000..b2c1984 --- /dev/null +++ b/backend/static/icons/bold/arrows-split-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/arrows-vertical-bold.svg b/backend/static/icons/bold/arrows-vertical-bold.svg new file mode 100644 index 0000000..2467dc0 --- /dev/null +++ b/backend/static/icons/bold/arrows-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/article-bold.svg b/backend/static/icons/bold/article-bold.svg new file mode 100644 index 0000000..d999754 --- /dev/null +++ b/backend/static/icons/bold/article-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/article-medium-bold.svg b/backend/static/icons/bold/article-medium-bold.svg new file mode 100644 index 0000000..70cb853 --- /dev/null +++ b/backend/static/icons/bold/article-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/article-ny-times-bold.svg b/backend/static/icons/bold/article-ny-times-bold.svg new file mode 100644 index 0000000..ed013ee --- /dev/null +++ b/backend/static/icons/bold/article-ny-times-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/asclepius-bold.svg b/backend/static/icons/bold/asclepius-bold.svg new file mode 100644 index 0000000..530a362 --- /dev/null +++ b/backend/static/icons/bold/asclepius-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/asterisk-bold.svg b/backend/static/icons/bold/asterisk-bold.svg new file mode 100644 index 0000000..d83f799 --- /dev/null +++ b/backend/static/icons/bold/asterisk-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/asterisk-simple-bold.svg b/backend/static/icons/bold/asterisk-simple-bold.svg new file mode 100644 index 0000000..612dc7f --- /dev/null +++ b/backend/static/icons/bold/asterisk-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/at-bold.svg b/backend/static/icons/bold/at-bold.svg new file mode 100644 index 0000000..8f0abde --- /dev/null +++ b/backend/static/icons/bold/at-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/atom-bold.svg b/backend/static/icons/bold/atom-bold.svg new file mode 100644 index 0000000..8c1590c --- /dev/null +++ b/backend/static/icons/bold/atom-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/avocado-bold.svg b/backend/static/icons/bold/avocado-bold.svg new file mode 100644 index 0000000..ccebcb9 --- /dev/null +++ b/backend/static/icons/bold/avocado-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/axe-bold.svg b/backend/static/icons/bold/axe-bold.svg new file mode 100644 index 0000000..f4777d0 --- /dev/null +++ b/backend/static/icons/bold/axe-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/baby-bold.svg b/backend/static/icons/bold/baby-bold.svg new file mode 100644 index 0000000..45e54e1 --- /dev/null +++ b/backend/static/icons/bold/baby-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/baby-carriage-bold.svg b/backend/static/icons/bold/baby-carriage-bold.svg new file mode 100644 index 0000000..ed12028 --- /dev/null +++ b/backend/static/icons/bold/baby-carriage-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/backpack-bold.svg b/backend/static/icons/bold/backpack-bold.svg new file mode 100644 index 0000000..e027b81 --- /dev/null +++ b/backend/static/icons/bold/backpack-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/backspace-bold.svg b/backend/static/icons/bold/backspace-bold.svg new file mode 100644 index 0000000..afa3479 --- /dev/null +++ b/backend/static/icons/bold/backspace-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bag-bold.svg b/backend/static/icons/bold/bag-bold.svg new file mode 100644 index 0000000..decf6a1 --- /dev/null +++ b/backend/static/icons/bold/bag-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bag-simple-bold.svg b/backend/static/icons/bold/bag-simple-bold.svg new file mode 100644 index 0000000..adb2331 --- /dev/null +++ b/backend/static/icons/bold/bag-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/balloon-bold.svg b/backend/static/icons/bold/balloon-bold.svg new file mode 100644 index 0000000..c4c1354 --- /dev/null +++ b/backend/static/icons/bold/balloon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bandaids-bold.svg b/backend/static/icons/bold/bandaids-bold.svg new file mode 100644 index 0000000..da9eb81 --- /dev/null +++ b/backend/static/icons/bold/bandaids-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bank-bold.svg b/backend/static/icons/bold/bank-bold.svg new file mode 100644 index 0000000..e02398b --- /dev/null +++ b/backend/static/icons/bold/bank-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/barbell-bold.svg b/backend/static/icons/bold/barbell-bold.svg new file mode 100644 index 0000000..a866170 --- /dev/null +++ b/backend/static/icons/bold/barbell-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/barcode-bold.svg b/backend/static/icons/bold/barcode-bold.svg new file mode 100644 index 0000000..b8af8d4 --- /dev/null +++ b/backend/static/icons/bold/barcode-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/barn-bold.svg b/backend/static/icons/bold/barn-bold.svg new file mode 100644 index 0000000..0bf1ce6 --- /dev/null +++ b/backend/static/icons/bold/barn-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/barricade-bold.svg b/backend/static/icons/bold/barricade-bold.svg new file mode 100644 index 0000000..87081f3 --- /dev/null +++ b/backend/static/icons/bold/barricade-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/baseball-bold.svg b/backend/static/icons/bold/baseball-bold.svg new file mode 100644 index 0000000..3c74040 --- /dev/null +++ b/backend/static/icons/bold/baseball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/baseball-cap-bold.svg b/backend/static/icons/bold/baseball-cap-bold.svg new file mode 100644 index 0000000..d9bef40 --- /dev/null +++ b/backend/static/icons/bold/baseball-cap-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/baseball-helmet-bold.svg b/backend/static/icons/bold/baseball-helmet-bold.svg new file mode 100644 index 0000000..dc14812 --- /dev/null +++ b/backend/static/icons/bold/baseball-helmet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/basket-bold.svg b/backend/static/icons/bold/basket-bold.svg new file mode 100644 index 0000000..9a59e61 --- /dev/null +++ b/backend/static/icons/bold/basket-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/basketball-bold.svg b/backend/static/icons/bold/basketball-bold.svg new file mode 100644 index 0000000..8fad8e1 --- /dev/null +++ b/backend/static/icons/bold/basketball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bathtub-bold.svg b/backend/static/icons/bold/bathtub-bold.svg new file mode 100644 index 0000000..17a6000 --- /dev/null +++ b/backend/static/icons/bold/bathtub-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-charging-bold.svg b/backend/static/icons/bold/battery-charging-bold.svg new file mode 100644 index 0000000..adf225f --- /dev/null +++ b/backend/static/icons/bold/battery-charging-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-charging-vertical-bold.svg b/backend/static/icons/bold/battery-charging-vertical-bold.svg new file mode 100644 index 0000000..b787082 --- /dev/null +++ b/backend/static/icons/bold/battery-charging-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-empty-bold.svg b/backend/static/icons/bold/battery-empty-bold.svg new file mode 100644 index 0000000..086d508 --- /dev/null +++ b/backend/static/icons/bold/battery-empty-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-full-bold.svg b/backend/static/icons/bold/battery-full-bold.svg new file mode 100644 index 0000000..3696a15 --- /dev/null +++ b/backend/static/icons/bold/battery-full-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-high-bold.svg b/backend/static/icons/bold/battery-high-bold.svg new file mode 100644 index 0000000..c8d9703 --- /dev/null +++ b/backend/static/icons/bold/battery-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-low-bold.svg b/backend/static/icons/bold/battery-low-bold.svg new file mode 100644 index 0000000..ff46376 --- /dev/null +++ b/backend/static/icons/bold/battery-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-medium-bold.svg b/backend/static/icons/bold/battery-medium-bold.svg new file mode 100644 index 0000000..65fabb1 --- /dev/null +++ b/backend/static/icons/bold/battery-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-plus-bold.svg b/backend/static/icons/bold/battery-plus-bold.svg new file mode 100644 index 0000000..4f6d9e9 --- /dev/null +++ b/backend/static/icons/bold/battery-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-plus-vertical-bold.svg b/backend/static/icons/bold/battery-plus-vertical-bold.svg new file mode 100644 index 0000000..b2add17 --- /dev/null +++ b/backend/static/icons/bold/battery-plus-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-vertical-empty-bold.svg b/backend/static/icons/bold/battery-vertical-empty-bold.svg new file mode 100644 index 0000000..fceaaac --- /dev/null +++ b/backend/static/icons/bold/battery-vertical-empty-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-vertical-full-bold.svg b/backend/static/icons/bold/battery-vertical-full-bold.svg new file mode 100644 index 0000000..9a50f5b --- /dev/null +++ b/backend/static/icons/bold/battery-vertical-full-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-vertical-high-bold.svg b/backend/static/icons/bold/battery-vertical-high-bold.svg new file mode 100644 index 0000000..49d5a42 --- /dev/null +++ b/backend/static/icons/bold/battery-vertical-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-vertical-low-bold.svg b/backend/static/icons/bold/battery-vertical-low-bold.svg new file mode 100644 index 0000000..62b7767 --- /dev/null +++ b/backend/static/icons/bold/battery-vertical-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-vertical-medium-bold.svg b/backend/static/icons/bold/battery-vertical-medium-bold.svg new file mode 100644 index 0000000..38e0caf --- /dev/null +++ b/backend/static/icons/bold/battery-vertical-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-warning-bold.svg b/backend/static/icons/bold/battery-warning-bold.svg new file mode 100644 index 0000000..e09af2f --- /dev/null +++ b/backend/static/icons/bold/battery-warning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/battery-warning-vertical-bold.svg b/backend/static/icons/bold/battery-warning-vertical-bold.svg new file mode 100644 index 0000000..c4b0e74 --- /dev/null +++ b/backend/static/icons/bold/battery-warning-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/beach-ball-bold.svg b/backend/static/icons/bold/beach-ball-bold.svg new file mode 100644 index 0000000..e2e5ff8 --- /dev/null +++ b/backend/static/icons/bold/beach-ball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/beanie-bold.svg b/backend/static/icons/bold/beanie-bold.svg new file mode 100644 index 0000000..5268824 --- /dev/null +++ b/backend/static/icons/bold/beanie-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bed-bold.svg b/backend/static/icons/bold/bed-bold.svg new file mode 100644 index 0000000..99cf8cf --- /dev/null +++ b/backend/static/icons/bold/bed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/beer-bottle-bold.svg b/backend/static/icons/bold/beer-bottle-bold.svg new file mode 100644 index 0000000..ee4eaff --- /dev/null +++ b/backend/static/icons/bold/beer-bottle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/beer-stein-bold.svg b/backend/static/icons/bold/beer-stein-bold.svg new file mode 100644 index 0000000..bddd677 --- /dev/null +++ b/backend/static/icons/bold/beer-stein-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/behance-logo-bold.svg b/backend/static/icons/bold/behance-logo-bold.svg new file mode 100644 index 0000000..5853f66 --- /dev/null +++ b/backend/static/icons/bold/behance-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-bold.svg b/backend/static/icons/bold/bell-bold.svg new file mode 100644 index 0000000..3a7826b --- /dev/null +++ b/backend/static/icons/bold/bell-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-ringing-bold.svg b/backend/static/icons/bold/bell-ringing-bold.svg new file mode 100644 index 0000000..5804a41 --- /dev/null +++ b/backend/static/icons/bold/bell-ringing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-simple-bold.svg b/backend/static/icons/bold/bell-simple-bold.svg new file mode 100644 index 0000000..398c767 --- /dev/null +++ b/backend/static/icons/bold/bell-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-simple-ringing-bold.svg b/backend/static/icons/bold/bell-simple-ringing-bold.svg new file mode 100644 index 0000000..2d5d5fc --- /dev/null +++ b/backend/static/icons/bold/bell-simple-ringing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-simple-slash-bold.svg b/backend/static/icons/bold/bell-simple-slash-bold.svg new file mode 100644 index 0000000..4ca71d7 --- /dev/null +++ b/backend/static/icons/bold/bell-simple-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-simple-z-bold.svg b/backend/static/icons/bold/bell-simple-z-bold.svg new file mode 100644 index 0000000..513ddc2 --- /dev/null +++ b/backend/static/icons/bold/bell-simple-z-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-slash-bold.svg b/backend/static/icons/bold/bell-slash-bold.svg new file mode 100644 index 0000000..9c9cc05 --- /dev/null +++ b/backend/static/icons/bold/bell-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bell-z-bold.svg b/backend/static/icons/bold/bell-z-bold.svg new file mode 100644 index 0000000..3e721eb --- /dev/null +++ b/backend/static/icons/bold/bell-z-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/belt-bold.svg b/backend/static/icons/bold/belt-bold.svg new file mode 100644 index 0000000..d3c3b59 --- /dev/null +++ b/backend/static/icons/bold/belt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bezier-curve-bold.svg b/backend/static/icons/bold/bezier-curve-bold.svg new file mode 100644 index 0000000..bc44054 --- /dev/null +++ b/backend/static/icons/bold/bezier-curve-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bicycle-bold.svg b/backend/static/icons/bold/bicycle-bold.svg new file mode 100644 index 0000000..1727b87 --- /dev/null +++ b/backend/static/icons/bold/bicycle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/binary-bold.svg b/backend/static/icons/bold/binary-bold.svg new file mode 100644 index 0000000..b97d322 --- /dev/null +++ b/backend/static/icons/bold/binary-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/binoculars-bold.svg b/backend/static/icons/bold/binoculars-bold.svg new file mode 100644 index 0000000..4b4df85 --- /dev/null +++ b/backend/static/icons/bold/binoculars-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/biohazard-bold.svg b/backend/static/icons/bold/biohazard-bold.svg new file mode 100644 index 0000000..033597c --- /dev/null +++ b/backend/static/icons/bold/biohazard-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bird-bold.svg b/backend/static/icons/bold/bird-bold.svg new file mode 100644 index 0000000..639af65 --- /dev/null +++ b/backend/static/icons/bold/bird-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/blueprint-bold.svg b/backend/static/icons/bold/blueprint-bold.svg new file mode 100644 index 0000000..bb24613 --- /dev/null +++ b/backend/static/icons/bold/blueprint-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bluetooth-bold.svg b/backend/static/icons/bold/bluetooth-bold.svg new file mode 100644 index 0000000..7e51fd9 --- /dev/null +++ b/backend/static/icons/bold/bluetooth-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bluetooth-connected-bold.svg b/backend/static/icons/bold/bluetooth-connected-bold.svg new file mode 100644 index 0000000..4e3636b --- /dev/null +++ b/backend/static/icons/bold/bluetooth-connected-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bluetooth-slash-bold.svg b/backend/static/icons/bold/bluetooth-slash-bold.svg new file mode 100644 index 0000000..022c173 --- /dev/null +++ b/backend/static/icons/bold/bluetooth-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bluetooth-x-bold.svg b/backend/static/icons/bold/bluetooth-x-bold.svg new file mode 100644 index 0000000..ecc5438 --- /dev/null +++ b/backend/static/icons/bold/bluetooth-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/boat-bold.svg b/backend/static/icons/bold/boat-bold.svg new file mode 100644 index 0000000..6baeb47 --- /dev/null +++ b/backend/static/icons/bold/boat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bomb-bold.svg b/backend/static/icons/bold/bomb-bold.svg new file mode 100644 index 0000000..1f71c89 --- /dev/null +++ b/backend/static/icons/bold/bomb-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bone-bold.svg b/backend/static/icons/bold/bone-bold.svg new file mode 100644 index 0000000..81f0f9c --- /dev/null +++ b/backend/static/icons/bold/bone-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/book-bold.svg b/backend/static/icons/bold/book-bold.svg new file mode 100644 index 0000000..b60ce0f --- /dev/null +++ b/backend/static/icons/bold/book-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/book-bookmark-bold.svg b/backend/static/icons/bold/book-bookmark-bold.svg new file mode 100644 index 0000000..4e55c4c --- /dev/null +++ b/backend/static/icons/bold/book-bookmark-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/book-open-bold.svg b/backend/static/icons/bold/book-open-bold.svg new file mode 100644 index 0000000..2fb0941 --- /dev/null +++ b/backend/static/icons/bold/book-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/book-open-text-bold.svg b/backend/static/icons/bold/book-open-text-bold.svg new file mode 100644 index 0000000..6c65fe8 --- /dev/null +++ b/backend/static/icons/bold/book-open-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/book-open-user-bold.svg b/backend/static/icons/bold/book-open-user-bold.svg new file mode 100644 index 0000000..644b53e --- /dev/null +++ b/backend/static/icons/bold/book-open-user-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bookmark-bold.svg b/backend/static/icons/bold/bookmark-bold.svg new file mode 100644 index 0000000..e71d66d --- /dev/null +++ b/backend/static/icons/bold/bookmark-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bookmark-simple-bold.svg b/backend/static/icons/bold/bookmark-simple-bold.svg new file mode 100644 index 0000000..1798842 --- /dev/null +++ b/backend/static/icons/bold/bookmark-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bookmarks-bold.svg b/backend/static/icons/bold/bookmarks-bold.svg new file mode 100644 index 0000000..99d58fa --- /dev/null +++ b/backend/static/icons/bold/bookmarks-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bookmarks-simple-bold.svg b/backend/static/icons/bold/bookmarks-simple-bold.svg new file mode 100644 index 0000000..dd50dd7 --- /dev/null +++ b/backend/static/icons/bold/bookmarks-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/books-bold.svg b/backend/static/icons/bold/books-bold.svg new file mode 100644 index 0000000..5fc6d56 --- /dev/null +++ b/backend/static/icons/bold/books-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/boot-bold.svg b/backend/static/icons/bold/boot-bold.svg new file mode 100644 index 0000000..1ff54d9 --- /dev/null +++ b/backend/static/icons/bold/boot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/boules-bold.svg b/backend/static/icons/bold/boules-bold.svg new file mode 100644 index 0000000..6972a8a --- /dev/null +++ b/backend/static/icons/bold/boules-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bounding-box-bold.svg b/backend/static/icons/bold/bounding-box-bold.svg new file mode 100644 index 0000000..adb6667 --- /dev/null +++ b/backend/static/icons/bold/bounding-box-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bowl-food-bold.svg b/backend/static/icons/bold/bowl-food-bold.svg new file mode 100644 index 0000000..0d5ce5f --- /dev/null +++ b/backend/static/icons/bold/bowl-food-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bowl-steam-bold.svg b/backend/static/icons/bold/bowl-steam-bold.svg new file mode 100644 index 0000000..aef7783 --- /dev/null +++ b/backend/static/icons/bold/bowl-steam-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bowling-ball-bold.svg b/backend/static/icons/bold/bowling-ball-bold.svg new file mode 100644 index 0000000..c45f986 --- /dev/null +++ b/backend/static/icons/bold/bowling-ball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/box-arrow-down-bold.svg b/backend/static/icons/bold/box-arrow-down-bold.svg new file mode 100644 index 0000000..5bebc57 --- /dev/null +++ b/backend/static/icons/bold/box-arrow-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/box-arrow-up-bold.svg b/backend/static/icons/bold/box-arrow-up-bold.svg new file mode 100644 index 0000000..2eb3706 --- /dev/null +++ b/backend/static/icons/bold/box-arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/boxing-glove-bold.svg b/backend/static/icons/bold/boxing-glove-bold.svg new file mode 100644 index 0000000..b4b8b90 --- /dev/null +++ b/backend/static/icons/bold/boxing-glove-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/brackets-angle-bold.svg b/backend/static/icons/bold/brackets-angle-bold.svg new file mode 100644 index 0000000..83b037a --- /dev/null +++ b/backend/static/icons/bold/brackets-angle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/brackets-curly-bold.svg b/backend/static/icons/bold/brackets-curly-bold.svg new file mode 100644 index 0000000..fdddbb9 --- /dev/null +++ b/backend/static/icons/bold/brackets-curly-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/brackets-round-bold.svg b/backend/static/icons/bold/brackets-round-bold.svg new file mode 100644 index 0000000..d666907 --- /dev/null +++ b/backend/static/icons/bold/brackets-round-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/brackets-square-bold.svg b/backend/static/icons/bold/brackets-square-bold.svg new file mode 100644 index 0000000..695fc0d --- /dev/null +++ b/backend/static/icons/bold/brackets-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/brain-bold.svg b/backend/static/icons/bold/brain-bold.svg new file mode 100644 index 0000000..0776166 --- /dev/null +++ b/backend/static/icons/bold/brain-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/brandy-bold.svg b/backend/static/icons/bold/brandy-bold.svg new file mode 100644 index 0000000..318d8e1 --- /dev/null +++ b/backend/static/icons/bold/brandy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bread-bold.svg b/backend/static/icons/bold/bread-bold.svg new file mode 100644 index 0000000..05cb023 --- /dev/null +++ b/backend/static/icons/bold/bread-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bridge-bold.svg b/backend/static/icons/bold/bridge-bold.svg new file mode 100644 index 0000000..88b2025 --- /dev/null +++ b/backend/static/icons/bold/bridge-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/briefcase-bold.svg b/backend/static/icons/bold/briefcase-bold.svg new file mode 100644 index 0000000..3dd72ca --- /dev/null +++ b/backend/static/icons/bold/briefcase-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/briefcase-metal-bold.svg b/backend/static/icons/bold/briefcase-metal-bold.svg new file mode 100644 index 0000000..e08f8da --- /dev/null +++ b/backend/static/icons/bold/briefcase-metal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/broadcast-bold.svg b/backend/static/icons/bold/broadcast-bold.svg new file mode 100644 index 0000000..1da99e3 --- /dev/null +++ b/backend/static/icons/bold/broadcast-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/broom-bold.svg b/backend/static/icons/bold/broom-bold.svg new file mode 100644 index 0000000..02c3c61 --- /dev/null +++ b/backend/static/icons/bold/broom-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/browser-bold.svg b/backend/static/icons/bold/browser-bold.svg new file mode 100644 index 0000000..212730d --- /dev/null +++ b/backend/static/icons/bold/browser-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/browsers-bold.svg b/backend/static/icons/bold/browsers-bold.svg new file mode 100644 index 0000000..088439f --- /dev/null +++ b/backend/static/icons/bold/browsers-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bug-beetle-bold.svg b/backend/static/icons/bold/bug-beetle-bold.svg new file mode 100644 index 0000000..2e6e61e --- /dev/null +++ b/backend/static/icons/bold/bug-beetle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bug-bold.svg b/backend/static/icons/bold/bug-bold.svg new file mode 100644 index 0000000..82db21d --- /dev/null +++ b/backend/static/icons/bold/bug-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bug-droid-bold.svg b/backend/static/icons/bold/bug-droid-bold.svg new file mode 100644 index 0000000..3a31b34 --- /dev/null +++ b/backend/static/icons/bold/bug-droid-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/building-apartment-bold.svg b/backend/static/icons/bold/building-apartment-bold.svg new file mode 100644 index 0000000..75e326e --- /dev/null +++ b/backend/static/icons/bold/building-apartment-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/building-bold.svg b/backend/static/icons/bold/building-bold.svg new file mode 100644 index 0000000..c7606ff --- /dev/null +++ b/backend/static/icons/bold/building-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/building-office-bold.svg b/backend/static/icons/bold/building-office-bold.svg new file mode 100644 index 0000000..ab5f8b1 --- /dev/null +++ b/backend/static/icons/bold/building-office-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/buildings-bold.svg b/backend/static/icons/bold/buildings-bold.svg new file mode 100644 index 0000000..daae773 --- /dev/null +++ b/backend/static/icons/bold/buildings-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bulldozer-bold.svg b/backend/static/icons/bold/bulldozer-bold.svg new file mode 100644 index 0000000..6ee74d2 --- /dev/null +++ b/backend/static/icons/bold/bulldozer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/bus-bold.svg b/backend/static/icons/bold/bus-bold.svg new file mode 100644 index 0000000..8c02ba8 --- /dev/null +++ b/backend/static/icons/bold/bus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/butterfly-bold.svg b/backend/static/icons/bold/butterfly-bold.svg new file mode 100644 index 0000000..4694503 --- /dev/null +++ b/backend/static/icons/bold/butterfly-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cable-car-bold.svg b/backend/static/icons/bold/cable-car-bold.svg new file mode 100644 index 0000000..aacf607 --- /dev/null +++ b/backend/static/icons/bold/cable-car-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cactus-bold.svg b/backend/static/icons/bold/cactus-bold.svg new file mode 100644 index 0000000..f00bad8 --- /dev/null +++ b/backend/static/icons/bold/cactus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cake-bold.svg b/backend/static/icons/bold/cake-bold.svg new file mode 100644 index 0000000..3f38cc2 --- /dev/null +++ b/backend/static/icons/bold/cake-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calculator-bold.svg b/backend/static/icons/bold/calculator-bold.svg new file mode 100644 index 0000000..8fc4932 --- /dev/null +++ b/backend/static/icons/bold/calculator-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-blank-bold.svg b/backend/static/icons/bold/calendar-blank-bold.svg new file mode 100644 index 0000000..ef9fb66 --- /dev/null +++ b/backend/static/icons/bold/calendar-blank-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-bold.svg b/backend/static/icons/bold/calendar-bold.svg new file mode 100644 index 0000000..06d7ef5 --- /dev/null +++ b/backend/static/icons/bold/calendar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-check-bold.svg b/backend/static/icons/bold/calendar-check-bold.svg new file mode 100644 index 0000000..de57216 --- /dev/null +++ b/backend/static/icons/bold/calendar-check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-dot-bold.svg b/backend/static/icons/bold/calendar-dot-bold.svg new file mode 100644 index 0000000..b875a5f --- /dev/null +++ b/backend/static/icons/bold/calendar-dot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-dots-bold.svg b/backend/static/icons/bold/calendar-dots-bold.svg new file mode 100644 index 0000000..16593e7 --- /dev/null +++ b/backend/static/icons/bold/calendar-dots-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-heart-bold.svg b/backend/static/icons/bold/calendar-heart-bold.svg new file mode 100644 index 0000000..7bddf4e --- /dev/null +++ b/backend/static/icons/bold/calendar-heart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-minus-bold.svg b/backend/static/icons/bold/calendar-minus-bold.svg new file mode 100644 index 0000000..69ed97a --- /dev/null +++ b/backend/static/icons/bold/calendar-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-plus-bold.svg b/backend/static/icons/bold/calendar-plus-bold.svg new file mode 100644 index 0000000..fe6600f --- /dev/null +++ b/backend/static/icons/bold/calendar-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-slash-bold.svg b/backend/static/icons/bold/calendar-slash-bold.svg new file mode 100644 index 0000000..62f9be7 --- /dev/null +++ b/backend/static/icons/bold/calendar-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-star-bold.svg b/backend/static/icons/bold/calendar-star-bold.svg new file mode 100644 index 0000000..28393c9 --- /dev/null +++ b/backend/static/icons/bold/calendar-star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/calendar-x-bold.svg b/backend/static/icons/bold/calendar-x-bold.svg new file mode 100644 index 0000000..3c8b55c --- /dev/null +++ b/backend/static/icons/bold/calendar-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/call-bell-bold.svg b/backend/static/icons/bold/call-bell-bold.svg new file mode 100644 index 0000000..3e00672 --- /dev/null +++ b/backend/static/icons/bold/call-bell-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/camera-bold.svg b/backend/static/icons/bold/camera-bold.svg new file mode 100644 index 0000000..498b6ca --- /dev/null +++ b/backend/static/icons/bold/camera-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/camera-plus-bold.svg b/backend/static/icons/bold/camera-plus-bold.svg new file mode 100644 index 0000000..2a7b36d --- /dev/null +++ b/backend/static/icons/bold/camera-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/camera-rotate-bold.svg b/backend/static/icons/bold/camera-rotate-bold.svg new file mode 100644 index 0000000..2da39d7 --- /dev/null +++ b/backend/static/icons/bold/camera-rotate-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/camera-slash-bold.svg b/backend/static/icons/bold/camera-slash-bold.svg new file mode 100644 index 0000000..1eb50ba --- /dev/null +++ b/backend/static/icons/bold/camera-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/campfire-bold.svg b/backend/static/icons/bold/campfire-bold.svg new file mode 100644 index 0000000..d4703e9 --- /dev/null +++ b/backend/static/icons/bold/campfire-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/car-battery-bold.svg b/backend/static/icons/bold/car-battery-bold.svg new file mode 100644 index 0000000..14f7673 --- /dev/null +++ b/backend/static/icons/bold/car-battery-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/car-bold.svg b/backend/static/icons/bold/car-bold.svg new file mode 100644 index 0000000..e3837ad --- /dev/null +++ b/backend/static/icons/bold/car-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/car-profile-bold.svg b/backend/static/icons/bold/car-profile-bold.svg new file mode 100644 index 0000000..9aaa9b8 --- /dev/null +++ b/backend/static/icons/bold/car-profile-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/car-simple-bold.svg b/backend/static/icons/bold/car-simple-bold.svg new file mode 100644 index 0000000..a2cdb7d --- /dev/null +++ b/backend/static/icons/bold/car-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cardholder-bold.svg b/backend/static/icons/bold/cardholder-bold.svg new file mode 100644 index 0000000..7e666aa --- /dev/null +++ b/backend/static/icons/bold/cardholder-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cards-bold.svg b/backend/static/icons/bold/cards-bold.svg new file mode 100644 index 0000000..ad871d1 --- /dev/null +++ b/backend/static/icons/bold/cards-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cards-three-bold.svg b/backend/static/icons/bold/cards-three-bold.svg new file mode 100644 index 0000000..16027e6 --- /dev/null +++ b/backend/static/icons/bold/cards-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-double-down-bold.svg b/backend/static/icons/bold/caret-circle-double-down-bold.svg new file mode 100644 index 0000000..2581d46 --- /dev/null +++ b/backend/static/icons/bold/caret-circle-double-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-double-left-bold.svg b/backend/static/icons/bold/caret-circle-double-left-bold.svg new file mode 100644 index 0000000..73668ff --- /dev/null +++ b/backend/static/icons/bold/caret-circle-double-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-double-right-bold.svg b/backend/static/icons/bold/caret-circle-double-right-bold.svg new file mode 100644 index 0000000..23c6c9b --- /dev/null +++ b/backend/static/icons/bold/caret-circle-double-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-double-up-bold.svg b/backend/static/icons/bold/caret-circle-double-up-bold.svg new file mode 100644 index 0000000..f13e7e6 --- /dev/null +++ b/backend/static/icons/bold/caret-circle-double-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-down-bold.svg b/backend/static/icons/bold/caret-circle-down-bold.svg new file mode 100644 index 0000000..10f7c47 --- /dev/null +++ b/backend/static/icons/bold/caret-circle-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-left-bold.svg b/backend/static/icons/bold/caret-circle-left-bold.svg new file mode 100644 index 0000000..ceef381 --- /dev/null +++ b/backend/static/icons/bold/caret-circle-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-right-bold.svg b/backend/static/icons/bold/caret-circle-right-bold.svg new file mode 100644 index 0000000..02a1486 --- /dev/null +++ b/backend/static/icons/bold/caret-circle-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-up-bold.svg b/backend/static/icons/bold/caret-circle-up-bold.svg new file mode 100644 index 0000000..db520ec --- /dev/null +++ b/backend/static/icons/bold/caret-circle-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-circle-up-down-bold.svg b/backend/static/icons/bold/caret-circle-up-down-bold.svg new file mode 100644 index 0000000..09e8ca7 --- /dev/null +++ b/backend/static/icons/bold/caret-circle-up-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-double-down-bold.svg b/backend/static/icons/bold/caret-double-down-bold.svg new file mode 100644 index 0000000..3b25c6f --- /dev/null +++ b/backend/static/icons/bold/caret-double-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-double-left-bold.svg b/backend/static/icons/bold/caret-double-left-bold.svg new file mode 100644 index 0000000..33cde16 --- /dev/null +++ b/backend/static/icons/bold/caret-double-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-double-right-bold.svg b/backend/static/icons/bold/caret-double-right-bold.svg new file mode 100644 index 0000000..b7ae156 --- /dev/null +++ b/backend/static/icons/bold/caret-double-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-double-up-bold.svg b/backend/static/icons/bold/caret-double-up-bold.svg new file mode 100644 index 0000000..a04f951 --- /dev/null +++ b/backend/static/icons/bold/caret-double-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-down-bold.svg b/backend/static/icons/bold/caret-down-bold.svg new file mode 100644 index 0000000..cb0e8bd --- /dev/null +++ b/backend/static/icons/bold/caret-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-left-bold.svg b/backend/static/icons/bold/caret-left-bold.svg new file mode 100644 index 0000000..e77b5c4 --- /dev/null +++ b/backend/static/icons/bold/caret-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-line-down-bold.svg b/backend/static/icons/bold/caret-line-down-bold.svg new file mode 100644 index 0000000..a527a40 --- /dev/null +++ b/backend/static/icons/bold/caret-line-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-line-left-bold.svg b/backend/static/icons/bold/caret-line-left-bold.svg new file mode 100644 index 0000000..6c53621 --- /dev/null +++ b/backend/static/icons/bold/caret-line-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-line-right-bold.svg b/backend/static/icons/bold/caret-line-right-bold.svg new file mode 100644 index 0000000..9e009dc --- /dev/null +++ b/backend/static/icons/bold/caret-line-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-line-up-bold.svg b/backend/static/icons/bold/caret-line-up-bold.svg new file mode 100644 index 0000000..b76bf5e --- /dev/null +++ b/backend/static/icons/bold/caret-line-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-right-bold.svg b/backend/static/icons/bold/caret-right-bold.svg new file mode 100644 index 0000000..cb12439 --- /dev/null +++ b/backend/static/icons/bold/caret-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-up-bold.svg b/backend/static/icons/bold/caret-up-bold.svg new file mode 100644 index 0000000..3dd6dd8 --- /dev/null +++ b/backend/static/icons/bold/caret-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/caret-up-down-bold.svg b/backend/static/icons/bold/caret-up-down-bold.svg new file mode 100644 index 0000000..a77f350 --- /dev/null +++ b/backend/static/icons/bold/caret-up-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/carrot-bold.svg b/backend/static/icons/bold/carrot-bold.svg new file mode 100644 index 0000000..b89bf31 --- /dev/null +++ b/backend/static/icons/bold/carrot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cash-register-bold.svg b/backend/static/icons/bold/cash-register-bold.svg new file mode 100644 index 0000000..b2e1e20 --- /dev/null +++ b/backend/static/icons/bold/cash-register-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cassette-tape-bold.svg b/backend/static/icons/bold/cassette-tape-bold.svg new file mode 100644 index 0000000..1e70698 --- /dev/null +++ b/backend/static/icons/bold/cassette-tape-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/castle-turret-bold.svg b/backend/static/icons/bold/castle-turret-bold.svg new file mode 100644 index 0000000..219354b --- /dev/null +++ b/backend/static/icons/bold/castle-turret-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cat-bold.svg b/backend/static/icons/bold/cat-bold.svg new file mode 100644 index 0000000..c8e7c74 --- /dev/null +++ b/backend/static/icons/bold/cat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-full-bold.svg b/backend/static/icons/bold/cell-signal-full-bold.svg new file mode 100644 index 0000000..46630c9 --- /dev/null +++ b/backend/static/icons/bold/cell-signal-full-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-high-bold.svg b/backend/static/icons/bold/cell-signal-high-bold.svg new file mode 100644 index 0000000..72193a0 --- /dev/null +++ b/backend/static/icons/bold/cell-signal-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-low-bold.svg b/backend/static/icons/bold/cell-signal-low-bold.svg new file mode 100644 index 0000000..5ebb4fc --- /dev/null +++ b/backend/static/icons/bold/cell-signal-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-medium-bold.svg b/backend/static/icons/bold/cell-signal-medium-bold.svg new file mode 100644 index 0000000..614e042 --- /dev/null +++ b/backend/static/icons/bold/cell-signal-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-none-bold.svg b/backend/static/icons/bold/cell-signal-none-bold.svg new file mode 100644 index 0000000..970ea76 --- /dev/null +++ b/backend/static/icons/bold/cell-signal-none-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-slash-bold.svg b/backend/static/icons/bold/cell-signal-slash-bold.svg new file mode 100644 index 0000000..0b81030 --- /dev/null +++ b/backend/static/icons/bold/cell-signal-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-signal-x-bold.svg b/backend/static/icons/bold/cell-signal-x-bold.svg new file mode 100644 index 0000000..bb938e6 --- /dev/null +++ b/backend/static/icons/bold/cell-signal-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cell-tower-bold.svg b/backend/static/icons/bold/cell-tower-bold.svg new file mode 100644 index 0000000..056667d --- /dev/null +++ b/backend/static/icons/bold/cell-tower-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/certificate-bold.svg b/backend/static/icons/bold/certificate-bold.svg new file mode 100644 index 0000000..f1e29de --- /dev/null +++ b/backend/static/icons/bold/certificate-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chair-bold.svg b/backend/static/icons/bold/chair-bold.svg new file mode 100644 index 0000000..4f9cb76 --- /dev/null +++ b/backend/static/icons/bold/chair-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chalkboard-bold.svg b/backend/static/icons/bold/chalkboard-bold.svg new file mode 100644 index 0000000..7e634ec --- /dev/null +++ b/backend/static/icons/bold/chalkboard-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chalkboard-simple-bold.svg b/backend/static/icons/bold/chalkboard-simple-bold.svg new file mode 100644 index 0000000..7854b54 --- /dev/null +++ b/backend/static/icons/bold/chalkboard-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chalkboard-teacher-bold.svg b/backend/static/icons/bold/chalkboard-teacher-bold.svg new file mode 100644 index 0000000..8025119 --- /dev/null +++ b/backend/static/icons/bold/chalkboard-teacher-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/champagne-bold.svg b/backend/static/icons/bold/champagne-bold.svg new file mode 100644 index 0000000..1558bea --- /dev/null +++ b/backend/static/icons/bold/champagne-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/charging-station-bold.svg b/backend/static/icons/bold/charging-station-bold.svg new file mode 100644 index 0000000..a453992 --- /dev/null +++ b/backend/static/icons/bold/charging-station-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-bar-bold.svg b/backend/static/icons/bold/chart-bar-bold.svg new file mode 100644 index 0000000..a06ef90 --- /dev/null +++ b/backend/static/icons/bold/chart-bar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-bar-horizontal-bold.svg b/backend/static/icons/bold/chart-bar-horizontal-bold.svg new file mode 100644 index 0000000..71d45df --- /dev/null +++ b/backend/static/icons/bold/chart-bar-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-donut-bold.svg b/backend/static/icons/bold/chart-donut-bold.svg new file mode 100644 index 0000000..a37a1fb --- /dev/null +++ b/backend/static/icons/bold/chart-donut-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-line-bold.svg b/backend/static/icons/bold/chart-line-bold.svg new file mode 100644 index 0000000..0fc4702 --- /dev/null +++ b/backend/static/icons/bold/chart-line-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-line-down-bold.svg b/backend/static/icons/bold/chart-line-down-bold.svg new file mode 100644 index 0000000..47e18e5 --- /dev/null +++ b/backend/static/icons/bold/chart-line-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-line-up-bold.svg b/backend/static/icons/bold/chart-line-up-bold.svg new file mode 100644 index 0000000..d121ccb --- /dev/null +++ b/backend/static/icons/bold/chart-line-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-pie-bold.svg b/backend/static/icons/bold/chart-pie-bold.svg new file mode 100644 index 0000000..7f25233 --- /dev/null +++ b/backend/static/icons/bold/chart-pie-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-pie-slice-bold.svg b/backend/static/icons/bold/chart-pie-slice-bold.svg new file mode 100644 index 0000000..9596438 --- /dev/null +++ b/backend/static/icons/bold/chart-pie-slice-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-polar-bold.svg b/backend/static/icons/bold/chart-polar-bold.svg new file mode 100644 index 0000000..3fcb7bd --- /dev/null +++ b/backend/static/icons/bold/chart-polar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chart-scatter-bold.svg b/backend/static/icons/bold/chart-scatter-bold.svg new file mode 100644 index 0000000..52af58d --- /dev/null +++ b/backend/static/icons/bold/chart-scatter-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-bold.svg b/backend/static/icons/bold/chat-bold.svg new file mode 100644 index 0000000..c952559 --- /dev/null +++ b/backend/static/icons/bold/chat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-centered-bold.svg b/backend/static/icons/bold/chat-centered-bold.svg new file mode 100644 index 0000000..15e205b --- /dev/null +++ b/backend/static/icons/bold/chat-centered-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-centered-dots-bold.svg b/backend/static/icons/bold/chat-centered-dots-bold.svg new file mode 100644 index 0000000..4d1098e --- /dev/null +++ b/backend/static/icons/bold/chat-centered-dots-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-centered-slash-bold.svg b/backend/static/icons/bold/chat-centered-slash-bold.svg new file mode 100644 index 0000000..5bc137d --- /dev/null +++ b/backend/static/icons/bold/chat-centered-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-centered-text-bold.svg b/backend/static/icons/bold/chat-centered-text-bold.svg new file mode 100644 index 0000000..379c5f4 --- /dev/null +++ b/backend/static/icons/bold/chat-centered-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-circle-bold.svg b/backend/static/icons/bold/chat-circle-bold.svg new file mode 100644 index 0000000..fe3934d --- /dev/null +++ b/backend/static/icons/bold/chat-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-circle-dots-bold.svg b/backend/static/icons/bold/chat-circle-dots-bold.svg new file mode 100644 index 0000000..8eda807 --- /dev/null +++ b/backend/static/icons/bold/chat-circle-dots-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-circle-slash-bold.svg b/backend/static/icons/bold/chat-circle-slash-bold.svg new file mode 100644 index 0000000..7a378d1 --- /dev/null +++ b/backend/static/icons/bold/chat-circle-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-circle-text-bold.svg b/backend/static/icons/bold/chat-circle-text-bold.svg new file mode 100644 index 0000000..8047a83 --- /dev/null +++ b/backend/static/icons/bold/chat-circle-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-dots-bold.svg b/backend/static/icons/bold/chat-dots-bold.svg new file mode 100644 index 0000000..77f9cf9 --- /dev/null +++ b/backend/static/icons/bold/chat-dots-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-slash-bold.svg b/backend/static/icons/bold/chat-slash-bold.svg new file mode 100644 index 0000000..043058f --- /dev/null +++ b/backend/static/icons/bold/chat-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-teardrop-bold.svg b/backend/static/icons/bold/chat-teardrop-bold.svg new file mode 100644 index 0000000..f123014 --- /dev/null +++ b/backend/static/icons/bold/chat-teardrop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-teardrop-dots-bold.svg b/backend/static/icons/bold/chat-teardrop-dots-bold.svg new file mode 100644 index 0000000..206f478 --- /dev/null +++ b/backend/static/icons/bold/chat-teardrop-dots-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-teardrop-slash-bold.svg b/backend/static/icons/bold/chat-teardrop-slash-bold.svg new file mode 100644 index 0000000..f2a371a --- /dev/null +++ b/backend/static/icons/bold/chat-teardrop-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-teardrop-text-bold.svg b/backend/static/icons/bold/chat-teardrop-text-bold.svg new file mode 100644 index 0000000..14ef0c2 --- /dev/null +++ b/backend/static/icons/bold/chat-teardrop-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chat-text-bold.svg b/backend/static/icons/bold/chat-text-bold.svg new file mode 100644 index 0000000..8d05402 --- /dev/null +++ b/backend/static/icons/bold/chat-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chats-bold.svg b/backend/static/icons/bold/chats-bold.svg new file mode 100644 index 0000000..9608630 --- /dev/null +++ b/backend/static/icons/bold/chats-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chats-circle-bold.svg b/backend/static/icons/bold/chats-circle-bold.svg new file mode 100644 index 0000000..5f96f71 --- /dev/null +++ b/backend/static/icons/bold/chats-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chats-teardrop-bold.svg b/backend/static/icons/bold/chats-teardrop-bold.svg new file mode 100644 index 0000000..3c11110 --- /dev/null +++ b/backend/static/icons/bold/chats-teardrop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/check-bold.svg b/backend/static/icons/bold/check-bold.svg new file mode 100644 index 0000000..f59a4c7 --- /dev/null +++ b/backend/static/icons/bold/check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/check-circle-bold.svg b/backend/static/icons/bold/check-circle-bold.svg new file mode 100644 index 0000000..838ffea --- /dev/null +++ b/backend/static/icons/bold/check-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/check-fat-bold.svg b/backend/static/icons/bold/check-fat-bold.svg new file mode 100644 index 0000000..1902051 --- /dev/null +++ b/backend/static/icons/bold/check-fat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/check-square-bold.svg b/backend/static/icons/bold/check-square-bold.svg new file mode 100644 index 0000000..bb08b3e --- /dev/null +++ b/backend/static/icons/bold/check-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/check-square-offset-bold.svg b/backend/static/icons/bold/check-square-offset-bold.svg new file mode 100644 index 0000000..6157db9 --- /dev/null +++ b/backend/static/icons/bold/check-square-offset-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/checkerboard-bold.svg b/backend/static/icons/bold/checkerboard-bold.svg new file mode 100644 index 0000000..9cd877c --- /dev/null +++ b/backend/static/icons/bold/checkerboard-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/checks-bold.svg b/backend/static/icons/bold/checks-bold.svg new file mode 100644 index 0000000..1ef0755 --- /dev/null +++ b/backend/static/icons/bold/checks-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cheers-bold.svg b/backend/static/icons/bold/cheers-bold.svg new file mode 100644 index 0000000..fa7150f --- /dev/null +++ b/backend/static/icons/bold/cheers-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cheese-bold.svg b/backend/static/icons/bold/cheese-bold.svg new file mode 100644 index 0000000..bf7e58d --- /dev/null +++ b/backend/static/icons/bold/cheese-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/chef-hat-bold.svg b/backend/static/icons/bold/chef-hat-bold.svg new file mode 100644 index 0000000..e2c550e --- /dev/null +++ b/backend/static/icons/bold/chef-hat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cherries-bold.svg b/backend/static/icons/bold/cherries-bold.svg new file mode 100644 index 0000000..1778619 --- /dev/null +++ b/backend/static/icons/bold/cherries-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/church-bold.svg b/backend/static/icons/bold/church-bold.svg new file mode 100644 index 0000000..9f05232 --- /dev/null +++ b/backend/static/icons/bold/church-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cigarette-bold.svg b/backend/static/icons/bold/cigarette-bold.svg new file mode 100644 index 0000000..2af1556 --- /dev/null +++ b/backend/static/icons/bold/cigarette-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cigarette-slash-bold.svg b/backend/static/icons/bold/cigarette-slash-bold.svg new file mode 100644 index 0000000..46132cd --- /dev/null +++ b/backend/static/icons/bold/cigarette-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circle-bold.svg b/backend/static/icons/bold/circle-bold.svg new file mode 100644 index 0000000..0f38074 --- /dev/null +++ b/backend/static/icons/bold/circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circle-dashed-bold.svg b/backend/static/icons/bold/circle-dashed-bold.svg new file mode 100644 index 0000000..f7ff717 --- /dev/null +++ b/backend/static/icons/bold/circle-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circle-half-bold.svg b/backend/static/icons/bold/circle-half-bold.svg new file mode 100644 index 0000000..027195a --- /dev/null +++ b/backend/static/icons/bold/circle-half-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circle-half-tilt-bold.svg b/backend/static/icons/bold/circle-half-tilt-bold.svg new file mode 100644 index 0000000..73c9b10 --- /dev/null +++ b/backend/static/icons/bold/circle-half-tilt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circle-notch-bold.svg b/backend/static/icons/bold/circle-notch-bold.svg new file mode 100644 index 0000000..d302e8a --- /dev/null +++ b/backend/static/icons/bold/circle-notch-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circles-four-bold.svg b/backend/static/icons/bold/circles-four-bold.svg new file mode 100644 index 0000000..b38a78e --- /dev/null +++ b/backend/static/icons/bold/circles-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circles-three-bold.svg b/backend/static/icons/bold/circles-three-bold.svg new file mode 100644 index 0000000..64d11d6 --- /dev/null +++ b/backend/static/icons/bold/circles-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circles-three-plus-bold.svg b/backend/static/icons/bold/circles-three-plus-bold.svg new file mode 100644 index 0000000..cfedf85 --- /dev/null +++ b/backend/static/icons/bold/circles-three-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/circuitry-bold.svg b/backend/static/icons/bold/circuitry-bold.svg new file mode 100644 index 0000000..70f66f0 --- /dev/null +++ b/backend/static/icons/bold/circuitry-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/city-bold.svg b/backend/static/icons/bold/city-bold.svg new file mode 100644 index 0000000..08bd1dc --- /dev/null +++ b/backend/static/icons/bold/city-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clipboard-bold.svg b/backend/static/icons/bold/clipboard-bold.svg new file mode 100644 index 0000000..7b6dc9c --- /dev/null +++ b/backend/static/icons/bold/clipboard-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clipboard-text-bold.svg b/backend/static/icons/bold/clipboard-text-bold.svg new file mode 100644 index 0000000..1f04236 --- /dev/null +++ b/backend/static/icons/bold/clipboard-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clock-afternoon-bold.svg b/backend/static/icons/bold/clock-afternoon-bold.svg new file mode 100644 index 0000000..0c1fdb3 --- /dev/null +++ b/backend/static/icons/bold/clock-afternoon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clock-bold.svg b/backend/static/icons/bold/clock-bold.svg new file mode 100644 index 0000000..655c83f --- /dev/null +++ b/backend/static/icons/bold/clock-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clock-clockwise-bold.svg b/backend/static/icons/bold/clock-clockwise-bold.svg new file mode 100644 index 0000000..809363d --- /dev/null +++ b/backend/static/icons/bold/clock-clockwise-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clock-countdown-bold.svg b/backend/static/icons/bold/clock-countdown-bold.svg new file mode 100644 index 0000000..100137b --- /dev/null +++ b/backend/static/icons/bold/clock-countdown-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clock-counter-clockwise-bold.svg b/backend/static/icons/bold/clock-counter-clockwise-bold.svg new file mode 100644 index 0000000..ef1b899 --- /dev/null +++ b/backend/static/icons/bold/clock-counter-clockwise-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clock-user-bold.svg b/backend/static/icons/bold/clock-user-bold.svg new file mode 100644 index 0000000..7546e05 --- /dev/null +++ b/backend/static/icons/bold/clock-user-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/closed-captioning-bold.svg b/backend/static/icons/bold/closed-captioning-bold.svg new file mode 100644 index 0000000..c1520c8 --- /dev/null +++ b/backend/static/icons/bold/closed-captioning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-arrow-down-bold.svg b/backend/static/icons/bold/cloud-arrow-down-bold.svg new file mode 100644 index 0000000..2703dec --- /dev/null +++ b/backend/static/icons/bold/cloud-arrow-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-arrow-up-bold.svg b/backend/static/icons/bold/cloud-arrow-up-bold.svg new file mode 100644 index 0000000..e80052d --- /dev/null +++ b/backend/static/icons/bold/cloud-arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-bold.svg b/backend/static/icons/bold/cloud-bold.svg new file mode 100644 index 0000000..426349f --- /dev/null +++ b/backend/static/icons/bold/cloud-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-check-bold.svg b/backend/static/icons/bold/cloud-check-bold.svg new file mode 100644 index 0000000..fbdf46d --- /dev/null +++ b/backend/static/icons/bold/cloud-check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-fog-bold.svg b/backend/static/icons/bold/cloud-fog-bold.svg new file mode 100644 index 0000000..a8c1c32 --- /dev/null +++ b/backend/static/icons/bold/cloud-fog-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-lightning-bold.svg b/backend/static/icons/bold/cloud-lightning-bold.svg new file mode 100644 index 0000000..44ea7ab --- /dev/null +++ b/backend/static/icons/bold/cloud-lightning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-moon-bold.svg b/backend/static/icons/bold/cloud-moon-bold.svg new file mode 100644 index 0000000..e1353df --- /dev/null +++ b/backend/static/icons/bold/cloud-moon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-rain-bold.svg b/backend/static/icons/bold/cloud-rain-bold.svg new file mode 100644 index 0000000..214d9cf --- /dev/null +++ b/backend/static/icons/bold/cloud-rain-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-slash-bold.svg b/backend/static/icons/bold/cloud-slash-bold.svg new file mode 100644 index 0000000..3cad212 --- /dev/null +++ b/backend/static/icons/bold/cloud-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-snow-bold.svg b/backend/static/icons/bold/cloud-snow-bold.svg new file mode 100644 index 0000000..1cb2073 --- /dev/null +++ b/backend/static/icons/bold/cloud-snow-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-sun-bold.svg b/backend/static/icons/bold/cloud-sun-bold.svg new file mode 100644 index 0000000..067fc34 --- /dev/null +++ b/backend/static/icons/bold/cloud-sun-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-warning-bold.svg b/backend/static/icons/bold/cloud-warning-bold.svg new file mode 100644 index 0000000..0ca1b7f --- /dev/null +++ b/backend/static/icons/bold/cloud-warning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cloud-x-bold.svg b/backend/static/icons/bold/cloud-x-bold.svg new file mode 100644 index 0000000..df2796e --- /dev/null +++ b/backend/static/icons/bold/cloud-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/clover-bold.svg b/backend/static/icons/bold/clover-bold.svg new file mode 100644 index 0000000..65ce5eb --- /dev/null +++ b/backend/static/icons/bold/clover-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/club-bold.svg b/backend/static/icons/bold/club-bold.svg new file mode 100644 index 0000000..8faefba --- /dev/null +++ b/backend/static/icons/bold/club-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coat-hanger-bold.svg b/backend/static/icons/bold/coat-hanger-bold.svg new file mode 100644 index 0000000..fa0c321 --- /dev/null +++ b/backend/static/icons/bold/coat-hanger-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coda-logo-bold.svg b/backend/static/icons/bold/coda-logo-bold.svg new file mode 100644 index 0000000..c5537e4 --- /dev/null +++ b/backend/static/icons/bold/coda-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/code-block-bold.svg b/backend/static/icons/bold/code-block-bold.svg new file mode 100644 index 0000000..6199a56 --- /dev/null +++ b/backend/static/icons/bold/code-block-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/code-bold.svg b/backend/static/icons/bold/code-bold.svg new file mode 100644 index 0000000..9b149b0 --- /dev/null +++ b/backend/static/icons/bold/code-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/code-simple-bold.svg b/backend/static/icons/bold/code-simple-bold.svg new file mode 100644 index 0000000..50a9c9c --- /dev/null +++ b/backend/static/icons/bold/code-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/codepen-logo-bold.svg b/backend/static/icons/bold/codepen-logo-bold.svg new file mode 100644 index 0000000..c06bb75 --- /dev/null +++ b/backend/static/icons/bold/codepen-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/codesandbox-logo-bold.svg b/backend/static/icons/bold/codesandbox-logo-bold.svg new file mode 100644 index 0000000..8221ccd --- /dev/null +++ b/backend/static/icons/bold/codesandbox-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coffee-bean-bold.svg b/backend/static/icons/bold/coffee-bean-bold.svg new file mode 100644 index 0000000..0c879ef --- /dev/null +++ b/backend/static/icons/bold/coffee-bean-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coffee-bold.svg b/backend/static/icons/bold/coffee-bold.svg new file mode 100644 index 0000000..b9defe4 --- /dev/null +++ b/backend/static/icons/bold/coffee-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coin-bold.svg b/backend/static/icons/bold/coin-bold.svg new file mode 100644 index 0000000..c0437ff --- /dev/null +++ b/backend/static/icons/bold/coin-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coin-vertical-bold.svg b/backend/static/icons/bold/coin-vertical-bold.svg new file mode 100644 index 0000000..1da5cd8 --- /dev/null +++ b/backend/static/icons/bold/coin-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/coins-bold.svg b/backend/static/icons/bold/coins-bold.svg new file mode 100644 index 0000000..c8d4ed9 --- /dev/null +++ b/backend/static/icons/bold/coins-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/columns-bold.svg b/backend/static/icons/bold/columns-bold.svg new file mode 100644 index 0000000..7e8f27b --- /dev/null +++ b/backend/static/icons/bold/columns-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/columns-plus-left-bold.svg b/backend/static/icons/bold/columns-plus-left-bold.svg new file mode 100644 index 0000000..0e37784 --- /dev/null +++ b/backend/static/icons/bold/columns-plus-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/columns-plus-right-bold.svg b/backend/static/icons/bold/columns-plus-right-bold.svg new file mode 100644 index 0000000..109441a --- /dev/null +++ b/backend/static/icons/bold/columns-plus-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/command-bold.svg b/backend/static/icons/bold/command-bold.svg new file mode 100644 index 0000000..d1d35df --- /dev/null +++ b/backend/static/icons/bold/command-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/compass-bold.svg b/backend/static/icons/bold/compass-bold.svg new file mode 100644 index 0000000..beba17e --- /dev/null +++ b/backend/static/icons/bold/compass-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/compass-rose-bold.svg b/backend/static/icons/bold/compass-rose-bold.svg new file mode 100644 index 0000000..7a3208d --- /dev/null +++ b/backend/static/icons/bold/compass-rose-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/compass-tool-bold.svg b/backend/static/icons/bold/compass-tool-bold.svg new file mode 100644 index 0000000..fde335f --- /dev/null +++ b/backend/static/icons/bold/compass-tool-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/computer-tower-bold.svg b/backend/static/icons/bold/computer-tower-bold.svg new file mode 100644 index 0000000..ec58a1a --- /dev/null +++ b/backend/static/icons/bold/computer-tower-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/confetti-bold.svg b/backend/static/icons/bold/confetti-bold.svg new file mode 100644 index 0000000..8fff9cb --- /dev/null +++ b/backend/static/icons/bold/confetti-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/contactless-payment-bold.svg b/backend/static/icons/bold/contactless-payment-bold.svg new file mode 100644 index 0000000..5e8df16 --- /dev/null +++ b/backend/static/icons/bold/contactless-payment-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/control-bold.svg b/backend/static/icons/bold/control-bold.svg new file mode 100644 index 0000000..6e2ebdd --- /dev/null +++ b/backend/static/icons/bold/control-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cookie-bold.svg b/backend/static/icons/bold/cookie-bold.svg new file mode 100644 index 0000000..e0b75f3 --- /dev/null +++ b/backend/static/icons/bold/cookie-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cooking-pot-bold.svg b/backend/static/icons/bold/cooking-pot-bold.svg new file mode 100644 index 0000000..72a893d --- /dev/null +++ b/backend/static/icons/bold/cooking-pot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/copy-bold.svg b/backend/static/icons/bold/copy-bold.svg new file mode 100644 index 0000000..18cd57c --- /dev/null +++ b/backend/static/icons/bold/copy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/copy-simple-bold.svg b/backend/static/icons/bold/copy-simple-bold.svg new file mode 100644 index 0000000..596bda7 --- /dev/null +++ b/backend/static/icons/bold/copy-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/copyleft-bold.svg b/backend/static/icons/bold/copyleft-bold.svg new file mode 100644 index 0000000..1e814cf --- /dev/null +++ b/backend/static/icons/bold/copyleft-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/copyright-bold.svg b/backend/static/icons/bold/copyright-bold.svg new file mode 100644 index 0000000..6f1150e --- /dev/null +++ b/backend/static/icons/bold/copyright-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/corners-in-bold.svg b/backend/static/icons/bold/corners-in-bold.svg new file mode 100644 index 0000000..adc72f4 --- /dev/null +++ b/backend/static/icons/bold/corners-in-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/corners-out-bold.svg b/backend/static/icons/bold/corners-out-bold.svg new file mode 100644 index 0000000..6e7fe88 --- /dev/null +++ b/backend/static/icons/bold/corners-out-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/couch-bold.svg b/backend/static/icons/bold/couch-bold.svg new file mode 100644 index 0000000..d9ceefb --- /dev/null +++ b/backend/static/icons/bold/couch-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/court-basketball-bold.svg b/backend/static/icons/bold/court-basketball-bold.svg new file mode 100644 index 0000000..3e1a867 --- /dev/null +++ b/backend/static/icons/bold/court-basketball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cow-bold.svg b/backend/static/icons/bold/cow-bold.svg new file mode 100644 index 0000000..d0e6293 --- /dev/null +++ b/backend/static/icons/bold/cow-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cowboy-hat-bold.svg b/backend/static/icons/bold/cowboy-hat-bold.svg new file mode 100644 index 0000000..c05b85b --- /dev/null +++ b/backend/static/icons/bold/cowboy-hat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cpu-bold.svg b/backend/static/icons/bold/cpu-bold.svg new file mode 100644 index 0000000..f2e9e41 --- /dev/null +++ b/backend/static/icons/bold/cpu-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crane-bold.svg b/backend/static/icons/bold/crane-bold.svg new file mode 100644 index 0000000..6575a14 --- /dev/null +++ b/backend/static/icons/bold/crane-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crane-tower-bold.svg b/backend/static/icons/bold/crane-tower-bold.svg new file mode 100644 index 0000000..fc998f7 --- /dev/null +++ b/backend/static/icons/bold/crane-tower-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/credit-card-bold.svg b/backend/static/icons/bold/credit-card-bold.svg new file mode 100644 index 0000000..45aff28 --- /dev/null +++ b/backend/static/icons/bold/credit-card-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cricket-bold.svg b/backend/static/icons/bold/cricket-bold.svg new file mode 100644 index 0000000..9b4a788 --- /dev/null +++ b/backend/static/icons/bold/cricket-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crop-bold.svg b/backend/static/icons/bold/crop-bold.svg new file mode 100644 index 0000000..90399b1 --- /dev/null +++ b/backend/static/icons/bold/crop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cross-bold.svg b/backend/static/icons/bold/cross-bold.svg new file mode 100644 index 0000000..4415e6d --- /dev/null +++ b/backend/static/icons/bold/cross-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crosshair-bold.svg b/backend/static/icons/bold/crosshair-bold.svg new file mode 100644 index 0000000..25a9383 --- /dev/null +++ b/backend/static/icons/bold/crosshair-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crosshair-simple-bold.svg b/backend/static/icons/bold/crosshair-simple-bold.svg new file mode 100644 index 0000000..e94aba1 --- /dev/null +++ b/backend/static/icons/bold/crosshair-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crown-bold.svg b/backend/static/icons/bold/crown-bold.svg new file mode 100644 index 0000000..9d0c67a --- /dev/null +++ b/backend/static/icons/bold/crown-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crown-cross-bold.svg b/backend/static/icons/bold/crown-cross-bold.svg new file mode 100644 index 0000000..230dc2a --- /dev/null +++ b/backend/static/icons/bold/crown-cross-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/crown-simple-bold.svg b/backend/static/icons/bold/crown-simple-bold.svg new file mode 100644 index 0000000..8fe1e17 --- /dev/null +++ b/backend/static/icons/bold/crown-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cube-bold.svg b/backend/static/icons/bold/cube-bold.svg new file mode 100644 index 0000000..0359e3d --- /dev/null +++ b/backend/static/icons/bold/cube-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cube-focus-bold.svg b/backend/static/icons/bold/cube-focus-bold.svg new file mode 100644 index 0000000..f31fcd0 --- /dev/null +++ b/backend/static/icons/bold/cube-focus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cube-transparent-bold.svg b/backend/static/icons/bold/cube-transparent-bold.svg new file mode 100644 index 0000000..b5285ea --- /dev/null +++ b/backend/static/icons/bold/cube-transparent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-btc-bold.svg b/backend/static/icons/bold/currency-btc-bold.svg new file mode 100644 index 0000000..37414a0 --- /dev/null +++ b/backend/static/icons/bold/currency-btc-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-circle-dollar-bold.svg b/backend/static/icons/bold/currency-circle-dollar-bold.svg new file mode 100644 index 0000000..e1e254f --- /dev/null +++ b/backend/static/icons/bold/currency-circle-dollar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-cny-bold.svg b/backend/static/icons/bold/currency-cny-bold.svg new file mode 100644 index 0000000..ace0728 --- /dev/null +++ b/backend/static/icons/bold/currency-cny-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-dollar-bold.svg b/backend/static/icons/bold/currency-dollar-bold.svg new file mode 100644 index 0000000..31760bb --- /dev/null +++ b/backend/static/icons/bold/currency-dollar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-dollar-simple-bold.svg b/backend/static/icons/bold/currency-dollar-simple-bold.svg new file mode 100644 index 0000000..2ef5848 --- /dev/null +++ b/backend/static/icons/bold/currency-dollar-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-eth-bold.svg b/backend/static/icons/bold/currency-eth-bold.svg new file mode 100644 index 0000000..d253fd6 --- /dev/null +++ b/backend/static/icons/bold/currency-eth-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-eur-bold.svg b/backend/static/icons/bold/currency-eur-bold.svg new file mode 100644 index 0000000..e07f3c9 --- /dev/null +++ b/backend/static/icons/bold/currency-eur-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-gbp-bold.svg b/backend/static/icons/bold/currency-gbp-bold.svg new file mode 100644 index 0000000..5f8823f --- /dev/null +++ b/backend/static/icons/bold/currency-gbp-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-inr-bold.svg b/backend/static/icons/bold/currency-inr-bold.svg new file mode 100644 index 0000000..051b2f5 --- /dev/null +++ b/backend/static/icons/bold/currency-inr-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-jpy-bold.svg b/backend/static/icons/bold/currency-jpy-bold.svg new file mode 100644 index 0000000..ee0f764 --- /dev/null +++ b/backend/static/icons/bold/currency-jpy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-krw-bold.svg b/backend/static/icons/bold/currency-krw-bold.svg new file mode 100644 index 0000000..2eab2f8 --- /dev/null +++ b/backend/static/icons/bold/currency-krw-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-kzt-bold.svg b/backend/static/icons/bold/currency-kzt-bold.svg new file mode 100644 index 0000000..0a014c3 --- /dev/null +++ b/backend/static/icons/bold/currency-kzt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-ngn-bold.svg b/backend/static/icons/bold/currency-ngn-bold.svg new file mode 100644 index 0000000..a909976 --- /dev/null +++ b/backend/static/icons/bold/currency-ngn-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/currency-rub-bold.svg b/backend/static/icons/bold/currency-rub-bold.svg new file mode 100644 index 0000000..83f28e2 --- /dev/null +++ b/backend/static/icons/bold/currency-rub-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cursor-bold.svg b/backend/static/icons/bold/cursor-bold.svg new file mode 100644 index 0000000..ac977ea --- /dev/null +++ b/backend/static/icons/bold/cursor-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cursor-click-bold.svg b/backend/static/icons/bold/cursor-click-bold.svg new file mode 100644 index 0000000..2702557 --- /dev/null +++ b/backend/static/icons/bold/cursor-click-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cursor-text-bold.svg b/backend/static/icons/bold/cursor-text-bold.svg new file mode 100644 index 0000000..7dbfc76 --- /dev/null +++ b/backend/static/icons/bold/cursor-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/cylinder-bold.svg b/backend/static/icons/bold/cylinder-bold.svg new file mode 100644 index 0000000..5cef15a --- /dev/null +++ b/backend/static/icons/bold/cylinder-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/database-bold.svg b/backend/static/icons/bold/database-bold.svg new file mode 100644 index 0000000..c8581ae --- /dev/null +++ b/backend/static/icons/bold/database-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/desk-bold.svg b/backend/static/icons/bold/desk-bold.svg new file mode 100644 index 0000000..0f3d2fd --- /dev/null +++ b/backend/static/icons/bold/desk-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/desktop-bold.svg b/backend/static/icons/bold/desktop-bold.svg new file mode 100644 index 0000000..9d27e93 --- /dev/null +++ b/backend/static/icons/bold/desktop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/desktop-tower-bold.svg b/backend/static/icons/bold/desktop-tower-bold.svg new file mode 100644 index 0000000..a5c42df --- /dev/null +++ b/backend/static/icons/bold/desktop-tower-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/detective-bold.svg b/backend/static/icons/bold/detective-bold.svg new file mode 100644 index 0000000..843f87e --- /dev/null +++ b/backend/static/icons/bold/detective-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dev-to-logo-bold.svg b/backend/static/icons/bold/dev-to-logo-bold.svg new file mode 100644 index 0000000..855f977 --- /dev/null +++ b/backend/static/icons/bold/dev-to-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-mobile-bold.svg b/backend/static/icons/bold/device-mobile-bold.svg new file mode 100644 index 0000000..a46e555 --- /dev/null +++ b/backend/static/icons/bold/device-mobile-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-mobile-camera-bold.svg b/backend/static/icons/bold/device-mobile-camera-bold.svg new file mode 100644 index 0000000..d1a008d --- /dev/null +++ b/backend/static/icons/bold/device-mobile-camera-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-mobile-slash-bold.svg b/backend/static/icons/bold/device-mobile-slash-bold.svg new file mode 100644 index 0000000..b26ade2 --- /dev/null +++ b/backend/static/icons/bold/device-mobile-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-mobile-speaker-bold.svg b/backend/static/icons/bold/device-mobile-speaker-bold.svg new file mode 100644 index 0000000..187f431 --- /dev/null +++ b/backend/static/icons/bold/device-mobile-speaker-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-rotate-bold.svg b/backend/static/icons/bold/device-rotate-bold.svg new file mode 100644 index 0000000..ec7340b --- /dev/null +++ b/backend/static/icons/bold/device-rotate-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-tablet-bold.svg b/backend/static/icons/bold/device-tablet-bold.svg new file mode 100644 index 0000000..6948f05 --- /dev/null +++ b/backend/static/icons/bold/device-tablet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-tablet-camera-bold.svg b/backend/static/icons/bold/device-tablet-camera-bold.svg new file mode 100644 index 0000000..95f74c5 --- /dev/null +++ b/backend/static/icons/bold/device-tablet-camera-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/device-tablet-speaker-bold.svg b/backend/static/icons/bold/device-tablet-speaker-bold.svg new file mode 100644 index 0000000..347a9b8 --- /dev/null +++ b/backend/static/icons/bold/device-tablet-speaker-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/devices-bold.svg b/backend/static/icons/bold/devices-bold.svg new file mode 100644 index 0000000..1f96b56 --- /dev/null +++ b/backend/static/icons/bold/devices-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/diamond-bold.svg b/backend/static/icons/bold/diamond-bold.svg new file mode 100644 index 0000000..15a03f4 --- /dev/null +++ b/backend/static/icons/bold/diamond-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/diamonds-four-bold.svg b/backend/static/icons/bold/diamonds-four-bold.svg new file mode 100644 index 0000000..f622199 --- /dev/null +++ b/backend/static/icons/bold/diamonds-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dice-five-bold.svg b/backend/static/icons/bold/dice-five-bold.svg new file mode 100644 index 0000000..89f664b --- /dev/null +++ b/backend/static/icons/bold/dice-five-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dice-four-bold.svg b/backend/static/icons/bold/dice-four-bold.svg new file mode 100644 index 0000000..6c5d1c4 --- /dev/null +++ b/backend/static/icons/bold/dice-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dice-one-bold.svg b/backend/static/icons/bold/dice-one-bold.svg new file mode 100644 index 0000000..d79e8bb --- /dev/null +++ b/backend/static/icons/bold/dice-one-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dice-six-bold.svg b/backend/static/icons/bold/dice-six-bold.svg new file mode 100644 index 0000000..34881e9 --- /dev/null +++ b/backend/static/icons/bold/dice-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dice-three-bold.svg b/backend/static/icons/bold/dice-three-bold.svg new file mode 100644 index 0000000..49c12d7 --- /dev/null +++ b/backend/static/icons/bold/dice-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dice-two-bold.svg b/backend/static/icons/bold/dice-two-bold.svg new file mode 100644 index 0000000..0b0f3fb --- /dev/null +++ b/backend/static/icons/bold/dice-two-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/disc-bold.svg b/backend/static/icons/bold/disc-bold.svg new file mode 100644 index 0000000..674bc94 --- /dev/null +++ b/backend/static/icons/bold/disc-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/disco-ball-bold.svg b/backend/static/icons/bold/disco-ball-bold.svg new file mode 100644 index 0000000..6f20ca3 --- /dev/null +++ b/backend/static/icons/bold/disco-ball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/discord-logo-bold.svg b/backend/static/icons/bold/discord-logo-bold.svg new file mode 100644 index 0000000..1fe0114 --- /dev/null +++ b/backend/static/icons/bold/discord-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/divide-bold.svg b/backend/static/icons/bold/divide-bold.svg new file mode 100644 index 0000000..b08a373 --- /dev/null +++ b/backend/static/icons/bold/divide-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dna-bold.svg b/backend/static/icons/bold/dna-bold.svg new file mode 100644 index 0000000..fafb84e --- /dev/null +++ b/backend/static/icons/bold/dna-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dog-bold.svg b/backend/static/icons/bold/dog-bold.svg new file mode 100644 index 0000000..aaec482 --- /dev/null +++ b/backend/static/icons/bold/dog-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/door-bold.svg b/backend/static/icons/bold/door-bold.svg new file mode 100644 index 0000000..9669334 --- /dev/null +++ b/backend/static/icons/bold/door-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/door-open-bold.svg b/backend/static/icons/bold/door-open-bold.svg new file mode 100644 index 0000000..f4bd5da --- /dev/null +++ b/backend/static/icons/bold/door-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dot-bold.svg b/backend/static/icons/bold/dot-bold.svg new file mode 100644 index 0000000..fd7e909 --- /dev/null +++ b/backend/static/icons/bold/dot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dot-outline-bold.svg b/backend/static/icons/bold/dot-outline-bold.svg new file mode 100644 index 0000000..5651033 --- /dev/null +++ b/backend/static/icons/bold/dot-outline-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-nine-bold.svg b/backend/static/icons/bold/dots-nine-bold.svg new file mode 100644 index 0000000..75f9c6f --- /dev/null +++ b/backend/static/icons/bold/dots-nine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-six-bold.svg b/backend/static/icons/bold/dots-six-bold.svg new file mode 100644 index 0000000..a7b0491 --- /dev/null +++ b/backend/static/icons/bold/dots-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-six-vertical-bold.svg b/backend/static/icons/bold/dots-six-vertical-bold.svg new file mode 100644 index 0000000..ee3cfa4 --- /dev/null +++ b/backend/static/icons/bold/dots-six-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-three-bold.svg b/backend/static/icons/bold/dots-three-bold.svg new file mode 100644 index 0000000..00d9a26 --- /dev/null +++ b/backend/static/icons/bold/dots-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-three-circle-bold.svg b/backend/static/icons/bold/dots-three-circle-bold.svg new file mode 100644 index 0000000..cd49f92 --- /dev/null +++ b/backend/static/icons/bold/dots-three-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-three-circle-vertical-bold.svg b/backend/static/icons/bold/dots-three-circle-vertical-bold.svg new file mode 100644 index 0000000..ea8f0b5 --- /dev/null +++ b/backend/static/icons/bold/dots-three-circle-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-three-outline-bold.svg b/backend/static/icons/bold/dots-three-outline-bold.svg new file mode 100644 index 0000000..dc172d6 --- /dev/null +++ b/backend/static/icons/bold/dots-three-outline-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-three-outline-vertical-bold.svg b/backend/static/icons/bold/dots-three-outline-vertical-bold.svg new file mode 100644 index 0000000..51f2589 --- /dev/null +++ b/backend/static/icons/bold/dots-three-outline-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dots-three-vertical-bold.svg b/backend/static/icons/bold/dots-three-vertical-bold.svg new file mode 100644 index 0000000..e2a10f6 --- /dev/null +++ b/backend/static/icons/bold/dots-three-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/download-bold.svg b/backend/static/icons/bold/download-bold.svg new file mode 100644 index 0000000..a1c2538 --- /dev/null +++ b/backend/static/icons/bold/download-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/download-simple-bold.svg b/backend/static/icons/bold/download-simple-bold.svg new file mode 100644 index 0000000..28b724e --- /dev/null +++ b/backend/static/icons/bold/download-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dress-bold.svg b/backend/static/icons/bold/dress-bold.svg new file mode 100644 index 0000000..4510bb5 --- /dev/null +++ b/backend/static/icons/bold/dress-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dresser-bold.svg b/backend/static/icons/bold/dresser-bold.svg new file mode 100644 index 0000000..6e7aa5d --- /dev/null +++ b/backend/static/icons/bold/dresser-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dribbble-logo-bold.svg b/backend/static/icons/bold/dribbble-logo-bold.svg new file mode 100644 index 0000000..73e456a --- /dev/null +++ b/backend/static/icons/bold/dribbble-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/drone-bold.svg b/backend/static/icons/bold/drone-bold.svg new file mode 100644 index 0000000..7b5b158 --- /dev/null +++ b/backend/static/icons/bold/drone-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/drop-bold.svg b/backend/static/icons/bold/drop-bold.svg new file mode 100644 index 0000000..a9e8e34 --- /dev/null +++ b/backend/static/icons/bold/drop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/drop-half-bold.svg b/backend/static/icons/bold/drop-half-bold.svg new file mode 100644 index 0000000..17d52aa --- /dev/null +++ b/backend/static/icons/bold/drop-half-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/drop-half-bottom-bold.svg b/backend/static/icons/bold/drop-half-bottom-bold.svg new file mode 100644 index 0000000..3c5b1d0 --- /dev/null +++ b/backend/static/icons/bold/drop-half-bottom-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/drop-simple-bold.svg b/backend/static/icons/bold/drop-simple-bold.svg new file mode 100644 index 0000000..30a9a6d --- /dev/null +++ b/backend/static/icons/bold/drop-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/drop-slash-bold.svg b/backend/static/icons/bold/drop-slash-bold.svg new file mode 100644 index 0000000..3e98cbb --- /dev/null +++ b/backend/static/icons/bold/drop-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/dropbox-logo-bold.svg b/backend/static/icons/bold/dropbox-logo-bold.svg new file mode 100644 index 0000000..d7626b6 --- /dev/null +++ b/backend/static/icons/bold/dropbox-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ear-bold.svg b/backend/static/icons/bold/ear-bold.svg new file mode 100644 index 0000000..6418700 --- /dev/null +++ b/backend/static/icons/bold/ear-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ear-slash-bold.svg b/backend/static/icons/bold/ear-slash-bold.svg new file mode 100644 index 0000000..be27a6e --- /dev/null +++ b/backend/static/icons/bold/ear-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/egg-bold.svg b/backend/static/icons/bold/egg-bold.svg new file mode 100644 index 0000000..e8fe2b9 --- /dev/null +++ b/backend/static/icons/bold/egg-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/egg-crack-bold.svg b/backend/static/icons/bold/egg-crack-bold.svg new file mode 100644 index 0000000..d7b53f5 --- /dev/null +++ b/backend/static/icons/bold/egg-crack-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eject-bold.svg b/backend/static/icons/bold/eject-bold.svg new file mode 100644 index 0000000..10164ec --- /dev/null +++ b/backend/static/icons/bold/eject-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eject-simple-bold.svg b/backend/static/icons/bold/eject-simple-bold.svg new file mode 100644 index 0000000..e8d9348 --- /dev/null +++ b/backend/static/icons/bold/eject-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/elevator-bold.svg b/backend/static/icons/bold/elevator-bold.svg new file mode 100644 index 0000000..acd2c0b --- /dev/null +++ b/backend/static/icons/bold/elevator-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/empty-bold.svg b/backend/static/icons/bold/empty-bold.svg new file mode 100644 index 0000000..c62c97c --- /dev/null +++ b/backend/static/icons/bold/empty-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/engine-bold.svg b/backend/static/icons/bold/engine-bold.svg new file mode 100644 index 0000000..b3f5740 --- /dev/null +++ b/backend/static/icons/bold/engine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/envelope-bold.svg b/backend/static/icons/bold/envelope-bold.svg new file mode 100644 index 0000000..40205cf --- /dev/null +++ b/backend/static/icons/bold/envelope-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/envelope-open-bold.svg b/backend/static/icons/bold/envelope-open-bold.svg new file mode 100644 index 0000000..d6589e9 --- /dev/null +++ b/backend/static/icons/bold/envelope-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/envelope-simple-bold.svg b/backend/static/icons/bold/envelope-simple-bold.svg new file mode 100644 index 0000000..a75bbd2 --- /dev/null +++ b/backend/static/icons/bold/envelope-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/envelope-simple-open-bold.svg b/backend/static/icons/bold/envelope-simple-open-bold.svg new file mode 100644 index 0000000..2bd6294 --- /dev/null +++ b/backend/static/icons/bold/envelope-simple-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/equalizer-bold.svg b/backend/static/icons/bold/equalizer-bold.svg new file mode 100644 index 0000000..dd71803 --- /dev/null +++ b/backend/static/icons/bold/equalizer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/equals-bold.svg b/backend/static/icons/bold/equals-bold.svg new file mode 100644 index 0000000..d5fdcde --- /dev/null +++ b/backend/static/icons/bold/equals-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eraser-bold.svg b/backend/static/icons/bold/eraser-bold.svg new file mode 100644 index 0000000..1df9b08 --- /dev/null +++ b/backend/static/icons/bold/eraser-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/escalator-down-bold.svg b/backend/static/icons/bold/escalator-down-bold.svg new file mode 100644 index 0000000..f88ba2f --- /dev/null +++ b/backend/static/icons/bold/escalator-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/escalator-up-bold.svg b/backend/static/icons/bold/escalator-up-bold.svg new file mode 100644 index 0000000..f1d1362 --- /dev/null +++ b/backend/static/icons/bold/escalator-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/exam-bold.svg b/backend/static/icons/bold/exam-bold.svg new file mode 100644 index 0000000..6e15e2d --- /dev/null +++ b/backend/static/icons/bold/exam-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/exclamation-mark-bold.svg b/backend/static/icons/bold/exclamation-mark-bold.svg new file mode 100644 index 0000000..0aa333f --- /dev/null +++ b/backend/static/icons/bold/exclamation-mark-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/exclude-bold.svg b/backend/static/icons/bold/exclude-bold.svg new file mode 100644 index 0000000..c1fa105 --- /dev/null +++ b/backend/static/icons/bold/exclude-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/exclude-square-bold.svg b/backend/static/icons/bold/exclude-square-bold.svg new file mode 100644 index 0000000..6cf1334 --- /dev/null +++ b/backend/static/icons/bold/exclude-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/export-bold.svg b/backend/static/icons/bold/export-bold.svg new file mode 100644 index 0000000..bc0d38f --- /dev/null +++ b/backend/static/icons/bold/export-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eye-bold.svg b/backend/static/icons/bold/eye-bold.svg new file mode 100644 index 0000000..225f9c3 --- /dev/null +++ b/backend/static/icons/bold/eye-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eye-closed-bold.svg b/backend/static/icons/bold/eye-closed-bold.svg new file mode 100644 index 0000000..5a6362d --- /dev/null +++ b/backend/static/icons/bold/eye-closed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eye-slash-bold.svg b/backend/static/icons/bold/eye-slash-bold.svg new file mode 100644 index 0000000..ddd1efc --- /dev/null +++ b/backend/static/icons/bold/eye-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eyedropper-bold.svg b/backend/static/icons/bold/eyedropper-bold.svg new file mode 100644 index 0000000..11870ad --- /dev/null +++ b/backend/static/icons/bold/eyedropper-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eyedropper-sample-bold.svg b/backend/static/icons/bold/eyedropper-sample-bold.svg new file mode 100644 index 0000000..c4db232 --- /dev/null +++ b/backend/static/icons/bold/eyedropper-sample-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eyeglasses-bold.svg b/backend/static/icons/bold/eyeglasses-bold.svg new file mode 100644 index 0000000..c5d130a --- /dev/null +++ b/backend/static/icons/bold/eyeglasses-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/eyes-bold.svg b/backend/static/icons/bold/eyes-bold.svg new file mode 100644 index 0000000..e7320a3 --- /dev/null +++ b/backend/static/icons/bold/eyes-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/face-mask-bold.svg b/backend/static/icons/bold/face-mask-bold.svg new file mode 100644 index 0000000..2e2a0f1 --- /dev/null +++ b/backend/static/icons/bold/face-mask-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/facebook-logo-bold.svg b/backend/static/icons/bold/facebook-logo-bold.svg new file mode 100644 index 0000000..e0d6433 --- /dev/null +++ b/backend/static/icons/bold/facebook-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/factory-bold.svg b/backend/static/icons/bold/factory-bold.svg new file mode 100644 index 0000000..201e695 --- /dev/null +++ b/backend/static/icons/bold/factory-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/faders-bold.svg b/backend/static/icons/bold/faders-bold.svg new file mode 100644 index 0000000..45f5e4a --- /dev/null +++ b/backend/static/icons/bold/faders-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/faders-horizontal-bold.svg b/backend/static/icons/bold/faders-horizontal-bold.svg new file mode 100644 index 0000000..56f439a --- /dev/null +++ b/backend/static/icons/bold/faders-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fallout-shelter-bold.svg b/backend/static/icons/bold/fallout-shelter-bold.svg new file mode 100644 index 0000000..d9cc8ab --- /dev/null +++ b/backend/static/icons/bold/fallout-shelter-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fan-bold.svg b/backend/static/icons/bold/fan-bold.svg new file mode 100644 index 0000000..901d274 --- /dev/null +++ b/backend/static/icons/bold/fan-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/farm-bold.svg b/backend/static/icons/bold/farm-bold.svg new file mode 100644 index 0000000..7b0c96d --- /dev/null +++ b/backend/static/icons/bold/farm-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fast-forward-bold.svg b/backend/static/icons/bold/fast-forward-bold.svg new file mode 100644 index 0000000..93ffb05 --- /dev/null +++ b/backend/static/icons/bold/fast-forward-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fast-forward-circle-bold.svg b/backend/static/icons/bold/fast-forward-circle-bold.svg new file mode 100644 index 0000000..8940525 --- /dev/null +++ b/backend/static/icons/bold/fast-forward-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/feather-bold.svg b/backend/static/icons/bold/feather-bold.svg new file mode 100644 index 0000000..602485b --- /dev/null +++ b/backend/static/icons/bold/feather-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fediverse-logo-bold.svg b/backend/static/icons/bold/fediverse-logo-bold.svg new file mode 100644 index 0000000..8f8d511 --- /dev/null +++ b/backend/static/icons/bold/fediverse-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/figma-logo-bold.svg b/backend/static/icons/bold/figma-logo-bold.svg new file mode 100644 index 0000000..5006e6d --- /dev/null +++ b/backend/static/icons/bold/figma-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-archive-bold.svg b/backend/static/icons/bold/file-archive-bold.svg new file mode 100644 index 0000000..0a95ee9 --- /dev/null +++ b/backend/static/icons/bold/file-archive-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-arrow-down-bold.svg b/backend/static/icons/bold/file-arrow-down-bold.svg new file mode 100644 index 0000000..96a4050 --- /dev/null +++ b/backend/static/icons/bold/file-arrow-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-arrow-up-bold.svg b/backend/static/icons/bold/file-arrow-up-bold.svg new file mode 100644 index 0000000..8fb7138 --- /dev/null +++ b/backend/static/icons/bold/file-arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-audio-bold.svg b/backend/static/icons/bold/file-audio-bold.svg new file mode 100644 index 0000000..0f1404a --- /dev/null +++ b/backend/static/icons/bold/file-audio-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-bold.svg b/backend/static/icons/bold/file-bold.svg new file mode 100644 index 0000000..72a6e15 --- /dev/null +++ b/backend/static/icons/bold/file-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-c-bold.svg b/backend/static/icons/bold/file-c-bold.svg new file mode 100644 index 0000000..a8de1f7 --- /dev/null +++ b/backend/static/icons/bold/file-c-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-c-sharp-bold.svg b/backend/static/icons/bold/file-c-sharp-bold.svg new file mode 100644 index 0000000..ea655a3 --- /dev/null +++ b/backend/static/icons/bold/file-c-sharp-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-cloud-bold.svg b/backend/static/icons/bold/file-cloud-bold.svg new file mode 100644 index 0000000..f9fd3ec --- /dev/null +++ b/backend/static/icons/bold/file-cloud-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-code-bold.svg b/backend/static/icons/bold/file-code-bold.svg new file mode 100644 index 0000000..cdfb8f0 --- /dev/null +++ b/backend/static/icons/bold/file-code-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-cpp-bold.svg b/backend/static/icons/bold/file-cpp-bold.svg new file mode 100644 index 0000000..8c63d99 --- /dev/null +++ b/backend/static/icons/bold/file-cpp-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-css-bold.svg b/backend/static/icons/bold/file-css-bold.svg new file mode 100644 index 0000000..128c883 --- /dev/null +++ b/backend/static/icons/bold/file-css-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-csv-bold.svg b/backend/static/icons/bold/file-csv-bold.svg new file mode 100644 index 0000000..cf81857 --- /dev/null +++ b/backend/static/icons/bold/file-csv-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-dashed-bold.svg b/backend/static/icons/bold/file-dashed-bold.svg new file mode 100644 index 0000000..4b759fe --- /dev/null +++ b/backend/static/icons/bold/file-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-doc-bold.svg b/backend/static/icons/bold/file-doc-bold.svg new file mode 100644 index 0000000..2f94a66 --- /dev/null +++ b/backend/static/icons/bold/file-doc-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-html-bold.svg b/backend/static/icons/bold/file-html-bold.svg new file mode 100644 index 0000000..6e37722 --- /dev/null +++ b/backend/static/icons/bold/file-html-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-image-bold.svg b/backend/static/icons/bold/file-image-bold.svg new file mode 100644 index 0000000..4786063 --- /dev/null +++ b/backend/static/icons/bold/file-image-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-ini-bold.svg b/backend/static/icons/bold/file-ini-bold.svg new file mode 100644 index 0000000..4834c57 --- /dev/null +++ b/backend/static/icons/bold/file-ini-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-jpg-bold.svg b/backend/static/icons/bold/file-jpg-bold.svg new file mode 100644 index 0000000..6925f20 --- /dev/null +++ b/backend/static/icons/bold/file-jpg-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-js-bold.svg b/backend/static/icons/bold/file-js-bold.svg new file mode 100644 index 0000000..9e98760 --- /dev/null +++ b/backend/static/icons/bold/file-js-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-jsx-bold.svg b/backend/static/icons/bold/file-jsx-bold.svg new file mode 100644 index 0000000..ce6b163 --- /dev/null +++ b/backend/static/icons/bold/file-jsx-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-lock-bold.svg b/backend/static/icons/bold/file-lock-bold.svg new file mode 100644 index 0000000..a15333b --- /dev/null +++ b/backend/static/icons/bold/file-lock-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-magnifying-glass-bold.svg b/backend/static/icons/bold/file-magnifying-glass-bold.svg new file mode 100644 index 0000000..44a3152 --- /dev/null +++ b/backend/static/icons/bold/file-magnifying-glass-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-md-bold.svg b/backend/static/icons/bold/file-md-bold.svg new file mode 100644 index 0000000..ed9cdd9 --- /dev/null +++ b/backend/static/icons/bold/file-md-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-minus-bold.svg b/backend/static/icons/bold/file-minus-bold.svg new file mode 100644 index 0000000..6bbf5ad --- /dev/null +++ b/backend/static/icons/bold/file-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-pdf-bold.svg b/backend/static/icons/bold/file-pdf-bold.svg new file mode 100644 index 0000000..2188557 --- /dev/null +++ b/backend/static/icons/bold/file-pdf-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-plus-bold.svg b/backend/static/icons/bold/file-plus-bold.svg new file mode 100644 index 0000000..523fdf2 --- /dev/null +++ b/backend/static/icons/bold/file-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-png-bold.svg b/backend/static/icons/bold/file-png-bold.svg new file mode 100644 index 0000000..2f549c2 --- /dev/null +++ b/backend/static/icons/bold/file-png-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-ppt-bold.svg b/backend/static/icons/bold/file-ppt-bold.svg new file mode 100644 index 0000000..ed4aef1 --- /dev/null +++ b/backend/static/icons/bold/file-ppt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-py-bold.svg b/backend/static/icons/bold/file-py-bold.svg new file mode 100644 index 0000000..f2ef948 --- /dev/null +++ b/backend/static/icons/bold/file-py-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-rs-bold.svg b/backend/static/icons/bold/file-rs-bold.svg new file mode 100644 index 0000000..92d23ca --- /dev/null +++ b/backend/static/icons/bold/file-rs-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-sql-bold.svg b/backend/static/icons/bold/file-sql-bold.svg new file mode 100644 index 0000000..69cb82f --- /dev/null +++ b/backend/static/icons/bold/file-sql-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-svg-bold.svg b/backend/static/icons/bold/file-svg-bold.svg new file mode 100644 index 0000000..82e2809 --- /dev/null +++ b/backend/static/icons/bold/file-svg-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-text-bold.svg b/backend/static/icons/bold/file-text-bold.svg new file mode 100644 index 0000000..d82a4f0 --- /dev/null +++ b/backend/static/icons/bold/file-text-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-ts-bold.svg b/backend/static/icons/bold/file-ts-bold.svg new file mode 100644 index 0000000..4edc1b5 --- /dev/null +++ b/backend/static/icons/bold/file-ts-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-tsx-bold.svg b/backend/static/icons/bold/file-tsx-bold.svg new file mode 100644 index 0000000..cb2c026 --- /dev/null +++ b/backend/static/icons/bold/file-tsx-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-txt-bold.svg b/backend/static/icons/bold/file-txt-bold.svg new file mode 100644 index 0000000..fcfab88 --- /dev/null +++ b/backend/static/icons/bold/file-txt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-video-bold.svg b/backend/static/icons/bold/file-video-bold.svg new file mode 100644 index 0000000..2e15ac6 --- /dev/null +++ b/backend/static/icons/bold/file-video-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-vue-bold.svg b/backend/static/icons/bold/file-vue-bold.svg new file mode 100644 index 0000000..ff8062c --- /dev/null +++ b/backend/static/icons/bold/file-vue-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-x-bold.svg b/backend/static/icons/bold/file-x-bold.svg new file mode 100644 index 0000000..0a0f0bf --- /dev/null +++ b/backend/static/icons/bold/file-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-xls-bold.svg b/backend/static/icons/bold/file-xls-bold.svg new file mode 100644 index 0000000..1da3bc3 --- /dev/null +++ b/backend/static/icons/bold/file-xls-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/file-zip-bold.svg b/backend/static/icons/bold/file-zip-bold.svg new file mode 100644 index 0000000..145f726 --- /dev/null +++ b/backend/static/icons/bold/file-zip-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/files-bold.svg b/backend/static/icons/bold/files-bold.svg new file mode 100644 index 0000000..32c2a1c --- /dev/null +++ b/backend/static/icons/bold/files-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/film-reel-bold.svg b/backend/static/icons/bold/film-reel-bold.svg new file mode 100644 index 0000000..c3917b3 --- /dev/null +++ b/backend/static/icons/bold/film-reel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/film-script-bold.svg b/backend/static/icons/bold/film-script-bold.svg new file mode 100644 index 0000000..0eef920 --- /dev/null +++ b/backend/static/icons/bold/film-script-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/film-slate-bold.svg b/backend/static/icons/bold/film-slate-bold.svg new file mode 100644 index 0000000..5c033dd --- /dev/null +++ b/backend/static/icons/bold/film-slate-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/film-strip-bold.svg b/backend/static/icons/bold/film-strip-bold.svg new file mode 100644 index 0000000..52f2d02 --- /dev/null +++ b/backend/static/icons/bold/film-strip-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fingerprint-bold.svg b/backend/static/icons/bold/fingerprint-bold.svg new file mode 100644 index 0000000..418a4f0 --- /dev/null +++ b/backend/static/icons/bold/fingerprint-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fingerprint-simple-bold.svg b/backend/static/icons/bold/fingerprint-simple-bold.svg new file mode 100644 index 0000000..cf9e1e5 --- /dev/null +++ b/backend/static/icons/bold/fingerprint-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/finn-the-human-bold.svg b/backend/static/icons/bold/finn-the-human-bold.svg new file mode 100644 index 0000000..86ca628 --- /dev/null +++ b/backend/static/icons/bold/finn-the-human-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fire-bold.svg b/backend/static/icons/bold/fire-bold.svg new file mode 100644 index 0000000..b881971 --- /dev/null +++ b/backend/static/icons/bold/fire-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fire-extinguisher-bold.svg b/backend/static/icons/bold/fire-extinguisher-bold.svg new file mode 100644 index 0000000..a9194cd --- /dev/null +++ b/backend/static/icons/bold/fire-extinguisher-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fire-simple-bold.svg b/backend/static/icons/bold/fire-simple-bold.svg new file mode 100644 index 0000000..76f7475 --- /dev/null +++ b/backend/static/icons/bold/fire-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fire-truck-bold.svg b/backend/static/icons/bold/fire-truck-bold.svg new file mode 100644 index 0000000..e8eaff2 --- /dev/null +++ b/backend/static/icons/bold/fire-truck-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/first-aid-bold.svg b/backend/static/icons/bold/first-aid-bold.svg new file mode 100644 index 0000000..ac14317 --- /dev/null +++ b/backend/static/icons/bold/first-aid-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/first-aid-kit-bold.svg b/backend/static/icons/bold/first-aid-kit-bold.svg new file mode 100644 index 0000000..703d57f --- /dev/null +++ b/backend/static/icons/bold/first-aid-kit-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fish-bold.svg b/backend/static/icons/bold/fish-bold.svg new file mode 100644 index 0000000..a7a8220 --- /dev/null +++ b/backend/static/icons/bold/fish-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fish-simple-bold.svg b/backend/static/icons/bold/fish-simple-bold.svg new file mode 100644 index 0000000..95e36ef --- /dev/null +++ b/backend/static/icons/bold/fish-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flag-banner-bold.svg b/backend/static/icons/bold/flag-banner-bold.svg new file mode 100644 index 0000000..eb06f49 --- /dev/null +++ b/backend/static/icons/bold/flag-banner-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flag-banner-fold-bold.svg b/backend/static/icons/bold/flag-banner-fold-bold.svg new file mode 100644 index 0000000..0d46a88 --- /dev/null +++ b/backend/static/icons/bold/flag-banner-fold-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flag-bold.svg b/backend/static/icons/bold/flag-bold.svg new file mode 100644 index 0000000..d00ba75 --- /dev/null +++ b/backend/static/icons/bold/flag-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flag-checkered-bold.svg b/backend/static/icons/bold/flag-checkered-bold.svg new file mode 100644 index 0000000..cd0491b --- /dev/null +++ b/backend/static/icons/bold/flag-checkered-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flag-pennant-bold.svg b/backend/static/icons/bold/flag-pennant-bold.svg new file mode 100644 index 0000000..ea48ebf --- /dev/null +++ b/backend/static/icons/bold/flag-pennant-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flame-bold.svg b/backend/static/icons/bold/flame-bold.svg new file mode 100644 index 0000000..380c81e --- /dev/null +++ b/backend/static/icons/bold/flame-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flashlight-bold.svg b/backend/static/icons/bold/flashlight-bold.svg new file mode 100644 index 0000000..f0f3103 --- /dev/null +++ b/backend/static/icons/bold/flashlight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flask-bold.svg b/backend/static/icons/bold/flask-bold.svg new file mode 100644 index 0000000..f45d9a3 --- /dev/null +++ b/backend/static/icons/bold/flask-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flip-horizontal-bold.svg b/backend/static/icons/bold/flip-horizontal-bold.svg new file mode 100644 index 0000000..2ff5333 --- /dev/null +++ b/backend/static/icons/bold/flip-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flip-vertical-bold.svg b/backend/static/icons/bold/flip-vertical-bold.svg new file mode 100644 index 0000000..673884b --- /dev/null +++ b/backend/static/icons/bold/flip-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/floppy-disk-back-bold.svg b/backend/static/icons/bold/floppy-disk-back-bold.svg new file mode 100644 index 0000000..9949f57 --- /dev/null +++ b/backend/static/icons/bold/floppy-disk-back-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/floppy-disk-bold.svg b/backend/static/icons/bold/floppy-disk-bold.svg new file mode 100644 index 0000000..b1e70db --- /dev/null +++ b/backend/static/icons/bold/floppy-disk-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flow-arrow-bold.svg b/backend/static/icons/bold/flow-arrow-bold.svg new file mode 100644 index 0000000..6e10256 --- /dev/null +++ b/backend/static/icons/bold/flow-arrow-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flower-bold.svg b/backend/static/icons/bold/flower-bold.svg new file mode 100644 index 0000000..dfdf02a --- /dev/null +++ b/backend/static/icons/bold/flower-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flower-lotus-bold.svg b/backend/static/icons/bold/flower-lotus-bold.svg new file mode 100644 index 0000000..35fe4a4 --- /dev/null +++ b/backend/static/icons/bold/flower-lotus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flower-tulip-bold.svg b/backend/static/icons/bold/flower-tulip-bold.svg new file mode 100644 index 0000000..8d4cc2f --- /dev/null +++ b/backend/static/icons/bold/flower-tulip-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/flying-saucer-bold.svg b/backend/static/icons/bold/flying-saucer-bold.svg new file mode 100644 index 0000000..32f8e40 --- /dev/null +++ b/backend/static/icons/bold/flying-saucer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-bold.svg b/backend/static/icons/bold/folder-bold.svg new file mode 100644 index 0000000..908f613 --- /dev/null +++ b/backend/static/icons/bold/folder-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-dashed-bold.svg b/backend/static/icons/bold/folder-dashed-bold.svg new file mode 100644 index 0000000..3fcc7de --- /dev/null +++ b/backend/static/icons/bold/folder-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-lock-bold.svg b/backend/static/icons/bold/folder-lock-bold.svg new file mode 100644 index 0000000..d7157a5 --- /dev/null +++ b/backend/static/icons/bold/folder-lock-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-minus-bold.svg b/backend/static/icons/bold/folder-minus-bold.svg new file mode 100644 index 0000000..a1e4cf7 --- /dev/null +++ b/backend/static/icons/bold/folder-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-open-bold.svg b/backend/static/icons/bold/folder-open-bold.svg new file mode 100644 index 0000000..07c40a4 --- /dev/null +++ b/backend/static/icons/bold/folder-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-plus-bold.svg b/backend/static/icons/bold/folder-plus-bold.svg new file mode 100644 index 0000000..f2e521b --- /dev/null +++ b/backend/static/icons/bold/folder-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-bold.svg b/backend/static/icons/bold/folder-simple-bold.svg new file mode 100644 index 0000000..8f28bf6 --- /dev/null +++ b/backend/static/icons/bold/folder-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-dashed-bold.svg b/backend/static/icons/bold/folder-simple-dashed-bold.svg new file mode 100644 index 0000000..ddefc20 --- /dev/null +++ b/backend/static/icons/bold/folder-simple-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-lock-bold.svg b/backend/static/icons/bold/folder-simple-lock-bold.svg new file mode 100644 index 0000000..0bca214 --- /dev/null +++ b/backend/static/icons/bold/folder-simple-lock-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-minus-bold.svg b/backend/static/icons/bold/folder-simple-minus-bold.svg new file mode 100644 index 0000000..0f7f3ff --- /dev/null +++ b/backend/static/icons/bold/folder-simple-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-plus-bold.svg b/backend/static/icons/bold/folder-simple-plus-bold.svg new file mode 100644 index 0000000..dc54282 --- /dev/null +++ b/backend/static/icons/bold/folder-simple-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-star-bold.svg b/backend/static/icons/bold/folder-simple-star-bold.svg new file mode 100644 index 0000000..4d7cd85 --- /dev/null +++ b/backend/static/icons/bold/folder-simple-star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-simple-user-bold.svg b/backend/static/icons/bold/folder-simple-user-bold.svg new file mode 100644 index 0000000..7d18b16 --- /dev/null +++ b/backend/static/icons/bold/folder-simple-user-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-star-bold.svg b/backend/static/icons/bold/folder-star-bold.svg new file mode 100644 index 0000000..69d0f89 --- /dev/null +++ b/backend/static/icons/bold/folder-star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folder-user-bold.svg b/backend/static/icons/bold/folder-user-bold.svg new file mode 100644 index 0000000..6f5863c --- /dev/null +++ b/backend/static/icons/bold/folder-user-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/folders-bold.svg b/backend/static/icons/bold/folders-bold.svg new file mode 100644 index 0000000..985e8e0 --- /dev/null +++ b/backend/static/icons/bold/folders-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/football-bold.svg b/backend/static/icons/bold/football-bold.svg new file mode 100644 index 0000000..3c98314 --- /dev/null +++ b/backend/static/icons/bold/football-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/football-helmet-bold.svg b/backend/static/icons/bold/football-helmet-bold.svg new file mode 100644 index 0000000..66a15ec --- /dev/null +++ b/backend/static/icons/bold/football-helmet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/footprints-bold.svg b/backend/static/icons/bold/footprints-bold.svg new file mode 100644 index 0000000..dc77539 --- /dev/null +++ b/backend/static/icons/bold/footprints-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/fork-knife-bold.svg b/backend/static/icons/bold/fork-knife-bold.svg new file mode 100644 index 0000000..ea1ac63 --- /dev/null +++ b/backend/static/icons/bold/fork-knife-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/four-k-bold.svg b/backend/static/icons/bold/four-k-bold.svg new file mode 100644 index 0000000..7d70d10 --- /dev/null +++ b/backend/static/icons/bold/four-k-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/frame-corners-bold.svg b/backend/static/icons/bold/frame-corners-bold.svg new file mode 100644 index 0000000..3a28107 --- /dev/null +++ b/backend/static/icons/bold/frame-corners-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/framer-logo-bold.svg b/backend/static/icons/bold/framer-logo-bold.svg new file mode 100644 index 0000000..45941f1 --- /dev/null +++ b/backend/static/icons/bold/framer-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/function-bold.svg b/backend/static/icons/bold/function-bold.svg new file mode 100644 index 0000000..e1fb01f --- /dev/null +++ b/backend/static/icons/bold/function-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/funnel-bold.svg b/backend/static/icons/bold/funnel-bold.svg new file mode 100644 index 0000000..7dfecc7 --- /dev/null +++ b/backend/static/icons/bold/funnel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/funnel-simple-bold.svg b/backend/static/icons/bold/funnel-simple-bold.svg new file mode 100644 index 0000000..7fce421 --- /dev/null +++ b/backend/static/icons/bold/funnel-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/funnel-simple-x-bold.svg b/backend/static/icons/bold/funnel-simple-x-bold.svg new file mode 100644 index 0000000..2e9de0a --- /dev/null +++ b/backend/static/icons/bold/funnel-simple-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/funnel-x-bold.svg b/backend/static/icons/bold/funnel-x-bold.svg new file mode 100644 index 0000000..e98d5b5 --- /dev/null +++ b/backend/static/icons/bold/funnel-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/game-controller-bold.svg b/backend/static/icons/bold/game-controller-bold.svg new file mode 100644 index 0000000..2375c9f --- /dev/null +++ b/backend/static/icons/bold/game-controller-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/garage-bold.svg b/backend/static/icons/bold/garage-bold.svg new file mode 100644 index 0000000..8b0918e --- /dev/null +++ b/backend/static/icons/bold/garage-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gas-can-bold.svg b/backend/static/icons/bold/gas-can-bold.svg new file mode 100644 index 0000000..93cad16 --- /dev/null +++ b/backend/static/icons/bold/gas-can-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gas-pump-bold.svg b/backend/static/icons/bold/gas-pump-bold.svg new file mode 100644 index 0000000..c8ec230 --- /dev/null +++ b/backend/static/icons/bold/gas-pump-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gauge-bold.svg b/backend/static/icons/bold/gauge-bold.svg new file mode 100644 index 0000000..f4d3e53 --- /dev/null +++ b/backend/static/icons/bold/gauge-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gavel-bold.svg b/backend/static/icons/bold/gavel-bold.svg new file mode 100644 index 0000000..2197900 --- /dev/null +++ b/backend/static/icons/bold/gavel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gear-bold.svg b/backend/static/icons/bold/gear-bold.svg new file mode 100644 index 0000000..d314f88 --- /dev/null +++ b/backend/static/icons/bold/gear-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gear-fine-bold.svg b/backend/static/icons/bold/gear-fine-bold.svg new file mode 100644 index 0000000..7cc79e4 --- /dev/null +++ b/backend/static/icons/bold/gear-fine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gear-six-bold.svg b/backend/static/icons/bold/gear-six-bold.svg new file mode 100644 index 0000000..b84a382 --- /dev/null +++ b/backend/static/icons/bold/gear-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gender-female-bold.svg b/backend/static/icons/bold/gender-female-bold.svg new file mode 100644 index 0000000..a8cdfe1 --- /dev/null +++ b/backend/static/icons/bold/gender-female-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gender-intersex-bold.svg b/backend/static/icons/bold/gender-intersex-bold.svg new file mode 100644 index 0000000..c63142d --- /dev/null +++ b/backend/static/icons/bold/gender-intersex-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gender-male-bold.svg b/backend/static/icons/bold/gender-male-bold.svg new file mode 100644 index 0000000..65da74b --- /dev/null +++ b/backend/static/icons/bold/gender-male-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gender-neuter-bold.svg b/backend/static/icons/bold/gender-neuter-bold.svg new file mode 100644 index 0000000..1ba26cd --- /dev/null +++ b/backend/static/icons/bold/gender-neuter-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gender-nonbinary-bold.svg b/backend/static/icons/bold/gender-nonbinary-bold.svg new file mode 100644 index 0000000..a8745e8 --- /dev/null +++ b/backend/static/icons/bold/gender-nonbinary-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gender-transgender-bold.svg b/backend/static/icons/bold/gender-transgender-bold.svg new file mode 100644 index 0000000..dbfb1c0 --- /dev/null +++ b/backend/static/icons/bold/gender-transgender-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ghost-bold.svg b/backend/static/icons/bold/ghost-bold.svg new file mode 100644 index 0000000..65c7056 --- /dev/null +++ b/backend/static/icons/bold/ghost-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gif-bold.svg b/backend/static/icons/bold/gif-bold.svg new file mode 100644 index 0000000..2106745 --- /dev/null +++ b/backend/static/icons/bold/gif-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gift-bold.svg b/backend/static/icons/bold/gift-bold.svg new file mode 100644 index 0000000..e94f490 --- /dev/null +++ b/backend/static/icons/bold/gift-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/git-branch-bold.svg b/backend/static/icons/bold/git-branch-bold.svg new file mode 100644 index 0000000..d16438e --- /dev/null +++ b/backend/static/icons/bold/git-branch-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/git-commit-bold.svg b/backend/static/icons/bold/git-commit-bold.svg new file mode 100644 index 0000000..5b6ce29 --- /dev/null +++ b/backend/static/icons/bold/git-commit-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/git-diff-bold.svg b/backend/static/icons/bold/git-diff-bold.svg new file mode 100644 index 0000000..3fb051e --- /dev/null +++ b/backend/static/icons/bold/git-diff-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/git-fork-bold.svg b/backend/static/icons/bold/git-fork-bold.svg new file mode 100644 index 0000000..fab7cd0 --- /dev/null +++ b/backend/static/icons/bold/git-fork-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/git-merge-bold.svg b/backend/static/icons/bold/git-merge-bold.svg new file mode 100644 index 0000000..d6c5ac1 --- /dev/null +++ b/backend/static/icons/bold/git-merge-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/git-pull-request-bold.svg b/backend/static/icons/bold/git-pull-request-bold.svg new file mode 100644 index 0000000..0adb756 --- /dev/null +++ b/backend/static/icons/bold/git-pull-request-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/github-logo-bold.svg b/backend/static/icons/bold/github-logo-bold.svg new file mode 100644 index 0000000..dbaefe3 --- /dev/null +++ b/backend/static/icons/bold/github-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gitlab-logo-bold.svg b/backend/static/icons/bold/gitlab-logo-bold.svg new file mode 100644 index 0000000..a2b294f --- /dev/null +++ b/backend/static/icons/bold/gitlab-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gitlab-logo-simple-bold.svg b/backend/static/icons/bold/gitlab-logo-simple-bold.svg new file mode 100644 index 0000000..41b4b83 --- /dev/null +++ b/backend/static/icons/bold/gitlab-logo-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-bold.svg b/backend/static/icons/bold/globe-bold.svg new file mode 100644 index 0000000..e8d360b --- /dev/null +++ b/backend/static/icons/bold/globe-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-hemisphere-east-bold.svg b/backend/static/icons/bold/globe-hemisphere-east-bold.svg new file mode 100644 index 0000000..5ff8b2f --- /dev/null +++ b/backend/static/icons/bold/globe-hemisphere-east-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-hemisphere-west-bold.svg b/backend/static/icons/bold/globe-hemisphere-west-bold.svg new file mode 100644 index 0000000..88fdc87 --- /dev/null +++ b/backend/static/icons/bold/globe-hemisphere-west-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-simple-bold.svg b/backend/static/icons/bold/globe-simple-bold.svg new file mode 100644 index 0000000..f6ed1db --- /dev/null +++ b/backend/static/icons/bold/globe-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-simple-x-bold.svg b/backend/static/icons/bold/globe-simple-x-bold.svg new file mode 100644 index 0000000..032b9d2 --- /dev/null +++ b/backend/static/icons/bold/globe-simple-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-stand-bold.svg b/backend/static/icons/bold/globe-stand-bold.svg new file mode 100644 index 0000000..02f3577 --- /dev/null +++ b/backend/static/icons/bold/globe-stand-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/globe-x-bold.svg b/backend/static/icons/bold/globe-x-bold.svg new file mode 100644 index 0000000..33b1130 --- /dev/null +++ b/backend/static/icons/bold/globe-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/goggles-bold.svg b/backend/static/icons/bold/goggles-bold.svg new file mode 100644 index 0000000..713f6ae --- /dev/null +++ b/backend/static/icons/bold/goggles-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/golf-bold.svg b/backend/static/icons/bold/golf-bold.svg new file mode 100644 index 0000000..c8c23d6 --- /dev/null +++ b/backend/static/icons/bold/golf-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/goodreads-logo-bold.svg b/backend/static/icons/bold/goodreads-logo-bold.svg new file mode 100644 index 0000000..88cc58e --- /dev/null +++ b/backend/static/icons/bold/goodreads-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-cardboard-logo-bold.svg b/backend/static/icons/bold/google-cardboard-logo-bold.svg new file mode 100644 index 0000000..65429a3 --- /dev/null +++ b/backend/static/icons/bold/google-cardboard-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-chrome-logo-bold.svg b/backend/static/icons/bold/google-chrome-logo-bold.svg new file mode 100644 index 0000000..9a0bee1 --- /dev/null +++ b/backend/static/icons/bold/google-chrome-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-drive-logo-bold.svg b/backend/static/icons/bold/google-drive-logo-bold.svg new file mode 100644 index 0000000..3e9ef02 --- /dev/null +++ b/backend/static/icons/bold/google-drive-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-logo-bold.svg b/backend/static/icons/bold/google-logo-bold.svg new file mode 100644 index 0000000..54233e5 --- /dev/null +++ b/backend/static/icons/bold/google-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-photos-logo-bold.svg b/backend/static/icons/bold/google-photos-logo-bold.svg new file mode 100644 index 0000000..541c73f --- /dev/null +++ b/backend/static/icons/bold/google-photos-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-play-logo-bold.svg b/backend/static/icons/bold/google-play-logo-bold.svg new file mode 100644 index 0000000..a6e49d0 --- /dev/null +++ b/backend/static/icons/bold/google-play-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/google-podcasts-logo-bold.svg b/backend/static/icons/bold/google-podcasts-logo-bold.svg new file mode 100644 index 0000000..5537d0b --- /dev/null +++ b/backend/static/icons/bold/google-podcasts-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gps-bold.svg b/backend/static/icons/bold/gps-bold.svg new file mode 100644 index 0000000..ea58066 --- /dev/null +++ b/backend/static/icons/bold/gps-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gps-fix-bold.svg b/backend/static/icons/bold/gps-fix-bold.svg new file mode 100644 index 0000000..5f565cc --- /dev/null +++ b/backend/static/icons/bold/gps-fix-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gps-slash-bold.svg b/backend/static/icons/bold/gps-slash-bold.svg new file mode 100644 index 0000000..fc8fedf --- /dev/null +++ b/backend/static/icons/bold/gps-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/gradient-bold.svg b/backend/static/icons/bold/gradient-bold.svg new file mode 100644 index 0000000..1b57cfd --- /dev/null +++ b/backend/static/icons/bold/gradient-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/graduation-cap-bold.svg b/backend/static/icons/bold/graduation-cap-bold.svg new file mode 100644 index 0000000..50acb08 --- /dev/null +++ b/backend/static/icons/bold/graduation-cap-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/grains-bold.svg b/backend/static/icons/bold/grains-bold.svg new file mode 100644 index 0000000..881fcf9 --- /dev/null +++ b/backend/static/icons/bold/grains-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/grains-slash-bold.svg b/backend/static/icons/bold/grains-slash-bold.svg new file mode 100644 index 0000000..fd5af80 --- /dev/null +++ b/backend/static/icons/bold/grains-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/graph-bold.svg b/backend/static/icons/bold/graph-bold.svg new file mode 100644 index 0000000..dd37e89 --- /dev/null +++ b/backend/static/icons/bold/graph-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/graphics-card-bold.svg b/backend/static/icons/bold/graphics-card-bold.svg new file mode 100644 index 0000000..3399228 --- /dev/null +++ b/backend/static/icons/bold/graphics-card-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/greater-than-bold.svg b/backend/static/icons/bold/greater-than-bold.svg new file mode 100644 index 0000000..1f44def --- /dev/null +++ b/backend/static/icons/bold/greater-than-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/greater-than-or-equal-bold.svg b/backend/static/icons/bold/greater-than-or-equal-bold.svg new file mode 100644 index 0000000..d24e654 --- /dev/null +++ b/backend/static/icons/bold/greater-than-or-equal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/grid-four-bold.svg b/backend/static/icons/bold/grid-four-bold.svg new file mode 100644 index 0000000..4cbaea3 --- /dev/null +++ b/backend/static/icons/bold/grid-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/grid-nine-bold.svg b/backend/static/icons/bold/grid-nine-bold.svg new file mode 100644 index 0000000..6c1023a --- /dev/null +++ b/backend/static/icons/bold/grid-nine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/guitar-bold.svg b/backend/static/icons/bold/guitar-bold.svg new file mode 100644 index 0000000..ea6ee3d --- /dev/null +++ b/backend/static/icons/bold/guitar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hair-dryer-bold.svg b/backend/static/icons/bold/hair-dryer-bold.svg new file mode 100644 index 0000000..06c9f7d --- /dev/null +++ b/backend/static/icons/bold/hair-dryer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hamburger-bold.svg b/backend/static/icons/bold/hamburger-bold.svg new file mode 100644 index 0000000..856cb35 --- /dev/null +++ b/backend/static/icons/bold/hamburger-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hammer-bold.svg b/backend/static/icons/bold/hammer-bold.svg new file mode 100644 index 0000000..e9e1f3b --- /dev/null +++ b/backend/static/icons/bold/hammer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-arrow-down-bold.svg b/backend/static/icons/bold/hand-arrow-down-bold.svg new file mode 100644 index 0000000..f32e120 --- /dev/null +++ b/backend/static/icons/bold/hand-arrow-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-arrow-up-bold.svg b/backend/static/icons/bold/hand-arrow-up-bold.svg new file mode 100644 index 0000000..ba6f902 --- /dev/null +++ b/backend/static/icons/bold/hand-arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-bold.svg b/backend/static/icons/bold/hand-bold.svg new file mode 100644 index 0000000..6bd2abb --- /dev/null +++ b/backend/static/icons/bold/hand-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-coins-bold.svg b/backend/static/icons/bold/hand-coins-bold.svg new file mode 100644 index 0000000..16d7ff5 --- /dev/null +++ b/backend/static/icons/bold/hand-coins-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-deposit-bold.svg b/backend/static/icons/bold/hand-deposit-bold.svg new file mode 100644 index 0000000..9a0e482 --- /dev/null +++ b/backend/static/icons/bold/hand-deposit-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-eye-bold.svg b/backend/static/icons/bold/hand-eye-bold.svg new file mode 100644 index 0000000..b361a12 --- /dev/null +++ b/backend/static/icons/bold/hand-eye-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-fist-bold.svg b/backend/static/icons/bold/hand-fist-bold.svg new file mode 100644 index 0000000..437697c --- /dev/null +++ b/backend/static/icons/bold/hand-fist-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-grabbing-bold.svg b/backend/static/icons/bold/hand-grabbing-bold.svg new file mode 100644 index 0000000..1bb5052 --- /dev/null +++ b/backend/static/icons/bold/hand-grabbing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-heart-bold.svg b/backend/static/icons/bold/hand-heart-bold.svg new file mode 100644 index 0000000..1552e2f --- /dev/null +++ b/backend/static/icons/bold/hand-heart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-palm-bold.svg b/backend/static/icons/bold/hand-palm-bold.svg new file mode 100644 index 0000000..95d1146 --- /dev/null +++ b/backend/static/icons/bold/hand-palm-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-peace-bold.svg b/backend/static/icons/bold/hand-peace-bold.svg new file mode 100644 index 0000000..7e0bc30 --- /dev/null +++ b/backend/static/icons/bold/hand-peace-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-pointing-bold.svg b/backend/static/icons/bold/hand-pointing-bold.svg new file mode 100644 index 0000000..640e0ad --- /dev/null +++ b/backend/static/icons/bold/hand-pointing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-soap-bold.svg b/backend/static/icons/bold/hand-soap-bold.svg new file mode 100644 index 0000000..9cec7f6 --- /dev/null +++ b/backend/static/icons/bold/hand-soap-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-swipe-left-bold.svg b/backend/static/icons/bold/hand-swipe-left-bold.svg new file mode 100644 index 0000000..62aa00c --- /dev/null +++ b/backend/static/icons/bold/hand-swipe-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-swipe-right-bold.svg b/backend/static/icons/bold/hand-swipe-right-bold.svg new file mode 100644 index 0000000..2d66dcf --- /dev/null +++ b/backend/static/icons/bold/hand-swipe-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-tap-bold.svg b/backend/static/icons/bold/hand-tap-bold.svg new file mode 100644 index 0000000..6a14b35 --- /dev/null +++ b/backend/static/icons/bold/hand-tap-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-waving-bold.svg b/backend/static/icons/bold/hand-waving-bold.svg new file mode 100644 index 0000000..1c0f708 --- /dev/null +++ b/backend/static/icons/bold/hand-waving-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hand-withdraw-bold.svg b/backend/static/icons/bold/hand-withdraw-bold.svg new file mode 100644 index 0000000..bfd2038 --- /dev/null +++ b/backend/static/icons/bold/hand-withdraw-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/handbag-bold.svg b/backend/static/icons/bold/handbag-bold.svg new file mode 100644 index 0000000..00a22d6 --- /dev/null +++ b/backend/static/icons/bold/handbag-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/handbag-simple-bold.svg b/backend/static/icons/bold/handbag-simple-bold.svg new file mode 100644 index 0000000..4bca97a --- /dev/null +++ b/backend/static/icons/bold/handbag-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hands-clapping-bold.svg b/backend/static/icons/bold/hands-clapping-bold.svg new file mode 100644 index 0000000..8475650 --- /dev/null +++ b/backend/static/icons/bold/hands-clapping-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hands-praying-bold.svg b/backend/static/icons/bold/hands-praying-bold.svg new file mode 100644 index 0000000..ba42d57 --- /dev/null +++ b/backend/static/icons/bold/hands-praying-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/handshake-bold.svg b/backend/static/icons/bold/handshake-bold.svg new file mode 100644 index 0000000..cb4146d --- /dev/null +++ b/backend/static/icons/bold/handshake-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hard-drive-bold.svg b/backend/static/icons/bold/hard-drive-bold.svg new file mode 100644 index 0000000..698916b --- /dev/null +++ b/backend/static/icons/bold/hard-drive-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hard-drives-bold.svg b/backend/static/icons/bold/hard-drives-bold.svg new file mode 100644 index 0000000..f7d3da3 --- /dev/null +++ b/backend/static/icons/bold/hard-drives-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hard-hat-bold.svg b/backend/static/icons/bold/hard-hat-bold.svg new file mode 100644 index 0000000..b59288b --- /dev/null +++ b/backend/static/icons/bold/hard-hat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hash-bold.svg b/backend/static/icons/bold/hash-bold.svg new file mode 100644 index 0000000..b674eb4 --- /dev/null +++ b/backend/static/icons/bold/hash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hash-straight-bold.svg b/backend/static/icons/bold/hash-straight-bold.svg new file mode 100644 index 0000000..3ea34b6 --- /dev/null +++ b/backend/static/icons/bold/hash-straight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/head-circuit-bold.svg b/backend/static/icons/bold/head-circuit-bold.svg new file mode 100644 index 0000000..4928418 --- /dev/null +++ b/backend/static/icons/bold/head-circuit-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/headlights-bold.svg b/backend/static/icons/bold/headlights-bold.svg new file mode 100644 index 0000000..ae87421 --- /dev/null +++ b/backend/static/icons/bold/headlights-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/headphones-bold.svg b/backend/static/icons/bold/headphones-bold.svg new file mode 100644 index 0000000..733f3ca --- /dev/null +++ b/backend/static/icons/bold/headphones-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/headset-bold.svg b/backend/static/icons/bold/headset-bold.svg new file mode 100644 index 0000000..489ccbb --- /dev/null +++ b/backend/static/icons/bold/headset-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/heart-bold.svg b/backend/static/icons/bold/heart-bold.svg new file mode 100644 index 0000000..9a4c44b --- /dev/null +++ b/backend/static/icons/bold/heart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/heart-break-bold.svg b/backend/static/icons/bold/heart-break-bold.svg new file mode 100644 index 0000000..b6707ad --- /dev/null +++ b/backend/static/icons/bold/heart-break-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/heart-half-bold.svg b/backend/static/icons/bold/heart-half-bold.svg new file mode 100644 index 0000000..24e9f2a --- /dev/null +++ b/backend/static/icons/bold/heart-half-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/heart-straight-bold.svg b/backend/static/icons/bold/heart-straight-bold.svg new file mode 100644 index 0000000..93df220 --- /dev/null +++ b/backend/static/icons/bold/heart-straight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/heart-straight-break-bold.svg b/backend/static/icons/bold/heart-straight-break-bold.svg new file mode 100644 index 0000000..1ef7e84 --- /dev/null +++ b/backend/static/icons/bold/heart-straight-break-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/heartbeat-bold.svg b/backend/static/icons/bold/heartbeat-bold.svg new file mode 100644 index 0000000..08aad0b --- /dev/null +++ b/backend/static/icons/bold/heartbeat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hexagon-bold.svg b/backend/static/icons/bold/hexagon-bold.svg new file mode 100644 index 0000000..6cb6727 --- /dev/null +++ b/backend/static/icons/bold/hexagon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/high-definition-bold.svg b/backend/static/icons/bold/high-definition-bold.svg new file mode 100644 index 0000000..e15df23 --- /dev/null +++ b/backend/static/icons/bold/high-definition-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/high-heel-bold.svg b/backend/static/icons/bold/high-heel-bold.svg new file mode 100644 index 0000000..c164baa --- /dev/null +++ b/backend/static/icons/bold/high-heel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/highlighter-bold.svg b/backend/static/icons/bold/highlighter-bold.svg new file mode 100644 index 0000000..6c59b66 --- /dev/null +++ b/backend/static/icons/bold/highlighter-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/highlighter-circle-bold.svg b/backend/static/icons/bold/highlighter-circle-bold.svg new file mode 100644 index 0000000..c304d23 --- /dev/null +++ b/backend/static/icons/bold/highlighter-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hockey-bold.svg b/backend/static/icons/bold/hockey-bold.svg new file mode 100644 index 0000000..5ac19c7 --- /dev/null +++ b/backend/static/icons/bold/hockey-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hoodie-bold.svg b/backend/static/icons/bold/hoodie-bold.svg new file mode 100644 index 0000000..f98cef2 --- /dev/null +++ b/backend/static/icons/bold/hoodie-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/horse-bold.svg b/backend/static/icons/bold/horse-bold.svg new file mode 100644 index 0000000..a5c3c84 --- /dev/null +++ b/backend/static/icons/bold/horse-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hospital-bold.svg b/backend/static/icons/bold/hospital-bold.svg new file mode 100644 index 0000000..49d82be --- /dev/null +++ b/backend/static/icons/bold/hospital-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-bold.svg b/backend/static/icons/bold/hourglass-bold.svg new file mode 100644 index 0000000..85da709 --- /dev/null +++ b/backend/static/icons/bold/hourglass-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-high-bold.svg b/backend/static/icons/bold/hourglass-high-bold.svg new file mode 100644 index 0000000..fc78ec7 --- /dev/null +++ b/backend/static/icons/bold/hourglass-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-low-bold.svg b/backend/static/icons/bold/hourglass-low-bold.svg new file mode 100644 index 0000000..1e3f20b --- /dev/null +++ b/backend/static/icons/bold/hourglass-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-medium-bold.svg b/backend/static/icons/bold/hourglass-medium-bold.svg new file mode 100644 index 0000000..cb6f4d5 --- /dev/null +++ b/backend/static/icons/bold/hourglass-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-simple-bold.svg b/backend/static/icons/bold/hourglass-simple-bold.svg new file mode 100644 index 0000000..0849ac8 --- /dev/null +++ b/backend/static/icons/bold/hourglass-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-simple-high-bold.svg b/backend/static/icons/bold/hourglass-simple-high-bold.svg new file mode 100644 index 0000000..724a53d --- /dev/null +++ b/backend/static/icons/bold/hourglass-simple-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-simple-low-bold.svg b/backend/static/icons/bold/hourglass-simple-low-bold.svg new file mode 100644 index 0000000..05ea69d --- /dev/null +++ b/backend/static/icons/bold/hourglass-simple-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hourglass-simple-medium-bold.svg b/backend/static/icons/bold/hourglass-simple-medium-bold.svg new file mode 100644 index 0000000..948d160 --- /dev/null +++ b/backend/static/icons/bold/hourglass-simple-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/house-bold.svg b/backend/static/icons/bold/house-bold.svg new file mode 100644 index 0000000..67ff74d --- /dev/null +++ b/backend/static/icons/bold/house-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/house-line-bold.svg b/backend/static/icons/bold/house-line-bold.svg new file mode 100644 index 0000000..7ecf65f --- /dev/null +++ b/backend/static/icons/bold/house-line-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/house-simple-bold.svg b/backend/static/icons/bold/house-simple-bold.svg new file mode 100644 index 0000000..dc9826c --- /dev/null +++ b/backend/static/icons/bold/house-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/hurricane-bold.svg b/backend/static/icons/bold/hurricane-bold.svg new file mode 100644 index 0000000..8f4bca2 --- /dev/null +++ b/backend/static/icons/bold/hurricane-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ice-cream-bold.svg b/backend/static/icons/bold/ice-cream-bold.svg new file mode 100644 index 0000000..45326f9 --- /dev/null +++ b/backend/static/icons/bold/ice-cream-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/identification-badge-bold.svg b/backend/static/icons/bold/identification-badge-bold.svg new file mode 100644 index 0000000..6212229 --- /dev/null +++ b/backend/static/icons/bold/identification-badge-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/identification-card-bold.svg b/backend/static/icons/bold/identification-card-bold.svg new file mode 100644 index 0000000..f949492 --- /dev/null +++ b/backend/static/icons/bold/identification-card-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/image-bold.svg b/backend/static/icons/bold/image-bold.svg new file mode 100644 index 0000000..2912e0c --- /dev/null +++ b/backend/static/icons/bold/image-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/image-broken-bold.svg b/backend/static/icons/bold/image-broken-bold.svg new file mode 100644 index 0000000..7996688 --- /dev/null +++ b/backend/static/icons/bold/image-broken-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/image-square-bold.svg b/backend/static/icons/bold/image-square-bold.svg new file mode 100644 index 0000000..3f0de86 --- /dev/null +++ b/backend/static/icons/bold/image-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/images-bold.svg b/backend/static/icons/bold/images-bold.svg new file mode 100644 index 0000000..561c314 --- /dev/null +++ b/backend/static/icons/bold/images-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/images-square-bold.svg b/backend/static/icons/bold/images-square-bold.svg new file mode 100644 index 0000000..b408877 --- /dev/null +++ b/backend/static/icons/bold/images-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/infinity-bold.svg b/backend/static/icons/bold/infinity-bold.svg new file mode 100644 index 0000000..310ef54 --- /dev/null +++ b/backend/static/icons/bold/infinity-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/info-bold.svg b/backend/static/icons/bold/info-bold.svg new file mode 100644 index 0000000..439c157 --- /dev/null +++ b/backend/static/icons/bold/info-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/instagram-logo-bold.svg b/backend/static/icons/bold/instagram-logo-bold.svg new file mode 100644 index 0000000..79c6d5f --- /dev/null +++ b/backend/static/icons/bold/instagram-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/intersect-bold.svg b/backend/static/icons/bold/intersect-bold.svg new file mode 100644 index 0000000..3ce8ad3 --- /dev/null +++ b/backend/static/icons/bold/intersect-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/intersect-square-bold.svg b/backend/static/icons/bold/intersect-square-bold.svg new file mode 100644 index 0000000..8f2318c --- /dev/null +++ b/backend/static/icons/bold/intersect-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/intersect-three-bold.svg b/backend/static/icons/bold/intersect-three-bold.svg new file mode 100644 index 0000000..4f32ca2 --- /dev/null +++ b/backend/static/icons/bold/intersect-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/intersection-bold.svg b/backend/static/icons/bold/intersection-bold.svg new file mode 100644 index 0000000..7aa47ba --- /dev/null +++ b/backend/static/icons/bold/intersection-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/invoice-bold.svg b/backend/static/icons/bold/invoice-bold.svg new file mode 100644 index 0000000..df4f52b --- /dev/null +++ b/backend/static/icons/bold/invoice-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/island-bold.svg b/backend/static/icons/bold/island-bold.svg new file mode 100644 index 0000000..0739248 --- /dev/null +++ b/backend/static/icons/bold/island-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/jar-bold.svg b/backend/static/icons/bold/jar-bold.svg new file mode 100644 index 0000000..49aadd6 --- /dev/null +++ b/backend/static/icons/bold/jar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/jar-label-bold.svg b/backend/static/icons/bold/jar-label-bold.svg new file mode 100644 index 0000000..bf5a0c6 --- /dev/null +++ b/backend/static/icons/bold/jar-label-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/jeep-bold.svg b/backend/static/icons/bold/jeep-bold.svg new file mode 100644 index 0000000..cac0603 --- /dev/null +++ b/backend/static/icons/bold/jeep-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/joystick-bold.svg b/backend/static/icons/bold/joystick-bold.svg new file mode 100644 index 0000000..9499aff --- /dev/null +++ b/backend/static/icons/bold/joystick-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/kanban-bold.svg b/backend/static/icons/bold/kanban-bold.svg new file mode 100644 index 0000000..e3fc7c1 --- /dev/null +++ b/backend/static/icons/bold/kanban-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/key-bold.svg b/backend/static/icons/bold/key-bold.svg new file mode 100644 index 0000000..839dab2 --- /dev/null +++ b/backend/static/icons/bold/key-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/key-return-bold.svg b/backend/static/icons/bold/key-return-bold.svg new file mode 100644 index 0000000..74d6d88 --- /dev/null +++ b/backend/static/icons/bold/key-return-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/keyboard-bold.svg b/backend/static/icons/bold/keyboard-bold.svg new file mode 100644 index 0000000..e0351b3 --- /dev/null +++ b/backend/static/icons/bold/keyboard-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/keyhole-bold.svg b/backend/static/icons/bold/keyhole-bold.svg new file mode 100644 index 0000000..fa1d131 --- /dev/null +++ b/backend/static/icons/bold/keyhole-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/knife-bold.svg b/backend/static/icons/bold/knife-bold.svg new file mode 100644 index 0000000..2d43589 --- /dev/null +++ b/backend/static/icons/bold/knife-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ladder-bold.svg b/backend/static/icons/bold/ladder-bold.svg new file mode 100644 index 0000000..577def2 --- /dev/null +++ b/backend/static/icons/bold/ladder-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ladder-simple-bold.svg b/backend/static/icons/bold/ladder-simple-bold.svg new file mode 100644 index 0000000..7884a7c --- /dev/null +++ b/backend/static/icons/bold/ladder-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lamp-bold.svg b/backend/static/icons/bold/lamp-bold.svg new file mode 100644 index 0000000..69d50ea --- /dev/null +++ b/backend/static/icons/bold/lamp-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lamp-pendant-bold.svg b/backend/static/icons/bold/lamp-pendant-bold.svg new file mode 100644 index 0000000..8828ebd --- /dev/null +++ b/backend/static/icons/bold/lamp-pendant-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/laptop-bold.svg b/backend/static/icons/bold/laptop-bold.svg new file mode 100644 index 0000000..bd1c814 --- /dev/null +++ b/backend/static/icons/bold/laptop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lasso-bold.svg b/backend/static/icons/bold/lasso-bold.svg new file mode 100644 index 0000000..c9bc4b7 --- /dev/null +++ b/backend/static/icons/bold/lasso-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lastfm-logo-bold.svg b/backend/static/icons/bold/lastfm-logo-bold.svg new file mode 100644 index 0000000..490cbc8 --- /dev/null +++ b/backend/static/icons/bold/lastfm-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/layout-bold.svg b/backend/static/icons/bold/layout-bold.svg new file mode 100644 index 0000000..9d22d03 --- /dev/null +++ b/backend/static/icons/bold/layout-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/leaf-bold.svg b/backend/static/icons/bold/leaf-bold.svg new file mode 100644 index 0000000..c524e3b --- /dev/null +++ b/backend/static/icons/bold/leaf-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lectern-bold.svg b/backend/static/icons/bold/lectern-bold.svg new file mode 100644 index 0000000..1df7199 --- /dev/null +++ b/backend/static/icons/bold/lectern-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lego-bold.svg b/backend/static/icons/bold/lego-bold.svg new file mode 100644 index 0000000..62ddac7 --- /dev/null +++ b/backend/static/icons/bold/lego-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lego-smiley-bold.svg b/backend/static/icons/bold/lego-smiley-bold.svg new file mode 100644 index 0000000..e4e5d77 --- /dev/null +++ b/backend/static/icons/bold/lego-smiley-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/less-than-bold.svg b/backend/static/icons/bold/less-than-bold.svg new file mode 100644 index 0000000..2220a59 --- /dev/null +++ b/backend/static/icons/bold/less-than-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/less-than-or-equal-bold.svg b/backend/static/icons/bold/less-than-or-equal-bold.svg new file mode 100644 index 0000000..84cb0e0 --- /dev/null +++ b/backend/static/icons/bold/less-than-or-equal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/letter-circle-h-bold.svg b/backend/static/icons/bold/letter-circle-h-bold.svg new file mode 100644 index 0000000..c4d01ab --- /dev/null +++ b/backend/static/icons/bold/letter-circle-h-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/letter-circle-p-bold.svg b/backend/static/icons/bold/letter-circle-p-bold.svg new file mode 100644 index 0000000..c379efe --- /dev/null +++ b/backend/static/icons/bold/letter-circle-p-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/letter-circle-v-bold.svg b/backend/static/icons/bold/letter-circle-v-bold.svg new file mode 100644 index 0000000..fd23051 --- /dev/null +++ b/backend/static/icons/bold/letter-circle-v-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lifebuoy-bold.svg b/backend/static/icons/bold/lifebuoy-bold.svg new file mode 100644 index 0000000..65dc9a9 --- /dev/null +++ b/backend/static/icons/bold/lifebuoy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lightbulb-bold.svg b/backend/static/icons/bold/lightbulb-bold.svg new file mode 100644 index 0000000..e78f265 --- /dev/null +++ b/backend/static/icons/bold/lightbulb-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lightbulb-filament-bold.svg b/backend/static/icons/bold/lightbulb-filament-bold.svg new file mode 100644 index 0000000..78ff25c --- /dev/null +++ b/backend/static/icons/bold/lightbulb-filament-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lighthouse-bold.svg b/backend/static/icons/bold/lighthouse-bold.svg new file mode 100644 index 0000000..3c1c994 --- /dev/null +++ b/backend/static/icons/bold/lighthouse-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lightning-a-bold.svg b/backend/static/icons/bold/lightning-a-bold.svg new file mode 100644 index 0000000..a70ea6e --- /dev/null +++ b/backend/static/icons/bold/lightning-a-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lightning-bold.svg b/backend/static/icons/bold/lightning-bold.svg new file mode 100644 index 0000000..ea8bc98 --- /dev/null +++ b/backend/static/icons/bold/lightning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lightning-slash-bold.svg b/backend/static/icons/bold/lightning-slash-bold.svg new file mode 100644 index 0000000..c1faf7a --- /dev/null +++ b/backend/static/icons/bold/lightning-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/line-segment-bold.svg b/backend/static/icons/bold/line-segment-bold.svg new file mode 100644 index 0000000..62e48ee --- /dev/null +++ b/backend/static/icons/bold/line-segment-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/line-segments-bold.svg b/backend/static/icons/bold/line-segments-bold.svg new file mode 100644 index 0000000..48cad9a --- /dev/null +++ b/backend/static/icons/bold/line-segments-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/line-vertical-bold.svg b/backend/static/icons/bold/line-vertical-bold.svg new file mode 100644 index 0000000..874236d --- /dev/null +++ b/backend/static/icons/bold/line-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/link-bold.svg b/backend/static/icons/bold/link-bold.svg new file mode 100644 index 0000000..96fd05c --- /dev/null +++ b/backend/static/icons/bold/link-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/link-break-bold.svg b/backend/static/icons/bold/link-break-bold.svg new file mode 100644 index 0000000..5379244 --- /dev/null +++ b/backend/static/icons/bold/link-break-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/link-simple-bold.svg b/backend/static/icons/bold/link-simple-bold.svg new file mode 100644 index 0000000..a275e63 --- /dev/null +++ b/backend/static/icons/bold/link-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/link-simple-break-bold.svg b/backend/static/icons/bold/link-simple-break-bold.svg new file mode 100644 index 0000000..dff8276 --- /dev/null +++ b/backend/static/icons/bold/link-simple-break-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/link-simple-horizontal-bold.svg b/backend/static/icons/bold/link-simple-horizontal-bold.svg new file mode 100644 index 0000000..f969efb --- /dev/null +++ b/backend/static/icons/bold/link-simple-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/link-simple-horizontal-break-bold.svg b/backend/static/icons/bold/link-simple-horizontal-break-bold.svg new file mode 100644 index 0000000..3595e3e --- /dev/null +++ b/backend/static/icons/bold/link-simple-horizontal-break-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/linkedin-logo-bold.svg b/backend/static/icons/bold/linkedin-logo-bold.svg new file mode 100644 index 0000000..84b52db --- /dev/null +++ b/backend/static/icons/bold/linkedin-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/linktree-logo-bold.svg b/backend/static/icons/bold/linktree-logo-bold.svg new file mode 100644 index 0000000..3ede4cc --- /dev/null +++ b/backend/static/icons/bold/linktree-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/linux-logo-bold.svg b/backend/static/icons/bold/linux-logo-bold.svg new file mode 100644 index 0000000..82d9150 --- /dev/null +++ b/backend/static/icons/bold/linux-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-bold.svg b/backend/static/icons/bold/list-bold.svg new file mode 100644 index 0000000..f06532a --- /dev/null +++ b/backend/static/icons/bold/list-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-bullets-bold.svg b/backend/static/icons/bold/list-bullets-bold.svg new file mode 100644 index 0000000..c2c56fd --- /dev/null +++ b/backend/static/icons/bold/list-bullets-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-checks-bold.svg b/backend/static/icons/bold/list-checks-bold.svg new file mode 100644 index 0000000..d4e9804 --- /dev/null +++ b/backend/static/icons/bold/list-checks-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-dashes-bold.svg b/backend/static/icons/bold/list-dashes-bold.svg new file mode 100644 index 0000000..455f330 --- /dev/null +++ b/backend/static/icons/bold/list-dashes-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-heart-bold.svg b/backend/static/icons/bold/list-heart-bold.svg new file mode 100644 index 0000000..41c7651 --- /dev/null +++ b/backend/static/icons/bold/list-heart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-magnifying-glass-bold.svg b/backend/static/icons/bold/list-magnifying-glass-bold.svg new file mode 100644 index 0000000..f3795ac --- /dev/null +++ b/backend/static/icons/bold/list-magnifying-glass-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-numbers-bold.svg b/backend/static/icons/bold/list-numbers-bold.svg new file mode 100644 index 0000000..51ba092 --- /dev/null +++ b/backend/static/icons/bold/list-numbers-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-plus-bold.svg b/backend/static/icons/bold/list-plus-bold.svg new file mode 100644 index 0000000..a86b516 --- /dev/null +++ b/backend/static/icons/bold/list-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/list-star-bold.svg b/backend/static/icons/bold/list-star-bold.svg new file mode 100644 index 0000000..aee4cfd --- /dev/null +++ b/backend/static/icons/bold/list-star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-bold.svg b/backend/static/icons/bold/lock-bold.svg new file mode 100644 index 0000000..a756ff3 --- /dev/null +++ b/backend/static/icons/bold/lock-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-key-bold.svg b/backend/static/icons/bold/lock-key-bold.svg new file mode 100644 index 0000000..beb0fbb --- /dev/null +++ b/backend/static/icons/bold/lock-key-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-key-open-bold.svg b/backend/static/icons/bold/lock-key-open-bold.svg new file mode 100644 index 0000000..4f4bb76 --- /dev/null +++ b/backend/static/icons/bold/lock-key-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-laminated-bold.svg b/backend/static/icons/bold/lock-laminated-bold.svg new file mode 100644 index 0000000..7a41edc --- /dev/null +++ b/backend/static/icons/bold/lock-laminated-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-laminated-open-bold.svg b/backend/static/icons/bold/lock-laminated-open-bold.svg new file mode 100644 index 0000000..c1eee3e --- /dev/null +++ b/backend/static/icons/bold/lock-laminated-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-open-bold.svg b/backend/static/icons/bold/lock-open-bold.svg new file mode 100644 index 0000000..686d5ce --- /dev/null +++ b/backend/static/icons/bold/lock-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-simple-bold.svg b/backend/static/icons/bold/lock-simple-bold.svg new file mode 100644 index 0000000..cfde104 --- /dev/null +++ b/backend/static/icons/bold/lock-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lock-simple-open-bold.svg b/backend/static/icons/bold/lock-simple-open-bold.svg new file mode 100644 index 0000000..527ccc3 --- /dev/null +++ b/backend/static/icons/bold/lock-simple-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/lockers-bold.svg b/backend/static/icons/bold/lockers-bold.svg new file mode 100644 index 0000000..0ad6dd3 --- /dev/null +++ b/backend/static/icons/bold/lockers-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/log-bold.svg b/backend/static/icons/bold/log-bold.svg new file mode 100644 index 0000000..d214293 --- /dev/null +++ b/backend/static/icons/bold/log-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/magic-wand-bold.svg b/backend/static/icons/bold/magic-wand-bold.svg new file mode 100644 index 0000000..51d0e28 --- /dev/null +++ b/backend/static/icons/bold/magic-wand-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/magnet-bold.svg b/backend/static/icons/bold/magnet-bold.svg new file mode 100644 index 0000000..815ef0d --- /dev/null +++ b/backend/static/icons/bold/magnet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/magnet-straight-bold.svg b/backend/static/icons/bold/magnet-straight-bold.svg new file mode 100644 index 0000000..80526e9 --- /dev/null +++ b/backend/static/icons/bold/magnet-straight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/magnifying-glass-bold.svg b/backend/static/icons/bold/magnifying-glass-bold.svg new file mode 100644 index 0000000..a5f2760 --- /dev/null +++ b/backend/static/icons/bold/magnifying-glass-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/magnifying-glass-minus-bold.svg b/backend/static/icons/bold/magnifying-glass-minus-bold.svg new file mode 100644 index 0000000..fe2f3f2 --- /dev/null +++ b/backend/static/icons/bold/magnifying-glass-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/magnifying-glass-plus-bold.svg b/backend/static/icons/bold/magnifying-glass-plus-bold.svg new file mode 100644 index 0000000..7cb3004 --- /dev/null +++ b/backend/static/icons/bold/magnifying-glass-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mailbox-bold.svg b/backend/static/icons/bold/mailbox-bold.svg new file mode 100644 index 0000000..dca16ce --- /dev/null +++ b/backend/static/icons/bold/mailbox-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-area-bold.svg b/backend/static/icons/bold/map-pin-area-bold.svg new file mode 100644 index 0000000..2c72bfc --- /dev/null +++ b/backend/static/icons/bold/map-pin-area-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-bold.svg b/backend/static/icons/bold/map-pin-bold.svg new file mode 100644 index 0000000..c6d7c36 --- /dev/null +++ b/backend/static/icons/bold/map-pin-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-line-bold.svg b/backend/static/icons/bold/map-pin-line-bold.svg new file mode 100644 index 0000000..ff95509 --- /dev/null +++ b/backend/static/icons/bold/map-pin-line-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-plus-bold.svg b/backend/static/icons/bold/map-pin-plus-bold.svg new file mode 100644 index 0000000..51dd607 --- /dev/null +++ b/backend/static/icons/bold/map-pin-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-simple-area-bold.svg b/backend/static/icons/bold/map-pin-simple-area-bold.svg new file mode 100644 index 0000000..240692c --- /dev/null +++ b/backend/static/icons/bold/map-pin-simple-area-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-simple-bold.svg b/backend/static/icons/bold/map-pin-simple-bold.svg new file mode 100644 index 0000000..4b3a2c4 --- /dev/null +++ b/backend/static/icons/bold/map-pin-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-pin-simple-line-bold.svg b/backend/static/icons/bold/map-pin-simple-line-bold.svg new file mode 100644 index 0000000..17fa686 --- /dev/null +++ b/backend/static/icons/bold/map-pin-simple-line-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/map-trifold-bold.svg b/backend/static/icons/bold/map-trifold-bold.svg new file mode 100644 index 0000000..d4a1b45 --- /dev/null +++ b/backend/static/icons/bold/map-trifold-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/markdown-logo-bold.svg b/backend/static/icons/bold/markdown-logo-bold.svg new file mode 100644 index 0000000..0cb34e0 --- /dev/null +++ b/backend/static/icons/bold/markdown-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/marker-circle-bold.svg b/backend/static/icons/bold/marker-circle-bold.svg new file mode 100644 index 0000000..75ac7ca --- /dev/null +++ b/backend/static/icons/bold/marker-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/martini-bold.svg b/backend/static/icons/bold/martini-bold.svg new file mode 100644 index 0000000..418671d --- /dev/null +++ b/backend/static/icons/bold/martini-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mask-happy-bold.svg b/backend/static/icons/bold/mask-happy-bold.svg new file mode 100644 index 0000000..258f4cd --- /dev/null +++ b/backend/static/icons/bold/mask-happy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mask-sad-bold.svg b/backend/static/icons/bold/mask-sad-bold.svg new file mode 100644 index 0000000..0bf7f82 --- /dev/null +++ b/backend/static/icons/bold/mask-sad-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mastodon-logo-bold.svg b/backend/static/icons/bold/mastodon-logo-bold.svg new file mode 100644 index 0000000..2d35e4a --- /dev/null +++ b/backend/static/icons/bold/mastodon-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/math-operations-bold.svg b/backend/static/icons/bold/math-operations-bold.svg new file mode 100644 index 0000000..a48a943 --- /dev/null +++ b/backend/static/icons/bold/math-operations-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/matrix-logo-bold.svg b/backend/static/icons/bold/matrix-logo-bold.svg new file mode 100644 index 0000000..fd851c7 --- /dev/null +++ b/backend/static/icons/bold/matrix-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/medal-bold.svg b/backend/static/icons/bold/medal-bold.svg new file mode 100644 index 0000000..6c5d28d --- /dev/null +++ b/backend/static/icons/bold/medal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/medal-military-bold.svg b/backend/static/icons/bold/medal-military-bold.svg new file mode 100644 index 0000000..c4b0a9f --- /dev/null +++ b/backend/static/icons/bold/medal-military-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/medium-logo-bold.svg b/backend/static/icons/bold/medium-logo-bold.svg new file mode 100644 index 0000000..a69e99d --- /dev/null +++ b/backend/static/icons/bold/medium-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/megaphone-bold.svg b/backend/static/icons/bold/megaphone-bold.svg new file mode 100644 index 0000000..2e2b08f --- /dev/null +++ b/backend/static/icons/bold/megaphone-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/megaphone-simple-bold.svg b/backend/static/icons/bold/megaphone-simple-bold.svg new file mode 100644 index 0000000..3d2274c --- /dev/null +++ b/backend/static/icons/bold/megaphone-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/member-of-bold.svg b/backend/static/icons/bold/member-of-bold.svg new file mode 100644 index 0000000..2eb339e --- /dev/null +++ b/backend/static/icons/bold/member-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/memory-bold.svg b/backend/static/icons/bold/memory-bold.svg new file mode 100644 index 0000000..870a78a --- /dev/null +++ b/backend/static/icons/bold/memory-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/messenger-logo-bold.svg b/backend/static/icons/bold/messenger-logo-bold.svg new file mode 100644 index 0000000..f72a33d --- /dev/null +++ b/backend/static/icons/bold/messenger-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/meta-logo-bold.svg b/backend/static/icons/bold/meta-logo-bold.svg new file mode 100644 index 0000000..7dac6e1 --- /dev/null +++ b/backend/static/icons/bold/meta-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/meteor-bold.svg b/backend/static/icons/bold/meteor-bold.svg new file mode 100644 index 0000000..117a941 --- /dev/null +++ b/backend/static/icons/bold/meteor-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/metronome-bold.svg b/backend/static/icons/bold/metronome-bold.svg new file mode 100644 index 0000000..9f2fd5c --- /dev/null +++ b/backend/static/icons/bold/metronome-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microphone-bold.svg b/backend/static/icons/bold/microphone-bold.svg new file mode 100644 index 0000000..c227918 --- /dev/null +++ b/backend/static/icons/bold/microphone-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microphone-slash-bold.svg b/backend/static/icons/bold/microphone-slash-bold.svg new file mode 100644 index 0000000..2f247cd --- /dev/null +++ b/backend/static/icons/bold/microphone-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microphone-stage-bold.svg b/backend/static/icons/bold/microphone-stage-bold.svg new file mode 100644 index 0000000..594eef7 --- /dev/null +++ b/backend/static/icons/bold/microphone-stage-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microscope-bold.svg b/backend/static/icons/bold/microscope-bold.svg new file mode 100644 index 0000000..fbc89f2 --- /dev/null +++ b/backend/static/icons/bold/microscope-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microsoft-excel-logo-bold.svg b/backend/static/icons/bold/microsoft-excel-logo-bold.svg new file mode 100644 index 0000000..8e9ce70 --- /dev/null +++ b/backend/static/icons/bold/microsoft-excel-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microsoft-outlook-logo-bold.svg b/backend/static/icons/bold/microsoft-outlook-logo-bold.svg new file mode 100644 index 0000000..600e808 --- /dev/null +++ b/backend/static/icons/bold/microsoft-outlook-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microsoft-powerpoint-logo-bold.svg b/backend/static/icons/bold/microsoft-powerpoint-logo-bold.svg new file mode 100644 index 0000000..7da0b0b --- /dev/null +++ b/backend/static/icons/bold/microsoft-powerpoint-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microsoft-teams-logo-bold.svg b/backend/static/icons/bold/microsoft-teams-logo-bold.svg new file mode 100644 index 0000000..1f6e6aa --- /dev/null +++ b/backend/static/icons/bold/microsoft-teams-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/microsoft-word-logo-bold.svg b/backend/static/icons/bold/microsoft-word-logo-bold.svg new file mode 100644 index 0000000..b43af70 --- /dev/null +++ b/backend/static/icons/bold/microsoft-word-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/minus-bold.svg b/backend/static/icons/bold/minus-bold.svg new file mode 100644 index 0000000..63082bc --- /dev/null +++ b/backend/static/icons/bold/minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/minus-circle-bold.svg b/backend/static/icons/bold/minus-circle-bold.svg new file mode 100644 index 0000000..f02bc69 --- /dev/null +++ b/backend/static/icons/bold/minus-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/minus-square-bold.svg b/backend/static/icons/bold/minus-square-bold.svg new file mode 100644 index 0000000..9b0bb74 --- /dev/null +++ b/backend/static/icons/bold/minus-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/money-bold.svg b/backend/static/icons/bold/money-bold.svg new file mode 100644 index 0000000..348ff1e --- /dev/null +++ b/backend/static/icons/bold/money-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/money-wavy-bold.svg b/backend/static/icons/bold/money-wavy-bold.svg new file mode 100644 index 0000000..ddf2557 --- /dev/null +++ b/backend/static/icons/bold/money-wavy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/monitor-arrow-up-bold.svg b/backend/static/icons/bold/monitor-arrow-up-bold.svg new file mode 100644 index 0000000..d1c2779 --- /dev/null +++ b/backend/static/icons/bold/monitor-arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/monitor-bold.svg b/backend/static/icons/bold/monitor-bold.svg new file mode 100644 index 0000000..ee9c51c --- /dev/null +++ b/backend/static/icons/bold/monitor-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/monitor-play-bold.svg b/backend/static/icons/bold/monitor-play-bold.svg new file mode 100644 index 0000000..1c4c2c0 --- /dev/null +++ b/backend/static/icons/bold/monitor-play-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/moon-bold.svg b/backend/static/icons/bold/moon-bold.svg new file mode 100644 index 0000000..6e8ee0a --- /dev/null +++ b/backend/static/icons/bold/moon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/moon-stars-bold.svg b/backend/static/icons/bold/moon-stars-bold.svg new file mode 100644 index 0000000..5d8cf3a --- /dev/null +++ b/backend/static/icons/bold/moon-stars-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/moped-bold.svg b/backend/static/icons/bold/moped-bold.svg new file mode 100644 index 0000000..83510da --- /dev/null +++ b/backend/static/icons/bold/moped-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/moped-front-bold.svg b/backend/static/icons/bold/moped-front-bold.svg new file mode 100644 index 0000000..a66aed4 --- /dev/null +++ b/backend/static/icons/bold/moped-front-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mosque-bold.svg b/backend/static/icons/bold/mosque-bold.svg new file mode 100644 index 0000000..6e29dcf --- /dev/null +++ b/backend/static/icons/bold/mosque-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/motorcycle-bold.svg b/backend/static/icons/bold/motorcycle-bold.svg new file mode 100644 index 0000000..92f215a --- /dev/null +++ b/backend/static/icons/bold/motorcycle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mountains-bold.svg b/backend/static/icons/bold/mountains-bold.svg new file mode 100644 index 0000000..a56451c --- /dev/null +++ b/backend/static/icons/bold/mountains-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mouse-bold.svg b/backend/static/icons/bold/mouse-bold.svg new file mode 100644 index 0000000..553c18a --- /dev/null +++ b/backend/static/icons/bold/mouse-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mouse-left-click-bold.svg b/backend/static/icons/bold/mouse-left-click-bold.svg new file mode 100644 index 0000000..074a8c1 --- /dev/null +++ b/backend/static/icons/bold/mouse-left-click-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mouse-middle-click-bold.svg b/backend/static/icons/bold/mouse-middle-click-bold.svg new file mode 100644 index 0000000..db85d68 --- /dev/null +++ b/backend/static/icons/bold/mouse-middle-click-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mouse-right-click-bold.svg b/backend/static/icons/bold/mouse-right-click-bold.svg new file mode 100644 index 0000000..03b883f --- /dev/null +++ b/backend/static/icons/bold/mouse-right-click-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mouse-scroll-bold.svg b/backend/static/icons/bold/mouse-scroll-bold.svg new file mode 100644 index 0000000..ea23697 --- /dev/null +++ b/backend/static/icons/bold/mouse-scroll-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/mouse-simple-bold.svg b/backend/static/icons/bold/mouse-simple-bold.svg new file mode 100644 index 0000000..e9ebe7a --- /dev/null +++ b/backend/static/icons/bold/mouse-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/music-note-bold.svg b/backend/static/icons/bold/music-note-bold.svg new file mode 100644 index 0000000..f86a3f6 --- /dev/null +++ b/backend/static/icons/bold/music-note-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/music-note-simple-bold.svg b/backend/static/icons/bold/music-note-simple-bold.svg new file mode 100644 index 0000000..6a55742 --- /dev/null +++ b/backend/static/icons/bold/music-note-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/music-notes-bold.svg b/backend/static/icons/bold/music-notes-bold.svg new file mode 100644 index 0000000..1608845 --- /dev/null +++ b/backend/static/icons/bold/music-notes-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/music-notes-minus-bold.svg b/backend/static/icons/bold/music-notes-minus-bold.svg new file mode 100644 index 0000000..26152fa --- /dev/null +++ b/backend/static/icons/bold/music-notes-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/music-notes-plus-bold.svg b/backend/static/icons/bold/music-notes-plus-bold.svg new file mode 100644 index 0000000..2c31a1d --- /dev/null +++ b/backend/static/icons/bold/music-notes-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/music-notes-simple-bold.svg b/backend/static/icons/bold/music-notes-simple-bold.svg new file mode 100644 index 0000000..005a6e4 --- /dev/null +++ b/backend/static/icons/bold/music-notes-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/navigation-arrow-bold.svg b/backend/static/icons/bold/navigation-arrow-bold.svg new file mode 100644 index 0000000..1425e11 --- /dev/null +++ b/backend/static/icons/bold/navigation-arrow-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/needle-bold.svg b/backend/static/icons/bold/needle-bold.svg new file mode 100644 index 0000000..10d7513 --- /dev/null +++ b/backend/static/icons/bold/needle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/network-bold.svg b/backend/static/icons/bold/network-bold.svg new file mode 100644 index 0000000..c1f06de --- /dev/null +++ b/backend/static/icons/bold/network-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/network-slash-bold.svg b/backend/static/icons/bold/network-slash-bold.svg new file mode 100644 index 0000000..66aa677 --- /dev/null +++ b/backend/static/icons/bold/network-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/network-x-bold.svg b/backend/static/icons/bold/network-x-bold.svg new file mode 100644 index 0000000..1f69cc8 --- /dev/null +++ b/backend/static/icons/bold/network-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/newspaper-bold.svg b/backend/static/icons/bold/newspaper-bold.svg new file mode 100644 index 0000000..3a1569e --- /dev/null +++ b/backend/static/icons/bold/newspaper-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/newspaper-clipping-bold.svg b/backend/static/icons/bold/newspaper-clipping-bold.svg new file mode 100644 index 0000000..008d522 --- /dev/null +++ b/backend/static/icons/bold/newspaper-clipping-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/not-equals-bold.svg b/backend/static/icons/bold/not-equals-bold.svg new file mode 100644 index 0000000..bc2d502 --- /dev/null +++ b/backend/static/icons/bold/not-equals-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/not-member-of-bold.svg b/backend/static/icons/bold/not-member-of-bold.svg new file mode 100644 index 0000000..9820d6e --- /dev/null +++ b/backend/static/icons/bold/not-member-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/not-subset-of-bold.svg b/backend/static/icons/bold/not-subset-of-bold.svg new file mode 100644 index 0000000..cd6eafb --- /dev/null +++ b/backend/static/icons/bold/not-subset-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/not-superset-of-bold.svg b/backend/static/icons/bold/not-superset-of-bold.svg new file mode 100644 index 0000000..58bd46f --- /dev/null +++ b/backend/static/icons/bold/not-superset-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/notches-bold.svg b/backend/static/icons/bold/notches-bold.svg new file mode 100644 index 0000000..86e8cef --- /dev/null +++ b/backend/static/icons/bold/notches-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/note-blank-bold.svg b/backend/static/icons/bold/note-blank-bold.svg new file mode 100644 index 0000000..86d131c --- /dev/null +++ b/backend/static/icons/bold/note-blank-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/note-bold.svg b/backend/static/icons/bold/note-bold.svg new file mode 100644 index 0000000..4c26643 --- /dev/null +++ b/backend/static/icons/bold/note-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/note-pencil-bold.svg b/backend/static/icons/bold/note-pencil-bold.svg new file mode 100644 index 0000000..bac4c65 --- /dev/null +++ b/backend/static/icons/bold/note-pencil-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/notebook-bold.svg b/backend/static/icons/bold/notebook-bold.svg new file mode 100644 index 0000000..a00ffd2 --- /dev/null +++ b/backend/static/icons/bold/notebook-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/notepad-bold.svg b/backend/static/icons/bold/notepad-bold.svg new file mode 100644 index 0000000..7943cd7 --- /dev/null +++ b/backend/static/icons/bold/notepad-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/notification-bold.svg b/backend/static/icons/bold/notification-bold.svg new file mode 100644 index 0000000..d419600 --- /dev/null +++ b/backend/static/icons/bold/notification-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/notion-logo-bold.svg b/backend/static/icons/bold/notion-logo-bold.svg new file mode 100644 index 0000000..79f0401 --- /dev/null +++ b/backend/static/icons/bold/notion-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/nuclear-plant-bold.svg b/backend/static/icons/bold/nuclear-plant-bold.svg new file mode 100644 index 0000000..c42509b --- /dev/null +++ b/backend/static/icons/bold/nuclear-plant-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-eight-bold.svg b/backend/static/icons/bold/number-circle-eight-bold.svg new file mode 100644 index 0000000..d9fa154 --- /dev/null +++ b/backend/static/icons/bold/number-circle-eight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-five-bold.svg b/backend/static/icons/bold/number-circle-five-bold.svg new file mode 100644 index 0000000..d25f212 --- /dev/null +++ b/backend/static/icons/bold/number-circle-five-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-four-bold.svg b/backend/static/icons/bold/number-circle-four-bold.svg new file mode 100644 index 0000000..d55598a --- /dev/null +++ b/backend/static/icons/bold/number-circle-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-nine-bold.svg b/backend/static/icons/bold/number-circle-nine-bold.svg new file mode 100644 index 0000000..e8df394 --- /dev/null +++ b/backend/static/icons/bold/number-circle-nine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-one-bold.svg b/backend/static/icons/bold/number-circle-one-bold.svg new file mode 100644 index 0000000..56b303d --- /dev/null +++ b/backend/static/icons/bold/number-circle-one-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-seven-bold.svg b/backend/static/icons/bold/number-circle-seven-bold.svg new file mode 100644 index 0000000..b019abe --- /dev/null +++ b/backend/static/icons/bold/number-circle-seven-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-six-bold.svg b/backend/static/icons/bold/number-circle-six-bold.svg new file mode 100644 index 0000000..89b9713 --- /dev/null +++ b/backend/static/icons/bold/number-circle-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-three-bold.svg b/backend/static/icons/bold/number-circle-three-bold.svg new file mode 100644 index 0000000..3767a05 --- /dev/null +++ b/backend/static/icons/bold/number-circle-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-two-bold.svg b/backend/static/icons/bold/number-circle-two-bold.svg new file mode 100644 index 0000000..94671ef --- /dev/null +++ b/backend/static/icons/bold/number-circle-two-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-circle-zero-bold.svg b/backend/static/icons/bold/number-circle-zero-bold.svg new file mode 100644 index 0000000..cde0000 --- /dev/null +++ b/backend/static/icons/bold/number-circle-zero-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-eight-bold.svg b/backend/static/icons/bold/number-eight-bold.svg new file mode 100644 index 0000000..f564476 --- /dev/null +++ b/backend/static/icons/bold/number-eight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-five-bold.svg b/backend/static/icons/bold/number-five-bold.svg new file mode 100644 index 0000000..09b4125 --- /dev/null +++ b/backend/static/icons/bold/number-five-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-four-bold.svg b/backend/static/icons/bold/number-four-bold.svg new file mode 100644 index 0000000..04e844c --- /dev/null +++ b/backend/static/icons/bold/number-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-nine-bold.svg b/backend/static/icons/bold/number-nine-bold.svg new file mode 100644 index 0000000..316f30a --- /dev/null +++ b/backend/static/icons/bold/number-nine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-one-bold.svg b/backend/static/icons/bold/number-one-bold.svg new file mode 100644 index 0000000..250e01d --- /dev/null +++ b/backend/static/icons/bold/number-one-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-seven-bold.svg b/backend/static/icons/bold/number-seven-bold.svg new file mode 100644 index 0000000..bc9fec0 --- /dev/null +++ b/backend/static/icons/bold/number-seven-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-six-bold.svg b/backend/static/icons/bold/number-six-bold.svg new file mode 100644 index 0000000..6ea05a7 --- /dev/null +++ b/backend/static/icons/bold/number-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-eight-bold.svg b/backend/static/icons/bold/number-square-eight-bold.svg new file mode 100644 index 0000000..557e827 --- /dev/null +++ b/backend/static/icons/bold/number-square-eight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-five-bold.svg b/backend/static/icons/bold/number-square-five-bold.svg new file mode 100644 index 0000000..1cc77db --- /dev/null +++ b/backend/static/icons/bold/number-square-five-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-four-bold.svg b/backend/static/icons/bold/number-square-four-bold.svg new file mode 100644 index 0000000..bd65d26 --- /dev/null +++ b/backend/static/icons/bold/number-square-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-nine-bold.svg b/backend/static/icons/bold/number-square-nine-bold.svg new file mode 100644 index 0000000..51c19a1 --- /dev/null +++ b/backend/static/icons/bold/number-square-nine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-one-bold.svg b/backend/static/icons/bold/number-square-one-bold.svg new file mode 100644 index 0000000..cf54e2c --- /dev/null +++ b/backend/static/icons/bold/number-square-one-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-seven-bold.svg b/backend/static/icons/bold/number-square-seven-bold.svg new file mode 100644 index 0000000..4d3dfc6 --- /dev/null +++ b/backend/static/icons/bold/number-square-seven-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-six-bold.svg b/backend/static/icons/bold/number-square-six-bold.svg new file mode 100644 index 0000000..52df7bc --- /dev/null +++ b/backend/static/icons/bold/number-square-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-three-bold.svg b/backend/static/icons/bold/number-square-three-bold.svg new file mode 100644 index 0000000..6815fe3 --- /dev/null +++ b/backend/static/icons/bold/number-square-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-two-bold.svg b/backend/static/icons/bold/number-square-two-bold.svg new file mode 100644 index 0000000..4f02022 --- /dev/null +++ b/backend/static/icons/bold/number-square-two-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-square-zero-bold.svg b/backend/static/icons/bold/number-square-zero-bold.svg new file mode 100644 index 0000000..4553605 --- /dev/null +++ b/backend/static/icons/bold/number-square-zero-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-three-bold.svg b/backend/static/icons/bold/number-three-bold.svg new file mode 100644 index 0000000..0f51428 --- /dev/null +++ b/backend/static/icons/bold/number-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-two-bold.svg b/backend/static/icons/bold/number-two-bold.svg new file mode 100644 index 0000000..8fe5663 --- /dev/null +++ b/backend/static/icons/bold/number-two-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/number-zero-bold.svg b/backend/static/icons/bold/number-zero-bold.svg new file mode 100644 index 0000000..6a935a5 --- /dev/null +++ b/backend/static/icons/bold/number-zero-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/numpad-bold.svg b/backend/static/icons/bold/numpad-bold.svg new file mode 100644 index 0000000..52e12ab --- /dev/null +++ b/backend/static/icons/bold/numpad-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/nut-bold.svg b/backend/static/icons/bold/nut-bold.svg new file mode 100644 index 0000000..1390337 --- /dev/null +++ b/backend/static/icons/bold/nut-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ny-times-logo-bold.svg b/backend/static/icons/bold/ny-times-logo-bold.svg new file mode 100644 index 0000000..af7da9b --- /dev/null +++ b/backend/static/icons/bold/ny-times-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/octagon-bold.svg b/backend/static/icons/bold/octagon-bold.svg new file mode 100644 index 0000000..0c690c8 --- /dev/null +++ b/backend/static/icons/bold/octagon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/office-chair-bold.svg b/backend/static/icons/bold/office-chair-bold.svg new file mode 100644 index 0000000..7cf8e5f --- /dev/null +++ b/backend/static/icons/bold/office-chair-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/onigiri-bold.svg b/backend/static/icons/bold/onigiri-bold.svg new file mode 100644 index 0000000..1017112 --- /dev/null +++ b/backend/static/icons/bold/onigiri-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/open-ai-logo-bold.svg b/backend/static/icons/bold/open-ai-logo-bold.svg new file mode 100644 index 0000000..0d32295 --- /dev/null +++ b/backend/static/icons/bold/open-ai-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/option-bold.svg b/backend/static/icons/bold/option-bold.svg new file mode 100644 index 0000000..0076f3a --- /dev/null +++ b/backend/static/icons/bold/option-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/orange-bold.svg b/backend/static/icons/bold/orange-bold.svg new file mode 100644 index 0000000..bbf530d --- /dev/null +++ b/backend/static/icons/bold/orange-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/orange-slice-bold.svg b/backend/static/icons/bold/orange-slice-bold.svg new file mode 100644 index 0000000..51a514b --- /dev/null +++ b/backend/static/icons/bold/orange-slice-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/oven-bold.svg b/backend/static/icons/bold/oven-bold.svg new file mode 100644 index 0000000..d4d04f0 --- /dev/null +++ b/backend/static/icons/bold/oven-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/package-bold.svg b/backend/static/icons/bold/package-bold.svg new file mode 100644 index 0000000..bff7a59 --- /dev/null +++ b/backend/static/icons/bold/package-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paint-brush-bold.svg b/backend/static/icons/bold/paint-brush-bold.svg new file mode 100644 index 0000000..e823939 --- /dev/null +++ b/backend/static/icons/bold/paint-brush-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paint-brush-broad-bold.svg b/backend/static/icons/bold/paint-brush-broad-bold.svg new file mode 100644 index 0000000..99b0d53 --- /dev/null +++ b/backend/static/icons/bold/paint-brush-broad-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paint-brush-household-bold.svg b/backend/static/icons/bold/paint-brush-household-bold.svg new file mode 100644 index 0000000..45114f5 --- /dev/null +++ b/backend/static/icons/bold/paint-brush-household-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paint-bucket-bold.svg b/backend/static/icons/bold/paint-bucket-bold.svg new file mode 100644 index 0000000..699028f --- /dev/null +++ b/backend/static/icons/bold/paint-bucket-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paint-roller-bold.svg b/backend/static/icons/bold/paint-roller-bold.svg new file mode 100644 index 0000000..54a03e2 --- /dev/null +++ b/backend/static/icons/bold/paint-roller-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/palette-bold.svg b/backend/static/icons/bold/palette-bold.svg new file mode 100644 index 0000000..a18b546 --- /dev/null +++ b/backend/static/icons/bold/palette-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/panorama-bold.svg b/backend/static/icons/bold/panorama-bold.svg new file mode 100644 index 0000000..dc58305 --- /dev/null +++ b/backend/static/icons/bold/panorama-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pants-bold.svg b/backend/static/icons/bold/pants-bold.svg new file mode 100644 index 0000000..4935ab8 --- /dev/null +++ b/backend/static/icons/bold/pants-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paper-plane-bold.svg b/backend/static/icons/bold/paper-plane-bold.svg new file mode 100644 index 0000000..f72a324 --- /dev/null +++ b/backend/static/icons/bold/paper-plane-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paper-plane-right-bold.svg b/backend/static/icons/bold/paper-plane-right-bold.svg new file mode 100644 index 0000000..e8e49dc --- /dev/null +++ b/backend/static/icons/bold/paper-plane-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paper-plane-tilt-bold.svg b/backend/static/icons/bold/paper-plane-tilt-bold.svg new file mode 100644 index 0000000..137727a --- /dev/null +++ b/backend/static/icons/bold/paper-plane-tilt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paperclip-bold.svg b/backend/static/icons/bold/paperclip-bold.svg new file mode 100644 index 0000000..28b884e --- /dev/null +++ b/backend/static/icons/bold/paperclip-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paperclip-horizontal-bold.svg b/backend/static/icons/bold/paperclip-horizontal-bold.svg new file mode 100644 index 0000000..d2b27d5 --- /dev/null +++ b/backend/static/icons/bold/paperclip-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/parachute-bold.svg b/backend/static/icons/bold/parachute-bold.svg new file mode 100644 index 0000000..c506035 --- /dev/null +++ b/backend/static/icons/bold/parachute-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paragraph-bold.svg b/backend/static/icons/bold/paragraph-bold.svg new file mode 100644 index 0000000..fa5fd7a --- /dev/null +++ b/backend/static/icons/bold/paragraph-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/parallelogram-bold.svg b/backend/static/icons/bold/parallelogram-bold.svg new file mode 100644 index 0000000..51687f0 --- /dev/null +++ b/backend/static/icons/bold/parallelogram-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/park-bold.svg b/backend/static/icons/bold/park-bold.svg new file mode 100644 index 0000000..cdc1b30 --- /dev/null +++ b/backend/static/icons/bold/park-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/password-bold.svg b/backend/static/icons/bold/password-bold.svg new file mode 100644 index 0000000..8c03797 --- /dev/null +++ b/backend/static/icons/bold/password-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/path-bold.svg b/backend/static/icons/bold/path-bold.svg new file mode 100644 index 0000000..f8e7fbd --- /dev/null +++ b/backend/static/icons/bold/path-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/patreon-logo-bold.svg b/backend/static/icons/bold/patreon-logo-bold.svg new file mode 100644 index 0000000..0383055 --- /dev/null +++ b/backend/static/icons/bold/patreon-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pause-bold.svg b/backend/static/icons/bold/pause-bold.svg new file mode 100644 index 0000000..ba2efe1 --- /dev/null +++ b/backend/static/icons/bold/pause-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pause-circle-bold.svg b/backend/static/icons/bold/pause-circle-bold.svg new file mode 100644 index 0000000..dc74efb --- /dev/null +++ b/backend/static/icons/bold/pause-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paw-print-bold.svg b/backend/static/icons/bold/paw-print-bold.svg new file mode 100644 index 0000000..c6a29a3 --- /dev/null +++ b/backend/static/icons/bold/paw-print-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/paypal-logo-bold.svg b/backend/static/icons/bold/paypal-logo-bold.svg new file mode 100644 index 0000000..95147a2 --- /dev/null +++ b/backend/static/icons/bold/paypal-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/peace-bold.svg b/backend/static/icons/bold/peace-bold.svg new file mode 100644 index 0000000..1e3e340 --- /dev/null +++ b/backend/static/icons/bold/peace-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pen-bold.svg b/backend/static/icons/bold/pen-bold.svg new file mode 100644 index 0000000..4f7bcfd --- /dev/null +++ b/backend/static/icons/bold/pen-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pen-nib-bold.svg b/backend/static/icons/bold/pen-nib-bold.svg new file mode 100644 index 0000000..9f44e6b --- /dev/null +++ b/backend/static/icons/bold/pen-nib-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pen-nib-straight-bold.svg b/backend/static/icons/bold/pen-nib-straight-bold.svg new file mode 100644 index 0000000..8f642e4 --- /dev/null +++ b/backend/static/icons/bold/pen-nib-straight-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-bold.svg b/backend/static/icons/bold/pencil-bold.svg new file mode 100644 index 0000000..70b4a32 --- /dev/null +++ b/backend/static/icons/bold/pencil-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-circle-bold.svg b/backend/static/icons/bold/pencil-circle-bold.svg new file mode 100644 index 0000000..0c3418a --- /dev/null +++ b/backend/static/icons/bold/pencil-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-line-bold.svg b/backend/static/icons/bold/pencil-line-bold.svg new file mode 100644 index 0000000..674d477 --- /dev/null +++ b/backend/static/icons/bold/pencil-line-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-ruler-bold.svg b/backend/static/icons/bold/pencil-ruler-bold.svg new file mode 100644 index 0000000..b8537fc --- /dev/null +++ b/backend/static/icons/bold/pencil-ruler-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-simple-bold.svg b/backend/static/icons/bold/pencil-simple-bold.svg new file mode 100644 index 0000000..b37b023 --- /dev/null +++ b/backend/static/icons/bold/pencil-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-simple-line-bold.svg b/backend/static/icons/bold/pencil-simple-line-bold.svg new file mode 100644 index 0000000..8dfdc98 --- /dev/null +++ b/backend/static/icons/bold/pencil-simple-line-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-simple-slash-bold.svg b/backend/static/icons/bold/pencil-simple-slash-bold.svg new file mode 100644 index 0000000..d871496 --- /dev/null +++ b/backend/static/icons/bold/pencil-simple-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pencil-slash-bold.svg b/backend/static/icons/bold/pencil-slash-bold.svg new file mode 100644 index 0000000..7bbb26f --- /dev/null +++ b/backend/static/icons/bold/pencil-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pentagon-bold.svg b/backend/static/icons/bold/pentagon-bold.svg new file mode 100644 index 0000000..c93c05b --- /dev/null +++ b/backend/static/icons/bold/pentagon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pentagram-bold.svg b/backend/static/icons/bold/pentagram-bold.svg new file mode 100644 index 0000000..4ab98b9 --- /dev/null +++ b/backend/static/icons/bold/pentagram-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pepper-bold.svg b/backend/static/icons/bold/pepper-bold.svg new file mode 100644 index 0000000..c5b7517 --- /dev/null +++ b/backend/static/icons/bold/pepper-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/percent-bold.svg b/backend/static/icons/bold/percent-bold.svg new file mode 100644 index 0000000..cae5d6c --- /dev/null +++ b/backend/static/icons/bold/percent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-arms-spread-bold.svg b/backend/static/icons/bold/person-arms-spread-bold.svg new file mode 100644 index 0000000..8855774 --- /dev/null +++ b/backend/static/icons/bold/person-arms-spread-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-bold.svg b/backend/static/icons/bold/person-bold.svg new file mode 100644 index 0000000..d2f8343 --- /dev/null +++ b/backend/static/icons/bold/person-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-bike-bold.svg b/backend/static/icons/bold/person-simple-bike-bold.svg new file mode 100644 index 0000000..fd3e6e1 --- /dev/null +++ b/backend/static/icons/bold/person-simple-bike-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-bold.svg b/backend/static/icons/bold/person-simple-bold.svg new file mode 100644 index 0000000..d70c9ef --- /dev/null +++ b/backend/static/icons/bold/person-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-circle-bold.svg b/backend/static/icons/bold/person-simple-circle-bold.svg new file mode 100644 index 0000000..84d4783 --- /dev/null +++ b/backend/static/icons/bold/person-simple-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-hike-bold.svg b/backend/static/icons/bold/person-simple-hike-bold.svg new file mode 100644 index 0000000..b7f9188 --- /dev/null +++ b/backend/static/icons/bold/person-simple-hike-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-run-bold.svg b/backend/static/icons/bold/person-simple-run-bold.svg new file mode 100644 index 0000000..40974fe --- /dev/null +++ b/backend/static/icons/bold/person-simple-run-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-ski-bold.svg b/backend/static/icons/bold/person-simple-ski-bold.svg new file mode 100644 index 0000000..610f6ce --- /dev/null +++ b/backend/static/icons/bold/person-simple-ski-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-snowboard-bold.svg b/backend/static/icons/bold/person-simple-snowboard-bold.svg new file mode 100644 index 0000000..8fb53f2 --- /dev/null +++ b/backend/static/icons/bold/person-simple-snowboard-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-swim-bold.svg b/backend/static/icons/bold/person-simple-swim-bold.svg new file mode 100644 index 0000000..33734d2 --- /dev/null +++ b/backend/static/icons/bold/person-simple-swim-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-tai-chi-bold.svg b/backend/static/icons/bold/person-simple-tai-chi-bold.svg new file mode 100644 index 0000000..22a930c --- /dev/null +++ b/backend/static/icons/bold/person-simple-tai-chi-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-throw-bold.svg b/backend/static/icons/bold/person-simple-throw-bold.svg new file mode 100644 index 0000000..1ccd46b --- /dev/null +++ b/backend/static/icons/bold/person-simple-throw-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/person-simple-walk-bold.svg b/backend/static/icons/bold/person-simple-walk-bold.svg new file mode 100644 index 0000000..ec86bb5 --- /dev/null +++ b/backend/static/icons/bold/person-simple-walk-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/perspective-bold.svg b/backend/static/icons/bold/perspective-bold.svg new file mode 100644 index 0000000..3a80bad --- /dev/null +++ b/backend/static/icons/bold/perspective-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-bold.svg b/backend/static/icons/bold/phone-bold.svg new file mode 100644 index 0000000..fb64f8a --- /dev/null +++ b/backend/static/icons/bold/phone-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-call-bold.svg b/backend/static/icons/bold/phone-call-bold.svg new file mode 100644 index 0000000..29e6c63 --- /dev/null +++ b/backend/static/icons/bold/phone-call-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-disconnect-bold.svg b/backend/static/icons/bold/phone-disconnect-bold.svg new file mode 100644 index 0000000..41cba51 --- /dev/null +++ b/backend/static/icons/bold/phone-disconnect-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-incoming-bold.svg b/backend/static/icons/bold/phone-incoming-bold.svg new file mode 100644 index 0000000..81a5363 --- /dev/null +++ b/backend/static/icons/bold/phone-incoming-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-list-bold.svg b/backend/static/icons/bold/phone-list-bold.svg new file mode 100644 index 0000000..abd5252 --- /dev/null +++ b/backend/static/icons/bold/phone-list-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-outgoing-bold.svg b/backend/static/icons/bold/phone-outgoing-bold.svg new file mode 100644 index 0000000..298e31e --- /dev/null +++ b/backend/static/icons/bold/phone-outgoing-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-pause-bold.svg b/backend/static/icons/bold/phone-pause-bold.svg new file mode 100644 index 0000000..cf77c46 --- /dev/null +++ b/backend/static/icons/bold/phone-pause-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-plus-bold.svg b/backend/static/icons/bold/phone-plus-bold.svg new file mode 100644 index 0000000..9f5c0d4 --- /dev/null +++ b/backend/static/icons/bold/phone-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-slash-bold.svg b/backend/static/icons/bold/phone-slash-bold.svg new file mode 100644 index 0000000..988f6cc --- /dev/null +++ b/backend/static/icons/bold/phone-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-transfer-bold.svg b/backend/static/icons/bold/phone-transfer-bold.svg new file mode 100644 index 0000000..52b333a --- /dev/null +++ b/backend/static/icons/bold/phone-transfer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phone-x-bold.svg b/backend/static/icons/bold/phone-x-bold.svg new file mode 100644 index 0000000..548ca65 --- /dev/null +++ b/backend/static/icons/bold/phone-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/phosphor-logo-bold.svg b/backend/static/icons/bold/phosphor-logo-bold.svg new file mode 100644 index 0000000..46c2da2 --- /dev/null +++ b/backend/static/icons/bold/phosphor-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pi-bold.svg b/backend/static/icons/bold/pi-bold.svg new file mode 100644 index 0000000..e3318e4 --- /dev/null +++ b/backend/static/icons/bold/pi-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/piano-keys-bold.svg b/backend/static/icons/bold/piano-keys-bold.svg new file mode 100644 index 0000000..ef6c76a --- /dev/null +++ b/backend/static/icons/bold/piano-keys-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/picnic-table-bold.svg b/backend/static/icons/bold/picnic-table-bold.svg new file mode 100644 index 0000000..f7b44a5 --- /dev/null +++ b/backend/static/icons/bold/picnic-table-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/picture-in-picture-bold.svg b/backend/static/icons/bold/picture-in-picture-bold.svg new file mode 100644 index 0000000..3bc578b --- /dev/null +++ b/backend/static/icons/bold/picture-in-picture-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/piggy-bank-bold.svg b/backend/static/icons/bold/piggy-bank-bold.svg new file mode 100644 index 0000000..dda65ba --- /dev/null +++ b/backend/static/icons/bold/piggy-bank-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pill-bold.svg b/backend/static/icons/bold/pill-bold.svg new file mode 100644 index 0000000..0f3a4d7 --- /dev/null +++ b/backend/static/icons/bold/pill-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ping-pong-bold.svg b/backend/static/icons/bold/ping-pong-bold.svg new file mode 100644 index 0000000..c274948 --- /dev/null +++ b/backend/static/icons/bold/ping-pong-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pint-glass-bold.svg b/backend/static/icons/bold/pint-glass-bold.svg new file mode 100644 index 0000000..cdd3444 --- /dev/null +++ b/backend/static/icons/bold/pint-glass-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pinterest-logo-bold.svg b/backend/static/icons/bold/pinterest-logo-bold.svg new file mode 100644 index 0000000..da5cd83 --- /dev/null +++ b/backend/static/icons/bold/pinterest-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pinwheel-bold.svg b/backend/static/icons/bold/pinwheel-bold.svg new file mode 100644 index 0000000..b052c0f --- /dev/null +++ b/backend/static/icons/bold/pinwheel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pipe-bold.svg b/backend/static/icons/bold/pipe-bold.svg new file mode 100644 index 0000000..9be65ec --- /dev/null +++ b/backend/static/icons/bold/pipe-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pipe-wrench-bold.svg b/backend/static/icons/bold/pipe-wrench-bold.svg new file mode 100644 index 0000000..4ac5088 --- /dev/null +++ b/backend/static/icons/bold/pipe-wrench-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pix-logo-bold.svg b/backend/static/icons/bold/pix-logo-bold.svg new file mode 100644 index 0000000..66d483d --- /dev/null +++ b/backend/static/icons/bold/pix-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pizza-bold.svg b/backend/static/icons/bold/pizza-bold.svg new file mode 100644 index 0000000..a8d0a6e --- /dev/null +++ b/backend/static/icons/bold/pizza-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/placeholder-bold.svg b/backend/static/icons/bold/placeholder-bold.svg new file mode 100644 index 0000000..34e5f15 --- /dev/null +++ b/backend/static/icons/bold/placeholder-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/planet-bold.svg b/backend/static/icons/bold/planet-bold.svg new file mode 100644 index 0000000..2f71abe --- /dev/null +++ b/backend/static/icons/bold/planet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plant-bold.svg b/backend/static/icons/bold/plant-bold.svg new file mode 100644 index 0000000..7afe039 --- /dev/null +++ b/backend/static/icons/bold/plant-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/play-bold.svg b/backend/static/icons/bold/play-bold.svg new file mode 100644 index 0000000..769e448 --- /dev/null +++ b/backend/static/icons/bold/play-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/play-circle-bold.svg b/backend/static/icons/bold/play-circle-bold.svg new file mode 100644 index 0000000..4c52f8c --- /dev/null +++ b/backend/static/icons/bold/play-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/play-pause-bold.svg b/backend/static/icons/bold/play-pause-bold.svg new file mode 100644 index 0000000..3b5e803 --- /dev/null +++ b/backend/static/icons/bold/play-pause-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/playlist-bold.svg b/backend/static/icons/bold/playlist-bold.svg new file mode 100644 index 0000000..3dcfa4d --- /dev/null +++ b/backend/static/icons/bold/playlist-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plug-bold.svg b/backend/static/icons/bold/plug-bold.svg new file mode 100644 index 0000000..5f25565 --- /dev/null +++ b/backend/static/icons/bold/plug-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plug-charging-bold.svg b/backend/static/icons/bold/plug-charging-bold.svg new file mode 100644 index 0000000..a033bd8 --- /dev/null +++ b/backend/static/icons/bold/plug-charging-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plugs-bold.svg b/backend/static/icons/bold/plugs-bold.svg new file mode 100644 index 0000000..8f08c18 --- /dev/null +++ b/backend/static/icons/bold/plugs-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plugs-connected-bold.svg b/backend/static/icons/bold/plugs-connected-bold.svg new file mode 100644 index 0000000..c9cadc3 --- /dev/null +++ b/backend/static/icons/bold/plugs-connected-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plus-bold.svg b/backend/static/icons/bold/plus-bold.svg new file mode 100644 index 0000000..26c923a --- /dev/null +++ b/backend/static/icons/bold/plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plus-circle-bold.svg b/backend/static/icons/bold/plus-circle-bold.svg new file mode 100644 index 0000000..42aea97 --- /dev/null +++ b/backend/static/icons/bold/plus-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plus-minus-bold.svg b/backend/static/icons/bold/plus-minus-bold.svg new file mode 100644 index 0000000..bf599b3 --- /dev/null +++ b/backend/static/icons/bold/plus-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/plus-square-bold.svg b/backend/static/icons/bold/plus-square-bold.svg new file mode 100644 index 0000000..c57b209 --- /dev/null +++ b/backend/static/icons/bold/plus-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/poker-chip-bold.svg b/backend/static/icons/bold/poker-chip-bold.svg new file mode 100644 index 0000000..43250b3 --- /dev/null +++ b/backend/static/icons/bold/poker-chip-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/police-car-bold.svg b/backend/static/icons/bold/police-car-bold.svg new file mode 100644 index 0000000..dd4bc01 --- /dev/null +++ b/backend/static/icons/bold/police-car-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/polygon-bold.svg b/backend/static/icons/bold/polygon-bold.svg new file mode 100644 index 0000000..62621f8 --- /dev/null +++ b/backend/static/icons/bold/polygon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/popcorn-bold.svg b/backend/static/icons/bold/popcorn-bold.svg new file mode 100644 index 0000000..1f735f4 --- /dev/null +++ b/backend/static/icons/bold/popcorn-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/popsicle-bold.svg b/backend/static/icons/bold/popsicle-bold.svg new file mode 100644 index 0000000..0a6eb1f --- /dev/null +++ b/backend/static/icons/bold/popsicle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/potted-plant-bold.svg b/backend/static/icons/bold/potted-plant-bold.svg new file mode 100644 index 0000000..af6e537 --- /dev/null +++ b/backend/static/icons/bold/potted-plant-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/power-bold.svg b/backend/static/icons/bold/power-bold.svg new file mode 100644 index 0000000..0ab3f78 --- /dev/null +++ b/backend/static/icons/bold/power-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/prescription-bold.svg b/backend/static/icons/bold/prescription-bold.svg new file mode 100644 index 0000000..dcb450a --- /dev/null +++ b/backend/static/icons/bold/prescription-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/presentation-bold.svg b/backend/static/icons/bold/presentation-bold.svg new file mode 100644 index 0000000..ef2d4d3 --- /dev/null +++ b/backend/static/icons/bold/presentation-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/presentation-chart-bold.svg b/backend/static/icons/bold/presentation-chart-bold.svg new file mode 100644 index 0000000..cbe5bae --- /dev/null +++ b/backend/static/icons/bold/presentation-chart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/printer-bold.svg b/backend/static/icons/bold/printer-bold.svg new file mode 100644 index 0000000..4e6bb4c --- /dev/null +++ b/backend/static/icons/bold/printer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/prohibit-bold.svg b/backend/static/icons/bold/prohibit-bold.svg new file mode 100644 index 0000000..1828d11 --- /dev/null +++ b/backend/static/icons/bold/prohibit-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/prohibit-inset-bold.svg b/backend/static/icons/bold/prohibit-inset-bold.svg new file mode 100644 index 0000000..90ac0d5 --- /dev/null +++ b/backend/static/icons/bold/prohibit-inset-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/projector-screen-bold.svg b/backend/static/icons/bold/projector-screen-bold.svg new file mode 100644 index 0000000..69392e7 --- /dev/null +++ b/backend/static/icons/bold/projector-screen-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/projector-screen-chart-bold.svg b/backend/static/icons/bold/projector-screen-chart-bold.svg new file mode 100644 index 0000000..557d0d3 --- /dev/null +++ b/backend/static/icons/bold/projector-screen-chart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/pulse-bold.svg b/backend/static/icons/bold/pulse-bold.svg new file mode 100644 index 0000000..6abad67 --- /dev/null +++ b/backend/static/icons/bold/pulse-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/push-pin-bold.svg b/backend/static/icons/bold/push-pin-bold.svg new file mode 100644 index 0000000..e3d6fd2 --- /dev/null +++ b/backend/static/icons/bold/push-pin-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/push-pin-simple-bold.svg b/backend/static/icons/bold/push-pin-simple-bold.svg new file mode 100644 index 0000000..c2eb895 --- /dev/null +++ b/backend/static/icons/bold/push-pin-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/push-pin-simple-slash-bold.svg b/backend/static/icons/bold/push-pin-simple-slash-bold.svg new file mode 100644 index 0000000..349ed37 --- /dev/null +++ b/backend/static/icons/bold/push-pin-simple-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/push-pin-slash-bold.svg b/backend/static/icons/bold/push-pin-slash-bold.svg new file mode 100644 index 0000000..67806a4 --- /dev/null +++ b/backend/static/icons/bold/push-pin-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/puzzle-piece-bold.svg b/backend/static/icons/bold/puzzle-piece-bold.svg new file mode 100644 index 0000000..abc233f --- /dev/null +++ b/backend/static/icons/bold/puzzle-piece-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/qr-code-bold.svg b/backend/static/icons/bold/qr-code-bold.svg new file mode 100644 index 0000000..2e9d276 --- /dev/null +++ b/backend/static/icons/bold/qr-code-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/question-bold.svg b/backend/static/icons/bold/question-bold.svg new file mode 100644 index 0000000..e9cb226 --- /dev/null +++ b/backend/static/icons/bold/question-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/question-mark-bold.svg b/backend/static/icons/bold/question-mark-bold.svg new file mode 100644 index 0000000..9b31f2e --- /dev/null +++ b/backend/static/icons/bold/question-mark-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/queue-bold.svg b/backend/static/icons/bold/queue-bold.svg new file mode 100644 index 0000000..b70bc10 --- /dev/null +++ b/backend/static/icons/bold/queue-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/quotes-bold.svg b/backend/static/icons/bold/quotes-bold.svg new file mode 100644 index 0000000..e7156db --- /dev/null +++ b/backend/static/icons/bold/quotes-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rabbit-bold.svg b/backend/static/icons/bold/rabbit-bold.svg new file mode 100644 index 0000000..34933de --- /dev/null +++ b/backend/static/icons/bold/rabbit-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/racquet-bold.svg b/backend/static/icons/bold/racquet-bold.svg new file mode 100644 index 0000000..4fb9570 --- /dev/null +++ b/backend/static/icons/bold/racquet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/radical-bold.svg b/backend/static/icons/bold/radical-bold.svg new file mode 100644 index 0000000..9414264 --- /dev/null +++ b/backend/static/icons/bold/radical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/radio-bold.svg b/backend/static/icons/bold/radio-bold.svg new file mode 100644 index 0000000..56de06a --- /dev/null +++ b/backend/static/icons/bold/radio-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/radio-button-bold.svg b/backend/static/icons/bold/radio-button-bold.svg new file mode 100644 index 0000000..1ea0e2c --- /dev/null +++ b/backend/static/icons/bold/radio-button-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/radioactive-bold.svg b/backend/static/icons/bold/radioactive-bold.svg new file mode 100644 index 0000000..2eaff21 --- /dev/null +++ b/backend/static/icons/bold/radioactive-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rainbow-bold.svg b/backend/static/icons/bold/rainbow-bold.svg new file mode 100644 index 0000000..fcb8345 --- /dev/null +++ b/backend/static/icons/bold/rainbow-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rainbow-cloud-bold.svg b/backend/static/icons/bold/rainbow-cloud-bold.svg new file mode 100644 index 0000000..2046189 --- /dev/null +++ b/backend/static/icons/bold/rainbow-cloud-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ranking-bold.svg b/backend/static/icons/bold/ranking-bold.svg new file mode 100644 index 0000000..ed3f19e --- /dev/null +++ b/backend/static/icons/bold/ranking-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/read-cv-logo-bold.svg b/backend/static/icons/bold/read-cv-logo-bold.svg new file mode 100644 index 0000000..f031b7b --- /dev/null +++ b/backend/static/icons/bold/read-cv-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/receipt-bold.svg b/backend/static/icons/bold/receipt-bold.svg new file mode 100644 index 0000000..da3ed0c --- /dev/null +++ b/backend/static/icons/bold/receipt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/receipt-x-bold.svg b/backend/static/icons/bold/receipt-x-bold.svg new file mode 100644 index 0000000..8dcef8b --- /dev/null +++ b/backend/static/icons/bold/receipt-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/record-bold.svg b/backend/static/icons/bold/record-bold.svg new file mode 100644 index 0000000..26f9740 --- /dev/null +++ b/backend/static/icons/bold/record-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rectangle-bold.svg b/backend/static/icons/bold/rectangle-bold.svg new file mode 100644 index 0000000..f07b4ef --- /dev/null +++ b/backend/static/icons/bold/rectangle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rectangle-dashed-bold.svg b/backend/static/icons/bold/rectangle-dashed-bold.svg new file mode 100644 index 0000000..e1d2ffa --- /dev/null +++ b/backend/static/icons/bold/rectangle-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/recycle-bold.svg b/backend/static/icons/bold/recycle-bold.svg new file mode 100644 index 0000000..25aa39b --- /dev/null +++ b/backend/static/icons/bold/recycle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/reddit-logo-bold.svg b/backend/static/icons/bold/reddit-logo-bold.svg new file mode 100644 index 0000000..9fe7f1c --- /dev/null +++ b/backend/static/icons/bold/reddit-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/repeat-bold.svg b/backend/static/icons/bold/repeat-bold.svg new file mode 100644 index 0000000..a16bb66 --- /dev/null +++ b/backend/static/icons/bold/repeat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/repeat-once-bold.svg b/backend/static/icons/bold/repeat-once-bold.svg new file mode 100644 index 0000000..ffe251c --- /dev/null +++ b/backend/static/icons/bold/repeat-once-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/replit-logo-bold.svg b/backend/static/icons/bold/replit-logo-bold.svg new file mode 100644 index 0000000..ddf3d7c --- /dev/null +++ b/backend/static/icons/bold/replit-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/resize-bold.svg b/backend/static/icons/bold/resize-bold.svg new file mode 100644 index 0000000..0254cb4 --- /dev/null +++ b/backend/static/icons/bold/resize-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rewind-bold.svg b/backend/static/icons/bold/rewind-bold.svg new file mode 100644 index 0000000..dc70e5f --- /dev/null +++ b/backend/static/icons/bold/rewind-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rewind-circle-bold.svg b/backend/static/icons/bold/rewind-circle-bold.svg new file mode 100644 index 0000000..0d40a09 --- /dev/null +++ b/backend/static/icons/bold/rewind-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/road-horizon-bold.svg b/backend/static/icons/bold/road-horizon-bold.svg new file mode 100644 index 0000000..880f822 --- /dev/null +++ b/backend/static/icons/bold/road-horizon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/robot-bold.svg b/backend/static/icons/bold/robot-bold.svg new file mode 100644 index 0000000..3a51601 --- /dev/null +++ b/backend/static/icons/bold/robot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rocket-bold.svg b/backend/static/icons/bold/rocket-bold.svg new file mode 100644 index 0000000..ee0ce11 --- /dev/null +++ b/backend/static/icons/bold/rocket-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rocket-launch-bold.svg b/backend/static/icons/bold/rocket-launch-bold.svg new file mode 100644 index 0000000..56f313f --- /dev/null +++ b/backend/static/icons/bold/rocket-launch-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rows-bold.svg b/backend/static/icons/bold/rows-bold.svg new file mode 100644 index 0000000..548d723 --- /dev/null +++ b/backend/static/icons/bold/rows-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rows-plus-bottom-bold.svg b/backend/static/icons/bold/rows-plus-bottom-bold.svg new file mode 100644 index 0000000..83aa1e4 --- /dev/null +++ b/backend/static/icons/bold/rows-plus-bottom-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rows-plus-top-bold.svg b/backend/static/icons/bold/rows-plus-top-bold.svg new file mode 100644 index 0000000..b558497 --- /dev/null +++ b/backend/static/icons/bold/rows-plus-top-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rss-bold.svg b/backend/static/icons/bold/rss-bold.svg new file mode 100644 index 0000000..0418040 --- /dev/null +++ b/backend/static/icons/bold/rss-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rss-simple-bold.svg b/backend/static/icons/bold/rss-simple-bold.svg new file mode 100644 index 0000000..df15720 --- /dev/null +++ b/backend/static/icons/bold/rss-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/rug-bold.svg b/backend/static/icons/bold/rug-bold.svg new file mode 100644 index 0000000..5d27796 --- /dev/null +++ b/backend/static/icons/bold/rug-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ruler-bold.svg b/backend/static/icons/bold/ruler-bold.svg new file mode 100644 index 0000000..af723e2 --- /dev/null +++ b/backend/static/icons/bold/ruler-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sailboat-bold.svg b/backend/static/icons/bold/sailboat-bold.svg new file mode 100644 index 0000000..5b144f2 --- /dev/null +++ b/backend/static/icons/bold/sailboat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scales-bold.svg b/backend/static/icons/bold/scales-bold.svg new file mode 100644 index 0000000..1a98a2c --- /dev/null +++ b/backend/static/icons/bold/scales-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scan-bold.svg b/backend/static/icons/bold/scan-bold.svg new file mode 100644 index 0000000..70d37b0 --- /dev/null +++ b/backend/static/icons/bold/scan-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scan-smiley-bold.svg b/backend/static/icons/bold/scan-smiley-bold.svg new file mode 100644 index 0000000..385cfb1 --- /dev/null +++ b/backend/static/icons/bold/scan-smiley-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scissors-bold.svg b/backend/static/icons/bold/scissors-bold.svg new file mode 100644 index 0000000..c72715c --- /dev/null +++ b/backend/static/icons/bold/scissors-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scooter-bold.svg b/backend/static/icons/bold/scooter-bold.svg new file mode 100644 index 0000000..4d6de45 --- /dev/null +++ b/backend/static/icons/bold/scooter-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/screencast-bold.svg b/backend/static/icons/bold/screencast-bold.svg new file mode 100644 index 0000000..7a0981c --- /dev/null +++ b/backend/static/icons/bold/screencast-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/screwdriver-bold.svg b/backend/static/icons/bold/screwdriver-bold.svg new file mode 100644 index 0000000..e5cfc5f --- /dev/null +++ b/backend/static/icons/bold/screwdriver-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scribble-bold.svg b/backend/static/icons/bold/scribble-bold.svg new file mode 100644 index 0000000..5b708a2 --- /dev/null +++ b/backend/static/icons/bold/scribble-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scribble-loop-bold.svg b/backend/static/icons/bold/scribble-loop-bold.svg new file mode 100644 index 0000000..bd369f8 --- /dev/null +++ b/backend/static/icons/bold/scribble-loop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/scroll-bold.svg b/backend/static/icons/bold/scroll-bold.svg new file mode 100644 index 0000000..abb1981 --- /dev/null +++ b/backend/static/icons/bold/scroll-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seal-bold.svg b/backend/static/icons/bold/seal-bold.svg new file mode 100644 index 0000000..a369a9d --- /dev/null +++ b/backend/static/icons/bold/seal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seal-check-bold.svg b/backend/static/icons/bold/seal-check-bold.svg new file mode 100644 index 0000000..077061e --- /dev/null +++ b/backend/static/icons/bold/seal-check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seal-percent-bold.svg b/backend/static/icons/bold/seal-percent-bold.svg new file mode 100644 index 0000000..f3eb956 --- /dev/null +++ b/backend/static/icons/bold/seal-percent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seal-question-bold.svg b/backend/static/icons/bold/seal-question-bold.svg new file mode 100644 index 0000000..43bf60a --- /dev/null +++ b/backend/static/icons/bold/seal-question-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seal-warning-bold.svg b/backend/static/icons/bold/seal-warning-bold.svg new file mode 100644 index 0000000..e2ac9a5 --- /dev/null +++ b/backend/static/icons/bold/seal-warning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seat-bold.svg b/backend/static/icons/bold/seat-bold.svg new file mode 100644 index 0000000..4de5fbc --- /dev/null +++ b/backend/static/icons/bold/seat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/seatbelt-bold.svg b/backend/static/icons/bold/seatbelt-bold.svg new file mode 100644 index 0000000..92656e8 --- /dev/null +++ b/backend/static/icons/bold/seatbelt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/security-camera-bold.svg b/backend/static/icons/bold/security-camera-bold.svg new file mode 100644 index 0000000..a16f09c --- /dev/null +++ b/backend/static/icons/bold/security-camera-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-all-bold.svg b/backend/static/icons/bold/selection-all-bold.svg new file mode 100644 index 0000000..00de97d --- /dev/null +++ b/backend/static/icons/bold/selection-all-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-background-bold.svg b/backend/static/icons/bold/selection-background-bold.svg new file mode 100644 index 0000000..efe964e --- /dev/null +++ b/backend/static/icons/bold/selection-background-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-bold.svg b/backend/static/icons/bold/selection-bold.svg new file mode 100644 index 0000000..1c6dcc9 --- /dev/null +++ b/backend/static/icons/bold/selection-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-foreground-bold.svg b/backend/static/icons/bold/selection-foreground-bold.svg new file mode 100644 index 0000000..6195024 --- /dev/null +++ b/backend/static/icons/bold/selection-foreground-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-inverse-bold.svg b/backend/static/icons/bold/selection-inverse-bold.svg new file mode 100644 index 0000000..e763f70 --- /dev/null +++ b/backend/static/icons/bold/selection-inverse-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-plus-bold.svg b/backend/static/icons/bold/selection-plus-bold.svg new file mode 100644 index 0000000..32d3f5a --- /dev/null +++ b/backend/static/icons/bold/selection-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/selection-slash-bold.svg b/backend/static/icons/bold/selection-slash-bold.svg new file mode 100644 index 0000000..b746be5 --- /dev/null +++ b/backend/static/icons/bold/selection-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shapes-bold.svg b/backend/static/icons/bold/shapes-bold.svg new file mode 100644 index 0000000..fa84cc3 --- /dev/null +++ b/backend/static/icons/bold/shapes-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/share-bold.svg b/backend/static/icons/bold/share-bold.svg new file mode 100644 index 0000000..aff479d --- /dev/null +++ b/backend/static/icons/bold/share-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/share-fat-bold.svg b/backend/static/icons/bold/share-fat-bold.svg new file mode 100644 index 0000000..51acb49 --- /dev/null +++ b/backend/static/icons/bold/share-fat-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/share-network-bold.svg b/backend/static/icons/bold/share-network-bold.svg new file mode 100644 index 0000000..f85a591 --- /dev/null +++ b/backend/static/icons/bold/share-network-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-bold.svg b/backend/static/icons/bold/shield-bold.svg new file mode 100644 index 0000000..a8e1010 --- /dev/null +++ b/backend/static/icons/bold/shield-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-check-bold.svg b/backend/static/icons/bold/shield-check-bold.svg new file mode 100644 index 0000000..3fa15c5 --- /dev/null +++ b/backend/static/icons/bold/shield-check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-checkered-bold.svg b/backend/static/icons/bold/shield-checkered-bold.svg new file mode 100644 index 0000000..0979c55 --- /dev/null +++ b/backend/static/icons/bold/shield-checkered-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-chevron-bold.svg b/backend/static/icons/bold/shield-chevron-bold.svg new file mode 100644 index 0000000..65e0b43 --- /dev/null +++ b/backend/static/icons/bold/shield-chevron-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-plus-bold.svg b/backend/static/icons/bold/shield-plus-bold.svg new file mode 100644 index 0000000..852b2b8 --- /dev/null +++ b/backend/static/icons/bold/shield-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-slash-bold.svg b/backend/static/icons/bold/shield-slash-bold.svg new file mode 100644 index 0000000..441b3f6 --- /dev/null +++ b/backend/static/icons/bold/shield-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-star-bold.svg b/backend/static/icons/bold/shield-star-bold.svg new file mode 100644 index 0000000..4f0d3d6 --- /dev/null +++ b/backend/static/icons/bold/shield-star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shield-warning-bold.svg b/backend/static/icons/bold/shield-warning-bold.svg new file mode 100644 index 0000000..51e6eeb --- /dev/null +++ b/backend/static/icons/bold/shield-warning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shipping-container-bold.svg b/backend/static/icons/bold/shipping-container-bold.svg new file mode 100644 index 0000000..e7bb8e5 --- /dev/null +++ b/backend/static/icons/bold/shipping-container-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shirt-folded-bold.svg b/backend/static/icons/bold/shirt-folded-bold.svg new file mode 100644 index 0000000..f0868c7 --- /dev/null +++ b/backend/static/icons/bold/shirt-folded-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shooting-star-bold.svg b/backend/static/icons/bold/shooting-star-bold.svg new file mode 100644 index 0000000..a6bbe5a --- /dev/null +++ b/backend/static/icons/bold/shooting-star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shopping-bag-bold.svg b/backend/static/icons/bold/shopping-bag-bold.svg new file mode 100644 index 0000000..61cc987 --- /dev/null +++ b/backend/static/icons/bold/shopping-bag-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shopping-bag-open-bold.svg b/backend/static/icons/bold/shopping-bag-open-bold.svg new file mode 100644 index 0000000..7e283c7 --- /dev/null +++ b/backend/static/icons/bold/shopping-bag-open-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shopping-cart-bold.svg b/backend/static/icons/bold/shopping-cart-bold.svg new file mode 100644 index 0000000..1b3c838 --- /dev/null +++ b/backend/static/icons/bold/shopping-cart-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shopping-cart-simple-bold.svg b/backend/static/icons/bold/shopping-cart-simple-bold.svg new file mode 100644 index 0000000..b5f6b86 --- /dev/null +++ b/backend/static/icons/bold/shopping-cart-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shovel-bold.svg b/backend/static/icons/bold/shovel-bold.svg new file mode 100644 index 0000000..97660e2 --- /dev/null +++ b/backend/static/icons/bold/shovel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shower-bold.svg b/backend/static/icons/bold/shower-bold.svg new file mode 100644 index 0000000..ae6ac1c --- /dev/null +++ b/backend/static/icons/bold/shower-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shrimp-bold.svg b/backend/static/icons/bold/shrimp-bold.svg new file mode 100644 index 0000000..a768659 --- /dev/null +++ b/backend/static/icons/bold/shrimp-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shuffle-angular-bold.svg b/backend/static/icons/bold/shuffle-angular-bold.svg new file mode 100644 index 0000000..806b2ca --- /dev/null +++ b/backend/static/icons/bold/shuffle-angular-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shuffle-bold.svg b/backend/static/icons/bold/shuffle-bold.svg new file mode 100644 index 0000000..82b9e34 --- /dev/null +++ b/backend/static/icons/bold/shuffle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/shuffle-simple-bold.svg b/backend/static/icons/bold/shuffle-simple-bold.svg new file mode 100644 index 0000000..3b2a4b0 --- /dev/null +++ b/backend/static/icons/bold/shuffle-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sidebar-bold.svg b/backend/static/icons/bold/sidebar-bold.svg new file mode 100644 index 0000000..634cc1b --- /dev/null +++ b/backend/static/icons/bold/sidebar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sidebar-simple-bold.svg b/backend/static/icons/bold/sidebar-simple-bold.svg new file mode 100644 index 0000000..1e2f5f8 --- /dev/null +++ b/backend/static/icons/bold/sidebar-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sigma-bold.svg b/backend/static/icons/bold/sigma-bold.svg new file mode 100644 index 0000000..7ddd202 --- /dev/null +++ b/backend/static/icons/bold/sigma-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sign-in-bold.svg b/backend/static/icons/bold/sign-in-bold.svg new file mode 100644 index 0000000..945f964 --- /dev/null +++ b/backend/static/icons/bold/sign-in-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sign-out-bold.svg b/backend/static/icons/bold/sign-out-bold.svg new file mode 100644 index 0000000..04e85e4 --- /dev/null +++ b/backend/static/icons/bold/sign-out-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/signature-bold.svg b/backend/static/icons/bold/signature-bold.svg new file mode 100644 index 0000000..dab83c3 --- /dev/null +++ b/backend/static/icons/bold/signature-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/signpost-bold.svg b/backend/static/icons/bold/signpost-bold.svg new file mode 100644 index 0000000..b9e1e36 --- /dev/null +++ b/backend/static/icons/bold/signpost-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sim-card-bold.svg b/backend/static/icons/bold/sim-card-bold.svg new file mode 100644 index 0000000..c6bacc7 --- /dev/null +++ b/backend/static/icons/bold/sim-card-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/siren-bold.svg b/backend/static/icons/bold/siren-bold.svg new file mode 100644 index 0000000..b90f7c8 --- /dev/null +++ b/backend/static/icons/bold/siren-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sketch-logo-bold.svg b/backend/static/icons/bold/sketch-logo-bold.svg new file mode 100644 index 0000000..7350bdb --- /dev/null +++ b/backend/static/icons/bold/sketch-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/skip-back-bold.svg b/backend/static/icons/bold/skip-back-bold.svg new file mode 100644 index 0000000..4186222 --- /dev/null +++ b/backend/static/icons/bold/skip-back-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/skip-back-circle-bold.svg b/backend/static/icons/bold/skip-back-circle-bold.svg new file mode 100644 index 0000000..75afcdf --- /dev/null +++ b/backend/static/icons/bold/skip-back-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/skip-forward-bold.svg b/backend/static/icons/bold/skip-forward-bold.svg new file mode 100644 index 0000000..ca4d7ff --- /dev/null +++ b/backend/static/icons/bold/skip-forward-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/skip-forward-circle-bold.svg b/backend/static/icons/bold/skip-forward-circle-bold.svg new file mode 100644 index 0000000..aad4fa7 --- /dev/null +++ b/backend/static/icons/bold/skip-forward-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/skull-bold.svg b/backend/static/icons/bold/skull-bold.svg new file mode 100644 index 0000000..c611be7 --- /dev/null +++ b/backend/static/icons/bold/skull-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/skype-logo-bold.svg b/backend/static/icons/bold/skype-logo-bold.svg new file mode 100644 index 0000000..57e7c54 --- /dev/null +++ b/backend/static/icons/bold/skype-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/slack-logo-bold.svg b/backend/static/icons/bold/slack-logo-bold.svg new file mode 100644 index 0000000..52170d9 --- /dev/null +++ b/backend/static/icons/bold/slack-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sliders-bold.svg b/backend/static/icons/bold/sliders-bold.svg new file mode 100644 index 0000000..627c37b --- /dev/null +++ b/backend/static/icons/bold/sliders-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sliders-horizontal-bold.svg b/backend/static/icons/bold/sliders-horizontal-bold.svg new file mode 100644 index 0000000..188c389 --- /dev/null +++ b/backend/static/icons/bold/sliders-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/slideshow-bold.svg b/backend/static/icons/bold/slideshow-bold.svg new file mode 100644 index 0000000..a923de0 --- /dev/null +++ b/backend/static/icons/bold/slideshow-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-angry-bold.svg b/backend/static/icons/bold/smiley-angry-bold.svg new file mode 100644 index 0000000..d79c7cf --- /dev/null +++ b/backend/static/icons/bold/smiley-angry-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-blank-bold.svg b/backend/static/icons/bold/smiley-blank-bold.svg new file mode 100644 index 0000000..ea10c1b --- /dev/null +++ b/backend/static/icons/bold/smiley-blank-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-bold.svg b/backend/static/icons/bold/smiley-bold.svg new file mode 100644 index 0000000..29cf464 --- /dev/null +++ b/backend/static/icons/bold/smiley-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-meh-bold.svg b/backend/static/icons/bold/smiley-meh-bold.svg new file mode 100644 index 0000000..e711a87 --- /dev/null +++ b/backend/static/icons/bold/smiley-meh-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-melting-bold.svg b/backend/static/icons/bold/smiley-melting-bold.svg new file mode 100644 index 0000000..69f16a3 --- /dev/null +++ b/backend/static/icons/bold/smiley-melting-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-nervous-bold.svg b/backend/static/icons/bold/smiley-nervous-bold.svg new file mode 100644 index 0000000..146176a --- /dev/null +++ b/backend/static/icons/bold/smiley-nervous-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-sad-bold.svg b/backend/static/icons/bold/smiley-sad-bold.svg new file mode 100644 index 0000000..f9a8438 --- /dev/null +++ b/backend/static/icons/bold/smiley-sad-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-sticker-bold.svg b/backend/static/icons/bold/smiley-sticker-bold.svg new file mode 100644 index 0000000..3fb6802 --- /dev/null +++ b/backend/static/icons/bold/smiley-sticker-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-wink-bold.svg b/backend/static/icons/bold/smiley-wink-bold.svg new file mode 100644 index 0000000..6673ed0 --- /dev/null +++ b/backend/static/icons/bold/smiley-wink-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/smiley-x-eyes-bold.svg b/backend/static/icons/bold/smiley-x-eyes-bold.svg new file mode 100644 index 0000000..b4e7a41 --- /dev/null +++ b/backend/static/icons/bold/smiley-x-eyes-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/snapchat-logo-bold.svg b/backend/static/icons/bold/snapchat-logo-bold.svg new file mode 100644 index 0000000..7feaf6a --- /dev/null +++ b/backend/static/icons/bold/snapchat-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sneaker-bold.svg b/backend/static/icons/bold/sneaker-bold.svg new file mode 100644 index 0000000..0c974b4 --- /dev/null +++ b/backend/static/icons/bold/sneaker-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sneaker-move-bold.svg b/backend/static/icons/bold/sneaker-move-bold.svg new file mode 100644 index 0000000..9746ee4 --- /dev/null +++ b/backend/static/icons/bold/sneaker-move-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/snowflake-bold.svg b/backend/static/icons/bold/snowflake-bold.svg new file mode 100644 index 0000000..0c9a48b --- /dev/null +++ b/backend/static/icons/bold/snowflake-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/soccer-ball-bold.svg b/backend/static/icons/bold/soccer-ball-bold.svg new file mode 100644 index 0000000..a632ef6 --- /dev/null +++ b/backend/static/icons/bold/soccer-ball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sock-bold.svg b/backend/static/icons/bold/sock-bold.svg new file mode 100644 index 0000000..069b19f --- /dev/null +++ b/backend/static/icons/bold/sock-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/solar-panel-bold.svg b/backend/static/icons/bold/solar-panel-bold.svg new file mode 100644 index 0000000..a4f1bb1 --- /dev/null +++ b/backend/static/icons/bold/solar-panel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/solar-roof-bold.svg b/backend/static/icons/bold/solar-roof-bold.svg new file mode 100644 index 0000000..8006eca --- /dev/null +++ b/backend/static/icons/bold/solar-roof-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sort-ascending-bold.svg b/backend/static/icons/bold/sort-ascending-bold.svg new file mode 100644 index 0000000..a40d8c9 --- /dev/null +++ b/backend/static/icons/bold/sort-ascending-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sort-descending-bold.svg b/backend/static/icons/bold/sort-descending-bold.svg new file mode 100644 index 0000000..299a734 --- /dev/null +++ b/backend/static/icons/bold/sort-descending-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/soundcloud-logo-bold.svg b/backend/static/icons/bold/soundcloud-logo-bold.svg new file mode 100644 index 0000000..6850299 --- /dev/null +++ b/backend/static/icons/bold/soundcloud-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spade-bold.svg b/backend/static/icons/bold/spade-bold.svg new file mode 100644 index 0000000..b8d877b --- /dev/null +++ b/backend/static/icons/bold/spade-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sparkle-bold.svg b/backend/static/icons/bold/sparkle-bold.svg new file mode 100644 index 0000000..1e55d99 --- /dev/null +++ b/backend/static/icons/bold/sparkle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-hifi-bold.svg b/backend/static/icons/bold/speaker-hifi-bold.svg new file mode 100644 index 0000000..5d1990f --- /dev/null +++ b/backend/static/icons/bold/speaker-hifi-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-high-bold.svg b/backend/static/icons/bold/speaker-high-bold.svg new file mode 100644 index 0000000..3ec529e --- /dev/null +++ b/backend/static/icons/bold/speaker-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-low-bold.svg b/backend/static/icons/bold/speaker-low-bold.svg new file mode 100644 index 0000000..f3f10ec --- /dev/null +++ b/backend/static/icons/bold/speaker-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-none-bold.svg b/backend/static/icons/bold/speaker-none-bold.svg new file mode 100644 index 0000000..cc5cd59 --- /dev/null +++ b/backend/static/icons/bold/speaker-none-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-simple-high-bold.svg b/backend/static/icons/bold/speaker-simple-high-bold.svg new file mode 100644 index 0000000..44eead8 --- /dev/null +++ b/backend/static/icons/bold/speaker-simple-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-simple-low-bold.svg b/backend/static/icons/bold/speaker-simple-low-bold.svg new file mode 100644 index 0000000..f37f31d --- /dev/null +++ b/backend/static/icons/bold/speaker-simple-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-simple-none-bold.svg b/backend/static/icons/bold/speaker-simple-none-bold.svg new file mode 100644 index 0000000..d2d67c3 --- /dev/null +++ b/backend/static/icons/bold/speaker-simple-none-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-simple-slash-bold.svg b/backend/static/icons/bold/speaker-simple-slash-bold.svg new file mode 100644 index 0000000..0e732e0 --- /dev/null +++ b/backend/static/icons/bold/speaker-simple-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-simple-x-bold.svg b/backend/static/icons/bold/speaker-simple-x-bold.svg new file mode 100644 index 0000000..de18333 --- /dev/null +++ b/backend/static/icons/bold/speaker-simple-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-slash-bold.svg b/backend/static/icons/bold/speaker-slash-bold.svg new file mode 100644 index 0000000..82c2a38 --- /dev/null +++ b/backend/static/icons/bold/speaker-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speaker-x-bold.svg b/backend/static/icons/bold/speaker-x-bold.svg new file mode 100644 index 0000000..629338e --- /dev/null +++ b/backend/static/icons/bold/speaker-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/speedometer-bold.svg b/backend/static/icons/bold/speedometer-bold.svg new file mode 100644 index 0000000..5c4414b --- /dev/null +++ b/backend/static/icons/bold/speedometer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sphere-bold.svg b/backend/static/icons/bold/sphere-bold.svg new file mode 100644 index 0000000..acc5a6f --- /dev/null +++ b/backend/static/icons/bold/sphere-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spinner-ball-bold.svg b/backend/static/icons/bold/spinner-ball-bold.svg new file mode 100644 index 0000000..15f46e2 --- /dev/null +++ b/backend/static/icons/bold/spinner-ball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spinner-bold.svg b/backend/static/icons/bold/spinner-bold.svg new file mode 100644 index 0000000..1f05346 --- /dev/null +++ b/backend/static/icons/bold/spinner-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spinner-gap-bold.svg b/backend/static/icons/bold/spinner-gap-bold.svg new file mode 100644 index 0000000..cdfbe12 --- /dev/null +++ b/backend/static/icons/bold/spinner-gap-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spiral-bold.svg b/backend/static/icons/bold/spiral-bold.svg new file mode 100644 index 0000000..8846b70 --- /dev/null +++ b/backend/static/icons/bold/spiral-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/split-horizontal-bold.svg b/backend/static/icons/bold/split-horizontal-bold.svg new file mode 100644 index 0000000..6dab9e4 --- /dev/null +++ b/backend/static/icons/bold/split-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/split-vertical-bold.svg b/backend/static/icons/bold/split-vertical-bold.svg new file mode 100644 index 0000000..9f498bd --- /dev/null +++ b/backend/static/icons/bold/split-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spotify-logo-bold.svg b/backend/static/icons/bold/spotify-logo-bold.svg new file mode 100644 index 0000000..d47cbeb --- /dev/null +++ b/backend/static/icons/bold/spotify-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/spray-bottle-bold.svg b/backend/static/icons/bold/spray-bottle-bold.svg new file mode 100644 index 0000000..70ab9f8 --- /dev/null +++ b/backend/static/icons/bold/spray-bottle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/square-bold.svg b/backend/static/icons/bold/square-bold.svg new file mode 100644 index 0000000..e4adcfd --- /dev/null +++ b/backend/static/icons/bold/square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/square-half-bold.svg b/backend/static/icons/bold/square-half-bold.svg new file mode 100644 index 0000000..fd6e78f --- /dev/null +++ b/backend/static/icons/bold/square-half-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/square-half-bottom-bold.svg b/backend/static/icons/bold/square-half-bottom-bold.svg new file mode 100644 index 0000000..2c1368e --- /dev/null +++ b/backend/static/icons/bold/square-half-bottom-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/square-logo-bold.svg b/backend/static/icons/bold/square-logo-bold.svg new file mode 100644 index 0000000..0b17518 --- /dev/null +++ b/backend/static/icons/bold/square-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/square-split-horizontal-bold.svg b/backend/static/icons/bold/square-split-horizontal-bold.svg new file mode 100644 index 0000000..ed95c7c --- /dev/null +++ b/backend/static/icons/bold/square-split-horizontal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/square-split-vertical-bold.svg b/backend/static/icons/bold/square-split-vertical-bold.svg new file mode 100644 index 0000000..8e27701 --- /dev/null +++ b/backend/static/icons/bold/square-split-vertical-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/squares-four-bold.svg b/backend/static/icons/bold/squares-four-bold.svg new file mode 100644 index 0000000..7eec1c3 --- /dev/null +++ b/backend/static/icons/bold/squares-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stack-bold.svg b/backend/static/icons/bold/stack-bold.svg new file mode 100644 index 0000000..b505e0f --- /dev/null +++ b/backend/static/icons/bold/stack-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stack-minus-bold.svg b/backend/static/icons/bold/stack-minus-bold.svg new file mode 100644 index 0000000..321594c --- /dev/null +++ b/backend/static/icons/bold/stack-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stack-overflow-logo-bold.svg b/backend/static/icons/bold/stack-overflow-logo-bold.svg new file mode 100644 index 0000000..543380b --- /dev/null +++ b/backend/static/icons/bold/stack-overflow-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stack-plus-bold.svg b/backend/static/icons/bold/stack-plus-bold.svg new file mode 100644 index 0000000..50ce15c --- /dev/null +++ b/backend/static/icons/bold/stack-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stack-simple-bold.svg b/backend/static/icons/bold/stack-simple-bold.svg new file mode 100644 index 0000000..07cdd7a --- /dev/null +++ b/backend/static/icons/bold/stack-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stairs-bold.svg b/backend/static/icons/bold/stairs-bold.svg new file mode 100644 index 0000000..3feb8f0 --- /dev/null +++ b/backend/static/icons/bold/stairs-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stamp-bold.svg b/backend/static/icons/bold/stamp-bold.svg new file mode 100644 index 0000000..b611202 --- /dev/null +++ b/backend/static/icons/bold/stamp-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/standard-definition-bold.svg b/backend/static/icons/bold/standard-definition-bold.svg new file mode 100644 index 0000000..7dccff5 --- /dev/null +++ b/backend/static/icons/bold/standard-definition-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/star-and-crescent-bold.svg b/backend/static/icons/bold/star-and-crescent-bold.svg new file mode 100644 index 0000000..668598b --- /dev/null +++ b/backend/static/icons/bold/star-and-crescent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/star-bold.svg b/backend/static/icons/bold/star-bold.svg new file mode 100644 index 0000000..9c11e82 --- /dev/null +++ b/backend/static/icons/bold/star-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/star-four-bold.svg b/backend/static/icons/bold/star-four-bold.svg new file mode 100644 index 0000000..5c28c8a --- /dev/null +++ b/backend/static/icons/bold/star-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/star-half-bold.svg b/backend/static/icons/bold/star-half-bold.svg new file mode 100644 index 0000000..fa58a35 --- /dev/null +++ b/backend/static/icons/bold/star-half-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/star-of-david-bold.svg b/backend/static/icons/bold/star-of-david-bold.svg new file mode 100644 index 0000000..df76bf4 --- /dev/null +++ b/backend/static/icons/bold/star-of-david-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/steam-logo-bold.svg b/backend/static/icons/bold/steam-logo-bold.svg new file mode 100644 index 0000000..ec62a71 --- /dev/null +++ b/backend/static/icons/bold/steam-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/steering-wheel-bold.svg b/backend/static/icons/bold/steering-wheel-bold.svg new file mode 100644 index 0000000..fb587b7 --- /dev/null +++ b/backend/static/icons/bold/steering-wheel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/steps-bold.svg b/backend/static/icons/bold/steps-bold.svg new file mode 100644 index 0000000..d0a3eb7 --- /dev/null +++ b/backend/static/icons/bold/steps-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stethoscope-bold.svg b/backend/static/icons/bold/stethoscope-bold.svg new file mode 100644 index 0000000..c25f066 --- /dev/null +++ b/backend/static/icons/bold/stethoscope-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sticker-bold.svg b/backend/static/icons/bold/sticker-bold.svg new file mode 100644 index 0000000..c099a4a --- /dev/null +++ b/backend/static/icons/bold/sticker-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stool-bold.svg b/backend/static/icons/bold/stool-bold.svg new file mode 100644 index 0000000..3ac8f63 --- /dev/null +++ b/backend/static/icons/bold/stool-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stop-bold.svg b/backend/static/icons/bold/stop-bold.svg new file mode 100644 index 0000000..3f76f11 --- /dev/null +++ b/backend/static/icons/bold/stop-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stop-circle-bold.svg b/backend/static/icons/bold/stop-circle-bold.svg new file mode 100644 index 0000000..081f552 --- /dev/null +++ b/backend/static/icons/bold/stop-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/storefront-bold.svg b/backend/static/icons/bold/storefront-bold.svg new file mode 100644 index 0000000..762f717 --- /dev/null +++ b/backend/static/icons/bold/storefront-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/strategy-bold.svg b/backend/static/icons/bold/strategy-bold.svg new file mode 100644 index 0000000..c1a6a24 --- /dev/null +++ b/backend/static/icons/bold/strategy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/stripe-logo-bold.svg b/backend/static/icons/bold/stripe-logo-bold.svg new file mode 100644 index 0000000..b377c69 --- /dev/null +++ b/backend/static/icons/bold/stripe-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/student-bold.svg b/backend/static/icons/bold/student-bold.svg new file mode 100644 index 0000000..39dc1f5 --- /dev/null +++ b/backend/static/icons/bold/student-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subset-of-bold.svg b/backend/static/icons/bold/subset-of-bold.svg new file mode 100644 index 0000000..5bbe2d7 --- /dev/null +++ b/backend/static/icons/bold/subset-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subset-proper-of-bold.svg b/backend/static/icons/bold/subset-proper-of-bold.svg new file mode 100644 index 0000000..dddc47c --- /dev/null +++ b/backend/static/icons/bold/subset-proper-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subtitles-bold.svg b/backend/static/icons/bold/subtitles-bold.svg new file mode 100644 index 0000000..002ccb1 --- /dev/null +++ b/backend/static/icons/bold/subtitles-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subtitles-slash-bold.svg b/backend/static/icons/bold/subtitles-slash-bold.svg new file mode 100644 index 0000000..31963b3 --- /dev/null +++ b/backend/static/icons/bold/subtitles-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subtract-bold.svg b/backend/static/icons/bold/subtract-bold.svg new file mode 100644 index 0000000..036c7c5 --- /dev/null +++ b/backend/static/icons/bold/subtract-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subtract-square-bold.svg b/backend/static/icons/bold/subtract-square-bold.svg new file mode 100644 index 0000000..42a951f --- /dev/null +++ b/backend/static/icons/bold/subtract-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/subway-bold.svg b/backend/static/icons/bold/subway-bold.svg new file mode 100644 index 0000000..67c6000 --- /dev/null +++ b/backend/static/icons/bold/subway-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/suitcase-bold.svg b/backend/static/icons/bold/suitcase-bold.svg new file mode 100644 index 0000000..f55f1ba --- /dev/null +++ b/backend/static/icons/bold/suitcase-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/suitcase-rolling-bold.svg b/backend/static/icons/bold/suitcase-rolling-bold.svg new file mode 100644 index 0000000..b35fd15 --- /dev/null +++ b/backend/static/icons/bold/suitcase-rolling-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/suitcase-simple-bold.svg b/backend/static/icons/bold/suitcase-simple-bold.svg new file mode 100644 index 0000000..546f518 --- /dev/null +++ b/backend/static/icons/bold/suitcase-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sun-bold.svg b/backend/static/icons/bold/sun-bold.svg new file mode 100644 index 0000000..f574cd6 --- /dev/null +++ b/backend/static/icons/bold/sun-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sun-dim-bold.svg b/backend/static/icons/bold/sun-dim-bold.svg new file mode 100644 index 0000000..deadf82 --- /dev/null +++ b/backend/static/icons/bold/sun-dim-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sun-horizon-bold.svg b/backend/static/icons/bold/sun-horizon-bold.svg new file mode 100644 index 0000000..6442b01 --- /dev/null +++ b/backend/static/icons/bold/sun-horizon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sunglasses-bold.svg b/backend/static/icons/bold/sunglasses-bold.svg new file mode 100644 index 0000000..58fa4e2 --- /dev/null +++ b/backend/static/icons/bold/sunglasses-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/superset-of-bold.svg b/backend/static/icons/bold/superset-of-bold.svg new file mode 100644 index 0000000..90504f5 --- /dev/null +++ b/backend/static/icons/bold/superset-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/superset-proper-of-bold.svg b/backend/static/icons/bold/superset-proper-of-bold.svg new file mode 100644 index 0000000..79f2fff --- /dev/null +++ b/backend/static/icons/bold/superset-proper-of-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/swap-bold.svg b/backend/static/icons/bold/swap-bold.svg new file mode 100644 index 0000000..0249ae0 --- /dev/null +++ b/backend/static/icons/bold/swap-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/swatches-bold.svg b/backend/static/icons/bold/swatches-bold.svg new file mode 100644 index 0000000..78707ff --- /dev/null +++ b/backend/static/icons/bold/swatches-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/swimming-pool-bold.svg b/backend/static/icons/bold/swimming-pool-bold.svg new file mode 100644 index 0000000..8efb561 --- /dev/null +++ b/backend/static/icons/bold/swimming-pool-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/sword-bold.svg b/backend/static/icons/bold/sword-bold.svg new file mode 100644 index 0000000..91162ed --- /dev/null +++ b/backend/static/icons/bold/sword-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/synagogue-bold.svg b/backend/static/icons/bold/synagogue-bold.svg new file mode 100644 index 0000000..b4349df --- /dev/null +++ b/backend/static/icons/bold/synagogue-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/syringe-bold.svg b/backend/static/icons/bold/syringe-bold.svg new file mode 100644 index 0000000..cdf8d5a --- /dev/null +++ b/backend/static/icons/bold/syringe-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/t-shirt-bold.svg b/backend/static/icons/bold/t-shirt-bold.svg new file mode 100644 index 0000000..e4bc3b3 --- /dev/null +++ b/backend/static/icons/bold/t-shirt-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/table-bold.svg b/backend/static/icons/bold/table-bold.svg new file mode 100644 index 0000000..c2824a6 --- /dev/null +++ b/backend/static/icons/bold/table-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tabs-bold.svg b/backend/static/icons/bold/tabs-bold.svg new file mode 100644 index 0000000..24ad9a4 --- /dev/null +++ b/backend/static/icons/bold/tabs-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tag-bold.svg b/backend/static/icons/bold/tag-bold.svg new file mode 100644 index 0000000..ca2c1a6 --- /dev/null +++ b/backend/static/icons/bold/tag-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tag-chevron-bold.svg b/backend/static/icons/bold/tag-chevron-bold.svg new file mode 100644 index 0000000..aad8546 --- /dev/null +++ b/backend/static/icons/bold/tag-chevron-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tag-simple-bold.svg b/backend/static/icons/bold/tag-simple-bold.svg new file mode 100644 index 0000000..b19d5e8 --- /dev/null +++ b/backend/static/icons/bold/tag-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/target-bold.svg b/backend/static/icons/bold/target-bold.svg new file mode 100644 index 0000000..634ae1c --- /dev/null +++ b/backend/static/icons/bold/target-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/taxi-bold.svg b/backend/static/icons/bold/taxi-bold.svg new file mode 100644 index 0000000..57a692d --- /dev/null +++ b/backend/static/icons/bold/taxi-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tea-bag-bold.svg b/backend/static/icons/bold/tea-bag-bold.svg new file mode 100644 index 0000000..2cae5d7 --- /dev/null +++ b/backend/static/icons/bold/tea-bag-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/telegram-logo-bold.svg b/backend/static/icons/bold/telegram-logo-bold.svg new file mode 100644 index 0000000..3c62a41 --- /dev/null +++ b/backend/static/icons/bold/telegram-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/television-bold.svg b/backend/static/icons/bold/television-bold.svg new file mode 100644 index 0000000..143d7e5 --- /dev/null +++ b/backend/static/icons/bold/television-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/television-simple-bold.svg b/backend/static/icons/bold/television-simple-bold.svg new file mode 100644 index 0000000..e27c312 --- /dev/null +++ b/backend/static/icons/bold/television-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tennis-ball-bold.svg b/backend/static/icons/bold/tennis-ball-bold.svg new file mode 100644 index 0000000..3e3f60a --- /dev/null +++ b/backend/static/icons/bold/tennis-ball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tent-bold.svg b/backend/static/icons/bold/tent-bold.svg new file mode 100644 index 0000000..acb7728 --- /dev/null +++ b/backend/static/icons/bold/tent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/terminal-bold.svg b/backend/static/icons/bold/terminal-bold.svg new file mode 100644 index 0000000..bae2163 --- /dev/null +++ b/backend/static/icons/bold/terminal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/terminal-window-bold.svg b/backend/static/icons/bold/terminal-window-bold.svg new file mode 100644 index 0000000..4871cac --- /dev/null +++ b/backend/static/icons/bold/terminal-window-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/test-tube-bold.svg b/backend/static/icons/bold/test-tube-bold.svg new file mode 100644 index 0000000..065ec11 --- /dev/null +++ b/backend/static/icons/bold/test-tube-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-a-underline-bold.svg b/backend/static/icons/bold/text-a-underline-bold.svg new file mode 100644 index 0000000..7c23caf --- /dev/null +++ b/backend/static/icons/bold/text-a-underline-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-aa-bold.svg b/backend/static/icons/bold/text-aa-bold.svg new file mode 100644 index 0000000..0f9fc56 --- /dev/null +++ b/backend/static/icons/bold/text-aa-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-align-center-bold.svg b/backend/static/icons/bold/text-align-center-bold.svg new file mode 100644 index 0000000..d96fa09 --- /dev/null +++ b/backend/static/icons/bold/text-align-center-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-align-justify-bold.svg b/backend/static/icons/bold/text-align-justify-bold.svg new file mode 100644 index 0000000..d2d2a76 --- /dev/null +++ b/backend/static/icons/bold/text-align-justify-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-align-left-bold.svg b/backend/static/icons/bold/text-align-left-bold.svg new file mode 100644 index 0000000..a31e1ff --- /dev/null +++ b/backend/static/icons/bold/text-align-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-align-right-bold.svg b/backend/static/icons/bold/text-align-right-bold.svg new file mode 100644 index 0000000..46b8d12 --- /dev/null +++ b/backend/static/icons/bold/text-align-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-b-bold.svg b/backend/static/icons/bold/text-b-bold.svg new file mode 100644 index 0000000..eed6693 --- /dev/null +++ b/backend/static/icons/bold/text-b-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-columns-bold.svg b/backend/static/icons/bold/text-columns-bold.svg new file mode 100644 index 0000000..f7395fd --- /dev/null +++ b/backend/static/icons/bold/text-columns-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-bold.svg b/backend/static/icons/bold/text-h-bold.svg new file mode 100644 index 0000000..04e1414 --- /dev/null +++ b/backend/static/icons/bold/text-h-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-five-bold.svg b/backend/static/icons/bold/text-h-five-bold.svg new file mode 100644 index 0000000..2ecf5f5 --- /dev/null +++ b/backend/static/icons/bold/text-h-five-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-four-bold.svg b/backend/static/icons/bold/text-h-four-bold.svg new file mode 100644 index 0000000..af10421 --- /dev/null +++ b/backend/static/icons/bold/text-h-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-one-bold.svg b/backend/static/icons/bold/text-h-one-bold.svg new file mode 100644 index 0000000..a93f09b --- /dev/null +++ b/backend/static/icons/bold/text-h-one-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-six-bold.svg b/backend/static/icons/bold/text-h-six-bold.svg new file mode 100644 index 0000000..175d401 --- /dev/null +++ b/backend/static/icons/bold/text-h-six-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-three-bold.svg b/backend/static/icons/bold/text-h-three-bold.svg new file mode 100644 index 0000000..479dd5b --- /dev/null +++ b/backend/static/icons/bold/text-h-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-h-two-bold.svg b/backend/static/icons/bold/text-h-two-bold.svg new file mode 100644 index 0000000..8bc1b84 --- /dev/null +++ b/backend/static/icons/bold/text-h-two-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-indent-bold.svg b/backend/static/icons/bold/text-indent-bold.svg new file mode 100644 index 0000000..ed990e4 --- /dev/null +++ b/backend/static/icons/bold/text-indent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-italic-bold.svg b/backend/static/icons/bold/text-italic-bold.svg new file mode 100644 index 0000000..071a502 --- /dev/null +++ b/backend/static/icons/bold/text-italic-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-outdent-bold.svg b/backend/static/icons/bold/text-outdent-bold.svg new file mode 100644 index 0000000..f5996e7 --- /dev/null +++ b/backend/static/icons/bold/text-outdent-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-strikethrough-bold.svg b/backend/static/icons/bold/text-strikethrough-bold.svg new file mode 100644 index 0000000..e561c82 --- /dev/null +++ b/backend/static/icons/bold/text-strikethrough-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-subscript-bold.svg b/backend/static/icons/bold/text-subscript-bold.svg new file mode 100644 index 0000000..ca26502 --- /dev/null +++ b/backend/static/icons/bold/text-subscript-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-superscript-bold.svg b/backend/static/icons/bold/text-superscript-bold.svg new file mode 100644 index 0000000..020d7a8 --- /dev/null +++ b/backend/static/icons/bold/text-superscript-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-t-bold.svg b/backend/static/icons/bold/text-t-bold.svg new file mode 100644 index 0000000..ee2e7a2 --- /dev/null +++ b/backend/static/icons/bold/text-t-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-t-slash-bold.svg b/backend/static/icons/bold/text-t-slash-bold.svg new file mode 100644 index 0000000..c2ddb00 --- /dev/null +++ b/backend/static/icons/bold/text-t-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/text-underline-bold.svg b/backend/static/icons/bold/text-underline-bold.svg new file mode 100644 index 0000000..7c353cd --- /dev/null +++ b/backend/static/icons/bold/text-underline-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/textbox-bold.svg b/backend/static/icons/bold/textbox-bold.svg new file mode 100644 index 0000000..c2f27dd --- /dev/null +++ b/backend/static/icons/bold/textbox-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/thermometer-bold.svg b/backend/static/icons/bold/thermometer-bold.svg new file mode 100644 index 0000000..a07156e --- /dev/null +++ b/backend/static/icons/bold/thermometer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/thermometer-cold-bold.svg b/backend/static/icons/bold/thermometer-cold-bold.svg new file mode 100644 index 0000000..9b0db75 --- /dev/null +++ b/backend/static/icons/bold/thermometer-cold-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/thermometer-hot-bold.svg b/backend/static/icons/bold/thermometer-hot-bold.svg new file mode 100644 index 0000000..a2d802e --- /dev/null +++ b/backend/static/icons/bold/thermometer-hot-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/thermometer-simple-bold.svg b/backend/static/icons/bold/thermometer-simple-bold.svg new file mode 100644 index 0000000..7bab64a --- /dev/null +++ b/backend/static/icons/bold/thermometer-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/threads-logo-bold.svg b/backend/static/icons/bold/threads-logo-bold.svg new file mode 100644 index 0000000..b9d31f4 --- /dev/null +++ b/backend/static/icons/bold/threads-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/three-d-bold.svg b/backend/static/icons/bold/three-d-bold.svg new file mode 100644 index 0000000..7f1a5f8 --- /dev/null +++ b/backend/static/icons/bold/three-d-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/thumbs-down-bold.svg b/backend/static/icons/bold/thumbs-down-bold.svg new file mode 100644 index 0000000..ed0d999 --- /dev/null +++ b/backend/static/icons/bold/thumbs-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/thumbs-up-bold.svg b/backend/static/icons/bold/thumbs-up-bold.svg new file mode 100644 index 0000000..41c14b9 --- /dev/null +++ b/backend/static/icons/bold/thumbs-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/ticket-bold.svg b/backend/static/icons/bold/ticket-bold.svg new file mode 100644 index 0000000..23db4c4 --- /dev/null +++ b/backend/static/icons/bold/ticket-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tidal-logo-bold.svg b/backend/static/icons/bold/tidal-logo-bold.svg new file mode 100644 index 0000000..d9bb757 --- /dev/null +++ b/backend/static/icons/bold/tidal-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tiktok-logo-bold.svg b/backend/static/icons/bold/tiktok-logo-bold.svg new file mode 100644 index 0000000..f65c282 --- /dev/null +++ b/backend/static/icons/bold/tiktok-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tilde-bold.svg b/backend/static/icons/bold/tilde-bold.svg new file mode 100644 index 0000000..090e4f7 --- /dev/null +++ b/backend/static/icons/bold/tilde-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/timer-bold.svg b/backend/static/icons/bold/timer-bold.svg new file mode 100644 index 0000000..1f6c7e7 --- /dev/null +++ b/backend/static/icons/bold/timer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tip-jar-bold.svg b/backend/static/icons/bold/tip-jar-bold.svg new file mode 100644 index 0000000..3b64a2f --- /dev/null +++ b/backend/static/icons/bold/tip-jar-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tipi-bold.svg b/backend/static/icons/bold/tipi-bold.svg new file mode 100644 index 0000000..24c323b --- /dev/null +++ b/backend/static/icons/bold/tipi-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tire-bold.svg b/backend/static/icons/bold/tire-bold.svg new file mode 100644 index 0000000..edc5f63 --- /dev/null +++ b/backend/static/icons/bold/tire-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/toggle-left-bold.svg b/backend/static/icons/bold/toggle-left-bold.svg new file mode 100644 index 0000000..ecd4ff7 --- /dev/null +++ b/backend/static/icons/bold/toggle-left-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/toggle-right-bold.svg b/backend/static/icons/bold/toggle-right-bold.svg new file mode 100644 index 0000000..a74cbc3 --- /dev/null +++ b/backend/static/icons/bold/toggle-right-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/toilet-bold.svg b/backend/static/icons/bold/toilet-bold.svg new file mode 100644 index 0000000..211c8cc --- /dev/null +++ b/backend/static/icons/bold/toilet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/toilet-paper-bold.svg b/backend/static/icons/bold/toilet-paper-bold.svg new file mode 100644 index 0000000..f042634 --- /dev/null +++ b/backend/static/icons/bold/toilet-paper-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/toolbox-bold.svg b/backend/static/icons/bold/toolbox-bold.svg new file mode 100644 index 0000000..7e38422 --- /dev/null +++ b/backend/static/icons/bold/toolbox-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tooth-bold.svg b/backend/static/icons/bold/tooth-bold.svg new file mode 100644 index 0000000..f0dc2a4 --- /dev/null +++ b/backend/static/icons/bold/tooth-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tornado-bold.svg b/backend/static/icons/bold/tornado-bold.svg new file mode 100644 index 0000000..f9443c4 --- /dev/null +++ b/backend/static/icons/bold/tornado-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tote-bold.svg b/backend/static/icons/bold/tote-bold.svg new file mode 100644 index 0000000..bcd3eaf --- /dev/null +++ b/backend/static/icons/bold/tote-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tote-simple-bold.svg b/backend/static/icons/bold/tote-simple-bold.svg new file mode 100644 index 0000000..942a25f --- /dev/null +++ b/backend/static/icons/bold/tote-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/towel-bold.svg b/backend/static/icons/bold/towel-bold.svg new file mode 100644 index 0000000..905ec93 --- /dev/null +++ b/backend/static/icons/bold/towel-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tractor-bold.svg b/backend/static/icons/bold/tractor-bold.svg new file mode 100644 index 0000000..ed29a76 --- /dev/null +++ b/backend/static/icons/bold/tractor-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trademark-bold.svg b/backend/static/icons/bold/trademark-bold.svg new file mode 100644 index 0000000..8072a6e --- /dev/null +++ b/backend/static/icons/bold/trademark-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trademark-registered-bold.svg b/backend/static/icons/bold/trademark-registered-bold.svg new file mode 100644 index 0000000..c30ce9f --- /dev/null +++ b/backend/static/icons/bold/trademark-registered-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/traffic-cone-bold.svg b/backend/static/icons/bold/traffic-cone-bold.svg new file mode 100644 index 0000000..d3f9fed --- /dev/null +++ b/backend/static/icons/bold/traffic-cone-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/traffic-sign-bold.svg b/backend/static/icons/bold/traffic-sign-bold.svg new file mode 100644 index 0000000..4bb57d5 --- /dev/null +++ b/backend/static/icons/bold/traffic-sign-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/traffic-signal-bold.svg b/backend/static/icons/bold/traffic-signal-bold.svg new file mode 100644 index 0000000..86728db --- /dev/null +++ b/backend/static/icons/bold/traffic-signal-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/train-bold.svg b/backend/static/icons/bold/train-bold.svg new file mode 100644 index 0000000..2ea27de --- /dev/null +++ b/backend/static/icons/bold/train-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/train-regional-bold.svg b/backend/static/icons/bold/train-regional-bold.svg new file mode 100644 index 0000000..dd8444a --- /dev/null +++ b/backend/static/icons/bold/train-regional-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/train-simple-bold.svg b/backend/static/icons/bold/train-simple-bold.svg new file mode 100644 index 0000000..4322176 --- /dev/null +++ b/backend/static/icons/bold/train-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tram-bold.svg b/backend/static/icons/bold/tram-bold.svg new file mode 100644 index 0000000..e02ac12 --- /dev/null +++ b/backend/static/icons/bold/tram-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/translate-bold.svg b/backend/static/icons/bold/translate-bold.svg new file mode 100644 index 0000000..4054f0d --- /dev/null +++ b/backend/static/icons/bold/translate-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trash-bold.svg b/backend/static/icons/bold/trash-bold.svg new file mode 100644 index 0000000..2d47331 --- /dev/null +++ b/backend/static/icons/bold/trash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trash-simple-bold.svg b/backend/static/icons/bold/trash-simple-bold.svg new file mode 100644 index 0000000..45888c2 --- /dev/null +++ b/backend/static/icons/bold/trash-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tray-arrow-down-bold.svg b/backend/static/icons/bold/tray-arrow-down-bold.svg new file mode 100644 index 0000000..4a90f6b --- /dev/null +++ b/backend/static/icons/bold/tray-arrow-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tray-arrow-up-bold.svg b/backend/static/icons/bold/tray-arrow-up-bold.svg new file mode 100644 index 0000000..4245465 --- /dev/null +++ b/backend/static/icons/bold/tray-arrow-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tray-bold.svg b/backend/static/icons/bold/tray-bold.svg new file mode 100644 index 0000000..6a0e60b --- /dev/null +++ b/backend/static/icons/bold/tray-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/treasure-chest-bold.svg b/backend/static/icons/bold/treasure-chest-bold.svg new file mode 100644 index 0000000..c291ca1 --- /dev/null +++ b/backend/static/icons/bold/treasure-chest-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tree-bold.svg b/backend/static/icons/bold/tree-bold.svg new file mode 100644 index 0000000..7bf0590 --- /dev/null +++ b/backend/static/icons/bold/tree-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tree-evergreen-bold.svg b/backend/static/icons/bold/tree-evergreen-bold.svg new file mode 100644 index 0000000..d0bfbc9 --- /dev/null +++ b/backend/static/icons/bold/tree-evergreen-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tree-palm-bold.svg b/backend/static/icons/bold/tree-palm-bold.svg new file mode 100644 index 0000000..a92023c --- /dev/null +++ b/backend/static/icons/bold/tree-palm-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tree-structure-bold.svg b/backend/static/icons/bold/tree-structure-bold.svg new file mode 100644 index 0000000..fccefa9 --- /dev/null +++ b/backend/static/icons/bold/tree-structure-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tree-view-bold.svg b/backend/static/icons/bold/tree-view-bold.svg new file mode 100644 index 0000000..3bdae1d --- /dev/null +++ b/backend/static/icons/bold/tree-view-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trend-down-bold.svg b/backend/static/icons/bold/trend-down-bold.svg new file mode 100644 index 0000000..20bb2e5 --- /dev/null +++ b/backend/static/icons/bold/trend-down-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trend-up-bold.svg b/backend/static/icons/bold/trend-up-bold.svg new file mode 100644 index 0000000..1e49108 --- /dev/null +++ b/backend/static/icons/bold/trend-up-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/triangle-bold.svg b/backend/static/icons/bold/triangle-bold.svg new file mode 100644 index 0000000..bb26ed0 --- /dev/null +++ b/backend/static/icons/bold/triangle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/triangle-dashed-bold.svg b/backend/static/icons/bold/triangle-dashed-bold.svg new file mode 100644 index 0000000..d98705e --- /dev/null +++ b/backend/static/icons/bold/triangle-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trolley-bold.svg b/backend/static/icons/bold/trolley-bold.svg new file mode 100644 index 0000000..3c76af8 --- /dev/null +++ b/backend/static/icons/bold/trolley-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trolley-suitcase-bold.svg b/backend/static/icons/bold/trolley-suitcase-bold.svg new file mode 100644 index 0000000..d245dff --- /dev/null +++ b/backend/static/icons/bold/trolley-suitcase-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/trophy-bold.svg b/backend/static/icons/bold/trophy-bold.svg new file mode 100644 index 0000000..61c4b0e --- /dev/null +++ b/backend/static/icons/bold/trophy-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/truck-bold.svg b/backend/static/icons/bold/truck-bold.svg new file mode 100644 index 0000000..2a3ffbf --- /dev/null +++ b/backend/static/icons/bold/truck-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/truck-trailer-bold.svg b/backend/static/icons/bold/truck-trailer-bold.svg new file mode 100644 index 0000000..9563a5f --- /dev/null +++ b/backend/static/icons/bold/truck-trailer-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/tumblr-logo-bold.svg b/backend/static/icons/bold/tumblr-logo-bold.svg new file mode 100644 index 0000000..07eacab --- /dev/null +++ b/backend/static/icons/bold/tumblr-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/twitch-logo-bold.svg b/backend/static/icons/bold/twitch-logo-bold.svg new file mode 100644 index 0000000..8168cac --- /dev/null +++ b/backend/static/icons/bold/twitch-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/twitter-logo-bold.svg b/backend/static/icons/bold/twitter-logo-bold.svg new file mode 100644 index 0000000..6a7da68 --- /dev/null +++ b/backend/static/icons/bold/twitter-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/umbrella-bold.svg b/backend/static/icons/bold/umbrella-bold.svg new file mode 100644 index 0000000..0fee65a --- /dev/null +++ b/backend/static/icons/bold/umbrella-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/umbrella-simple-bold.svg b/backend/static/icons/bold/umbrella-simple-bold.svg new file mode 100644 index 0000000..0e851e8 --- /dev/null +++ b/backend/static/icons/bold/umbrella-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/union-bold.svg b/backend/static/icons/bold/union-bold.svg new file mode 100644 index 0000000..d837b02 --- /dev/null +++ b/backend/static/icons/bold/union-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/unite-bold.svg b/backend/static/icons/bold/unite-bold.svg new file mode 100644 index 0000000..d03862f --- /dev/null +++ b/backend/static/icons/bold/unite-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/unite-square-bold.svg b/backend/static/icons/bold/unite-square-bold.svg new file mode 100644 index 0000000..47f904b --- /dev/null +++ b/backend/static/icons/bold/unite-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/upload-bold.svg b/backend/static/icons/bold/upload-bold.svg new file mode 100644 index 0000000..4e10c23 --- /dev/null +++ b/backend/static/icons/bold/upload-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/upload-simple-bold.svg b/backend/static/icons/bold/upload-simple-bold.svg new file mode 100644 index 0000000..bb26f55 --- /dev/null +++ b/backend/static/icons/bold/upload-simple-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/usb-bold.svg b/backend/static/icons/bold/usb-bold.svg new file mode 100644 index 0000000..de2690d --- /dev/null +++ b/backend/static/icons/bold/usb-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-bold.svg b/backend/static/icons/bold/user-bold.svg new file mode 100644 index 0000000..3e99628 --- /dev/null +++ b/backend/static/icons/bold/user-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-check-bold.svg b/backend/static/icons/bold/user-check-bold.svg new file mode 100644 index 0000000..620ebd8 --- /dev/null +++ b/backend/static/icons/bold/user-check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-circle-bold.svg b/backend/static/icons/bold/user-circle-bold.svg new file mode 100644 index 0000000..3226067 --- /dev/null +++ b/backend/static/icons/bold/user-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-circle-check-bold.svg b/backend/static/icons/bold/user-circle-check-bold.svg new file mode 100644 index 0000000..88bf3c7 --- /dev/null +++ b/backend/static/icons/bold/user-circle-check-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-circle-dashed-bold.svg b/backend/static/icons/bold/user-circle-dashed-bold.svg new file mode 100644 index 0000000..793156e --- /dev/null +++ b/backend/static/icons/bold/user-circle-dashed-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-circle-gear-bold.svg b/backend/static/icons/bold/user-circle-gear-bold.svg new file mode 100644 index 0000000..6922d0e --- /dev/null +++ b/backend/static/icons/bold/user-circle-gear-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-circle-minus-bold.svg b/backend/static/icons/bold/user-circle-minus-bold.svg new file mode 100644 index 0000000..fb661d1 --- /dev/null +++ b/backend/static/icons/bold/user-circle-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-circle-plus-bold.svg b/backend/static/icons/bold/user-circle-plus-bold.svg new file mode 100644 index 0000000..c5412d8 --- /dev/null +++ b/backend/static/icons/bold/user-circle-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-focus-bold.svg b/backend/static/icons/bold/user-focus-bold.svg new file mode 100644 index 0000000..bd66936 --- /dev/null +++ b/backend/static/icons/bold/user-focus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-gear-bold.svg b/backend/static/icons/bold/user-gear-bold.svg new file mode 100644 index 0000000..71899db --- /dev/null +++ b/backend/static/icons/bold/user-gear-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-list-bold.svg b/backend/static/icons/bold/user-list-bold.svg new file mode 100644 index 0000000..682be0d --- /dev/null +++ b/backend/static/icons/bold/user-list-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-minus-bold.svg b/backend/static/icons/bold/user-minus-bold.svg new file mode 100644 index 0000000..28f6ac0 --- /dev/null +++ b/backend/static/icons/bold/user-minus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-plus-bold.svg b/backend/static/icons/bold/user-plus-bold.svg new file mode 100644 index 0000000..67da64e --- /dev/null +++ b/backend/static/icons/bold/user-plus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-rectangle-bold.svg b/backend/static/icons/bold/user-rectangle-bold.svg new file mode 100644 index 0000000..b6556bf --- /dev/null +++ b/backend/static/icons/bold/user-rectangle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-sound-bold.svg b/backend/static/icons/bold/user-sound-bold.svg new file mode 100644 index 0000000..3cc6396 --- /dev/null +++ b/backend/static/icons/bold/user-sound-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-square-bold.svg b/backend/static/icons/bold/user-square-bold.svg new file mode 100644 index 0000000..685845a --- /dev/null +++ b/backend/static/icons/bold/user-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/user-switch-bold.svg b/backend/static/icons/bold/user-switch-bold.svg new file mode 100644 index 0000000..93bf221 --- /dev/null +++ b/backend/static/icons/bold/user-switch-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/users-bold.svg b/backend/static/icons/bold/users-bold.svg new file mode 100644 index 0000000..c1c8fc9 --- /dev/null +++ b/backend/static/icons/bold/users-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/users-four-bold.svg b/backend/static/icons/bold/users-four-bold.svg new file mode 100644 index 0000000..9d8a8e2 --- /dev/null +++ b/backend/static/icons/bold/users-four-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/users-three-bold.svg b/backend/static/icons/bold/users-three-bold.svg new file mode 100644 index 0000000..2ee3faa --- /dev/null +++ b/backend/static/icons/bold/users-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/van-bold.svg b/backend/static/icons/bold/van-bold.svg new file mode 100644 index 0000000..6bf6083 --- /dev/null +++ b/backend/static/icons/bold/van-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/vault-bold.svg b/backend/static/icons/bold/vault-bold.svg new file mode 100644 index 0000000..397b401 --- /dev/null +++ b/backend/static/icons/bold/vault-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/vector-three-bold.svg b/backend/static/icons/bold/vector-three-bold.svg new file mode 100644 index 0000000..2f0ddf9 --- /dev/null +++ b/backend/static/icons/bold/vector-three-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/vector-two-bold.svg b/backend/static/icons/bold/vector-two-bold.svg new file mode 100644 index 0000000..f573d65 --- /dev/null +++ b/backend/static/icons/bold/vector-two-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/vibrate-bold.svg b/backend/static/icons/bold/vibrate-bold.svg new file mode 100644 index 0000000..9514e3f --- /dev/null +++ b/backend/static/icons/bold/vibrate-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/video-bold.svg b/backend/static/icons/bold/video-bold.svg new file mode 100644 index 0000000..e80870a --- /dev/null +++ b/backend/static/icons/bold/video-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/video-camera-bold.svg b/backend/static/icons/bold/video-camera-bold.svg new file mode 100644 index 0000000..4a52275 --- /dev/null +++ b/backend/static/icons/bold/video-camera-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/video-camera-slash-bold.svg b/backend/static/icons/bold/video-camera-slash-bold.svg new file mode 100644 index 0000000..4d2805a --- /dev/null +++ b/backend/static/icons/bold/video-camera-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/video-conference-bold.svg b/backend/static/icons/bold/video-conference-bold.svg new file mode 100644 index 0000000..d1e72e6 --- /dev/null +++ b/backend/static/icons/bold/video-conference-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/vignette-bold.svg b/backend/static/icons/bold/vignette-bold.svg new file mode 100644 index 0000000..d746d85 --- /dev/null +++ b/backend/static/icons/bold/vignette-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/vinyl-record-bold.svg b/backend/static/icons/bold/vinyl-record-bold.svg new file mode 100644 index 0000000..3064e73 --- /dev/null +++ b/backend/static/icons/bold/vinyl-record-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/virtual-reality-bold.svg b/backend/static/icons/bold/virtual-reality-bold.svg new file mode 100644 index 0000000..b6ea238 --- /dev/null +++ b/backend/static/icons/bold/virtual-reality-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/virus-bold.svg b/backend/static/icons/bold/virus-bold.svg new file mode 100644 index 0000000..8840623 --- /dev/null +++ b/backend/static/icons/bold/virus-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/visor-bold.svg b/backend/static/icons/bold/visor-bold.svg new file mode 100644 index 0000000..ac404ad --- /dev/null +++ b/backend/static/icons/bold/visor-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/voicemail-bold.svg b/backend/static/icons/bold/voicemail-bold.svg new file mode 100644 index 0000000..5bc8bd9 --- /dev/null +++ b/backend/static/icons/bold/voicemail-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/volleyball-bold.svg b/backend/static/icons/bold/volleyball-bold.svg new file mode 100644 index 0000000..bdfd851 --- /dev/null +++ b/backend/static/icons/bold/volleyball-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wall-bold.svg b/backend/static/icons/bold/wall-bold.svg new file mode 100644 index 0000000..ad489c4 --- /dev/null +++ b/backend/static/icons/bold/wall-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wallet-bold.svg b/backend/static/icons/bold/wallet-bold.svg new file mode 100644 index 0000000..1e2a035 --- /dev/null +++ b/backend/static/icons/bold/wallet-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/warehouse-bold.svg b/backend/static/icons/bold/warehouse-bold.svg new file mode 100644 index 0000000..3b4dcfe --- /dev/null +++ b/backend/static/icons/bold/warehouse-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/warning-bold.svg b/backend/static/icons/bold/warning-bold.svg new file mode 100644 index 0000000..0ed4b51 --- /dev/null +++ b/backend/static/icons/bold/warning-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/warning-circle-bold.svg b/backend/static/icons/bold/warning-circle-bold.svg new file mode 100644 index 0000000..bc4c33d --- /dev/null +++ b/backend/static/icons/bold/warning-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/warning-diamond-bold.svg b/backend/static/icons/bold/warning-diamond-bold.svg new file mode 100644 index 0000000..c5819ef --- /dev/null +++ b/backend/static/icons/bold/warning-diamond-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/warning-octagon-bold.svg b/backend/static/icons/bold/warning-octagon-bold.svg new file mode 100644 index 0000000..4249ce9 --- /dev/null +++ b/backend/static/icons/bold/warning-octagon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/washing-machine-bold.svg b/backend/static/icons/bold/washing-machine-bold.svg new file mode 100644 index 0000000..de62134 --- /dev/null +++ b/backend/static/icons/bold/washing-machine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/watch-bold.svg b/backend/static/icons/bold/watch-bold.svg new file mode 100644 index 0000000..0c6425b --- /dev/null +++ b/backend/static/icons/bold/watch-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wave-sawtooth-bold.svg b/backend/static/icons/bold/wave-sawtooth-bold.svg new file mode 100644 index 0000000..2acdbaf --- /dev/null +++ b/backend/static/icons/bold/wave-sawtooth-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wave-sine-bold.svg b/backend/static/icons/bold/wave-sine-bold.svg new file mode 100644 index 0000000..6aa6b27 --- /dev/null +++ b/backend/static/icons/bold/wave-sine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wave-square-bold.svg b/backend/static/icons/bold/wave-square-bold.svg new file mode 100644 index 0000000..96905d9 --- /dev/null +++ b/backend/static/icons/bold/wave-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wave-triangle-bold.svg b/backend/static/icons/bold/wave-triangle-bold.svg new file mode 100644 index 0000000..cc3592e --- /dev/null +++ b/backend/static/icons/bold/wave-triangle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/waveform-bold.svg b/backend/static/icons/bold/waveform-bold.svg new file mode 100644 index 0000000..8426932 --- /dev/null +++ b/backend/static/icons/bold/waveform-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/waveform-slash-bold.svg b/backend/static/icons/bold/waveform-slash-bold.svg new file mode 100644 index 0000000..2b6f7a8 --- /dev/null +++ b/backend/static/icons/bold/waveform-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/waves-bold.svg b/backend/static/icons/bold/waves-bold.svg new file mode 100644 index 0000000..92d2971 --- /dev/null +++ b/backend/static/icons/bold/waves-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/webcam-bold.svg b/backend/static/icons/bold/webcam-bold.svg new file mode 100644 index 0000000..71a3010 --- /dev/null +++ b/backend/static/icons/bold/webcam-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/webcam-slash-bold.svg b/backend/static/icons/bold/webcam-slash-bold.svg new file mode 100644 index 0000000..6f58df5 --- /dev/null +++ b/backend/static/icons/bold/webcam-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/webhooks-logo-bold.svg b/backend/static/icons/bold/webhooks-logo-bold.svg new file mode 100644 index 0000000..7f7fe78 --- /dev/null +++ b/backend/static/icons/bold/webhooks-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wechat-logo-bold.svg b/backend/static/icons/bold/wechat-logo-bold.svg new file mode 100644 index 0000000..bb4892b --- /dev/null +++ b/backend/static/icons/bold/wechat-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/whatsapp-logo-bold.svg b/backend/static/icons/bold/whatsapp-logo-bold.svg new file mode 100644 index 0000000..a5c1b63 --- /dev/null +++ b/backend/static/icons/bold/whatsapp-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wheelchair-bold.svg b/backend/static/icons/bold/wheelchair-bold.svg new file mode 100644 index 0000000..949b090 --- /dev/null +++ b/backend/static/icons/bold/wheelchair-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wheelchair-motion-bold.svg b/backend/static/icons/bold/wheelchair-motion-bold.svg new file mode 100644 index 0000000..7b16e53 --- /dev/null +++ b/backend/static/icons/bold/wheelchair-motion-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wifi-high-bold.svg b/backend/static/icons/bold/wifi-high-bold.svg new file mode 100644 index 0000000..b5d75cb --- /dev/null +++ b/backend/static/icons/bold/wifi-high-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wifi-low-bold.svg b/backend/static/icons/bold/wifi-low-bold.svg new file mode 100644 index 0000000..e4d7a3e --- /dev/null +++ b/backend/static/icons/bold/wifi-low-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wifi-medium-bold.svg b/backend/static/icons/bold/wifi-medium-bold.svg new file mode 100644 index 0000000..9518100 --- /dev/null +++ b/backend/static/icons/bold/wifi-medium-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wifi-none-bold.svg b/backend/static/icons/bold/wifi-none-bold.svg new file mode 100644 index 0000000..4a6793b --- /dev/null +++ b/backend/static/icons/bold/wifi-none-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wifi-slash-bold.svg b/backend/static/icons/bold/wifi-slash-bold.svg new file mode 100644 index 0000000..1a58b3d --- /dev/null +++ b/backend/static/icons/bold/wifi-slash-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wifi-x-bold.svg b/backend/static/icons/bold/wifi-x-bold.svg new file mode 100644 index 0000000..677d6ce --- /dev/null +++ b/backend/static/icons/bold/wifi-x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wind-bold.svg b/backend/static/icons/bold/wind-bold.svg new file mode 100644 index 0000000..e096f10 --- /dev/null +++ b/backend/static/icons/bold/wind-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/windmill-bold.svg b/backend/static/icons/bold/windmill-bold.svg new file mode 100644 index 0000000..ed380cb --- /dev/null +++ b/backend/static/icons/bold/windmill-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/windows-logo-bold.svg b/backend/static/icons/bold/windows-logo-bold.svg new file mode 100644 index 0000000..34c9284 --- /dev/null +++ b/backend/static/icons/bold/windows-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wine-bold.svg b/backend/static/icons/bold/wine-bold.svg new file mode 100644 index 0000000..3aeb868 --- /dev/null +++ b/backend/static/icons/bold/wine-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/wrench-bold.svg b/backend/static/icons/bold/wrench-bold.svg new file mode 100644 index 0000000..fb321e6 --- /dev/null +++ b/backend/static/icons/bold/wrench-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/x-bold.svg b/backend/static/icons/bold/x-bold.svg new file mode 100644 index 0000000..62544a8 --- /dev/null +++ b/backend/static/icons/bold/x-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/x-circle-bold.svg b/backend/static/icons/bold/x-circle-bold.svg new file mode 100644 index 0000000..cf37bf3 --- /dev/null +++ b/backend/static/icons/bold/x-circle-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/x-logo-bold.svg b/backend/static/icons/bold/x-logo-bold.svg new file mode 100644 index 0000000..f5ea7d9 --- /dev/null +++ b/backend/static/icons/bold/x-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/x-square-bold.svg b/backend/static/icons/bold/x-square-bold.svg new file mode 100644 index 0000000..bf26020 --- /dev/null +++ b/backend/static/icons/bold/x-square-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/yarn-bold.svg b/backend/static/icons/bold/yarn-bold.svg new file mode 100644 index 0000000..4a6f3d3 --- /dev/null +++ b/backend/static/icons/bold/yarn-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/yin-yang-bold.svg b/backend/static/icons/bold/yin-yang-bold.svg new file mode 100644 index 0000000..7015566 --- /dev/null +++ b/backend/static/icons/bold/yin-yang-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/bold/youtube-logo-bold.svg b/backend/static/icons/bold/youtube-logo-bold.svg new file mode 100644 index 0000000..9f3986a --- /dev/null +++ b/backend/static/icons/bold/youtube-logo-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/static/icons/placeholder.svg b/backend/static/icons/placeholder.svg new file mode 100644 index 0000000..ca79c4c --- /dev/null +++ b/backend/static/icons/placeholder.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/backend/static/images/placeholder.jpg b/backend/static/images/placeholder.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9477065c50491b95f79c6fe84cc94995ff951140 GIT binary patch literal 80776 zcmeFYS5#9`+cmnAP(-9Rjesb9#SLrqCZO#`K+Cp0McZI;`FA2&PS1GWcz>|5%N}%& z_sG@(RuvXTM9_DaNReWoWF3T zWY!xtlu6L;8<*}=Rf{N)?n`Z#YyXN~&-*2G3OMUCya!TxoWj=n@Yk&MfN&A+8CqTe z%j31`-**6R)B{*$+oo+De~p+-M%{{5L{0h567>Y;ub;amSADtqjzN7-zrQsUGR@nn z>x;DNQjzY9D%Onzcq_KFmBUATtEI=l^VT6~$`r|cJT}`68jR5N_*DcJ$%41v6?um1d?zTdm6~e`$E^MYd805%l)fqRLb?S~ zUdh-;p8%3*>w18wbx>kUm-UBcDL25feYGFNa&i3+pm++wMN3p(Cy`bhy?77!*5Ycg ztK_cdGJTYJyQqs-Hb({A((IM%`?`VU=`@-reYt|E!5!;T<`tsvK|0D(b^zmP9-1^n z0kKHHnA^w@_!KIrn@`#<)Id)HkjodmeU2M<6qmV0r${=Fr|q6P3c0lWnw78Xo1s;1 znB;d^r(ct=>$RCoY$Qc0b{qZ);ApwkH3Yc$WqE-EuzAOnzuG#Bk10EoCS1gm7`=I) zV}1fhS~XwVfC8-OtkWMU-JRe?sFjS4i!}6Q@Yr!rL*A8)_us0F{xf7K-nTLdGF_H8 z05E350YG}PnFx^ee{KRWJD)?3N!xv(B;M34Uf(7LDnWZrk@YGZAg`8*wMn4e;%xgR zY4MEnNC$ciquHu26D+{gUDp77KM>|u1VT$4--7zoYfX`0k2w_b=8iGX1m%#+oG&$T zzWU0e@}h&joaL}DU>nmabpKCaBG0h+H{e`jSR$9-irRqyi%>a1~Um=M5#b`GW^4|K?p|2#`DB#u*v1wY%<|1glyhuIz-5D-# z%5K+taXZi`s(LW*d>mdU(+2wdRBt%z#}hw4j^f-)m~5{iT=LM?<-r5 zN;pV6Lz0xiE5pak>+igNnY+a$e5IEf9sJmB6iwXn8&e4y*%x#MGCyv7RHT1VZs2O` zKawLW6XWlHAc7B{AW2(pV2ojIw)FkklJMihY-RFGSzKnO`3ai1HSF{j@G0#vsr2U+ z_5$Au@Wo^JS5(ubFkv64CVo-5`xj=cLq%!9?5UX(9WyDCblTmUCa%Y z*13g(k)(`Mz9g#z!txD)gv%T%0lw2Mo4RlU>@hdx)v~tnckqe_$KlWU<2JwJORqN4f>VRr~@e znW~^+uGS#iZhdwm%8NY_wfHRnYghFL`2OdyfCFp79(~9WC8@tAvt$w}^o{MT6x5yX zZXt0jHX9({@gGK#wg=vh{lJ-T6S&8z0)`tfNbKmDV?jPvb?B5>g+yz0gcsVi4Zhn^b$$eNn$(;vCzgk1)j!xZ!5+=z?c{2F?|5zS+W!HUxDas@Rz2RC^ttEUZ@8k*<^87#r=UvX zz3{Q9h?DeEQU`J7x@dsoM{eFj@a7>Bcs$uu09vQul1W6%Yc2Z__UsT}SIt~fOTxm> zK3?@&AA76(F8&1lv8Pf^5`wSCsKjd@QOF2YqCr+R67g#jLgUTjY>cuQwu?Z^_~t68 zY-(?nI0cs#4P4gh7Xl3JA!WzJ%q!cCi^R+tb7wVWwv=9ti_Rz5zW}ae&mbl`wD4E? z;1y)K!KhvglKA6y8L$oY52!$s&!=&qDHvHx0m14`0YwVpD1jr&lg-9dQAo{pT2?*K zk~c1X8W<d9jEu;?;>_=^{nL<6b0eWffL^UAUS8HEo4|W)$sN#K9g|F)au4};lyM+nWJWO4;KNJVQxKxr z=`FxCHld3|_&F<5TCF!*=gJPwI~gXi1eZ9)qxa(2haa-o%q_gTc)q$NB{SucOj8x^ z**IAO2jK24H$JgI3?r)>fzav=H#9`IeoB$zPCWMzsXw2)A7EoK34pZcwj32E8y9e+O`hg+(K8y4}$ZRFo|?^ty!$N<>S~_gMpU1y5@*Z8 z+0wl%NKJ98{NXBPYgkXTB85V$5u`kwLF<%Rw(fb-5|A|Qop!Z+Vr3)XOb8~PpA?dB zw>YDTw;Z?Mpz<7ZsO}4vIARp3;E@a=($oT`2oBeW{fi_3hS@~e%nFyN0F`$W=~%>ZDM=q|&0 zskcr#}nT_x4v?ANp=0KE%U z^xIhDGXvo3&bF+zr}VbOtjo=x_z(;qoZNm*;_WeE09DJbw#uud&A8!OJ2t2mG?gH$ z$}%zP;NSXVfLZ;O9h*;Y*ziIg_|LaD0CYO|mfx1Y43Ro$=|Ke%Q1`dyCMhf@w>ZIX zzE(>uPd32&$tp;=WP;tyOSYoV)IJq5U1w4+1{8eU63GV+D~xK7DNj!cRAN4uy9oVW z2t9lO_9KP2sUw*~D>ldoKC-(PkU3JpBthy0{mv49R6F=eZ0S%cpa4exGK$yK40ygI z@4t$^)e~#fz=!b(_MhO+Wfw-jRfIn(lk!cOX*H>?+)U%ZmSRD><0?y&Su+yIZ{AX5 zd9Sy%%97wH@s(5cVn~xMQ zH6Ldii|8V;p#{v2?g#_Yg#$(eVFfnJDgAbeC5rqY(~YPBfZ)=& z6u~HufFT*F3EzvtfM?BY0&TIrY8rXIm0L7^Y;<2}& zY)s~ItAK!MSeZh&f9jag4zBYe6f`0A56~Ox1~j(KZ2&UaWk5>*Q}^J0bUsN^yrDFk zY}K@@yW&Q|S+3d@WV%Kv8lcdvf>9>4-Fh27!FALjNu{)6+%)8UGVj$0qo@jDaAzhxdziB_hCkmTJlBrK9YbLgOyw7YQmI*;FxcxRrDLf%>p z)^(MrEjslW?6ZVI68-)|1ZkeW3EFF4Hbpf)Er}Yql- zFWK{3$veL*v=GtD&)Yt~ec|3ik`6MK0r{qvKSYFZ{&;sSo)p+N!u7Im$bYO=si9;- zc*j6?Lbi5tkM)IL9`;c{I4(8tcjgeN(y$1SM@a8`k-l*Lp$3p|r>TLCp1zH8>sPo? zRw);8iq;E>depOwbdE8xpO7&Zn!2$W9l8W*82|z-^fC8;1Bf4}OWi#0_YTQDM_S(( z4?31}yQ`E|!Pog_NXP+`@G+q9aq};*pC6tpO6)iMLm6f*qrJSNJ;&kyLRlf^NI4I; zT2pHvW5u<7a&R5k`HuKm7IDTos{gF8tv9vtD0Ff#VAz7S3zL#=q`uQu&@3ObO+Z>YqN-tCT=N1)$LR|C#;bewF%FIeBfXXO- zPJ*;kT<0}RX(6m%Cr6lNzdkBUVjI$<8Am^e4w+i5@!rYXTe6Xl^k5O&9`@DE6Y>cj zmk*4tOO$T-c~op;K9GGS`x)^oJs3DFQhEoRmrdLzBm>O%*vNC01KdArsg^%-o{+aT ztrd0L>M7`OQUIiRODEXPj~S<3-h2PmQ<+ZAQ7sHPs`E&Pz@%K+>4odzUW>&ZwrsB*^suBalHXG^&|{HzCSJ_8p!Tb{3IP5|g; z7EfO5vV_(?$7)N32xNxs3Zwm(yRua{0_$6U$0vp`H*eqmCM?nID|JB!4ld^2tMlk4O^KdDS0L;Sz&IjKDc`s}vePl@%gWjn zkUKUTEIYTvB%FA%oY4idP7EPQ+>=(3-E$bT4fB%u*pS}3N)ipS0EB7$$ACb!*VVwK zN=>6jKU*`L_aIwRrY*-j1~Gc%XNG#ENWReNO0pGd-}C(BT_3hgyi9a$d7IxLi}kfh zJud9W4kjVhNPGLzc4#(umCm%beTcN@v5W&~PqSzcdDHbyw;8Prg+Z#5M$~7!%DEJ7 z%U$}}0r!M!T($p4q_5^PQ`_Xpoo7V@l2lgHeE5Jxs!#@6;))Q#=8g9+01KDlXJO%X zA2)Pofey&}k_V*&|yc?vOo4!IjL4?ZEp(nS~YQ z5$T}9RPUQ0DsN1Dw8}In#vw)OcOCT#$(Rl0 z0Xej6DuV3V9gm<_+(PMG@v~PHG&lEP)?oW5Ma>RLa=7N8L!@Bs#=06+M}l zesK1qlhn__nfI7+=1i&ppoOzqW`R-l2sET~>;)B?ayQKhljGGqTa7_AuN~<%C`&l@ zwdJsg)NuTotNCk|1QM*+Y~24q>Ay?FF9fPH;jfd6{F|KB?9%tKZSrz;^ z7pLE1RRJNyy_z8;{JJyIkRA&z4?wDO241)j)oJ%0->gfHU@$AMy;@#!;L|Y=I&y34 zCZt#eOuJ8|8^BsHj6K|o#m(HFWRc;)j$+h^c!)wCeFl@}@L>NT-+|UBJQT zUqd8y@Ye@IX}vYpfz#m6v zk9HoFEmNGjCK&ft361EUO!+v6B!$_g+0Bn&Q_JC5@e?#QZ43(>M&>cFG2ne?3)tu` zy90zSq=MUq=d_04<-;vZP^yF z9vHTkxt(|@TS(gE_N{EmBP%y^ITu`RLC@B$1uy?5C+xvpuftDfHImBV)oM74BJ`{J z^~OaYZSu5yac87!^dB$|_}8!ND9Y~zr+I<=BctTKR=2b(pSB~iwzR4T+MTkjxCna1 zzG4(O&n}@J*c6hWJ$oeOT!)CKUh`_xHE1S`O8g7ei;zASWkLPfs zC2q>wBk3-4O9-N3t+xtUnlB$clA;o;b|r!avF;dOP-Op<4f8i~9z>gY&Ydy3u+~b} zRw+amSg`uvo@0eBaypjyf&PBVe9BfpD$DB1IL9V5IrmwSByu|QJFDtW|Bw>?l+MEiCaqfk!PT6}(JaRvRHxhOf9p>)4 zS3HhJEV1R`e99}iXi*>GU)%FZ^5`^=K})b4t5c%ixPMq zj82{4b*FY&&zPvvp0Hm(%%KD0GZU`c$0wnpr_gi84C#%d!00fPBULQE1kTbHYcit_y3M@b|dDnTq7z}1`!0TwIzNHTtkhXhCbHv}z37g#N84E1WX+TLFfTWzZ` zjc^;!JFmmr!o}ALOJE7|ff-txUYJg1p$qM+YQYcC4X64DISNg_!X@^ebZk>wA@QUu zfnG+oBPBtg3T&|=xh#)9!0DO2@Nm`4L#(`R{wAq;d-fe0lWli0A?vr2!!ognQT5eB-fpNPS zy7cn>5|PqjPv(2i@2}%uNxk(PyAmrsn?fJ;B=RM!GL6%}1kCU?NUGYYF%TP`)?*`I zf|9uStB%`i+YjT03*v4e*^{E>@fOEZd&v|z>=>VRV(8+|(wh=XC88(^8LF8Mct=GpSYZks$&w`#poqP-@~hXnyR$Ozs|$g(vwf zOe@Za$?@wRGKRK3O@Y23E(zF?o;@3yozguS=r8DFi?zqRl1fl&N48pta%~68>pGi< z8h@a?5J-_lLLnh~Nt_;6?MTvTxF;YRRQ;apqDoxlJ)DPPjMRfp>;kiJjMcAeL&UhI z-zcw37JHLKq3@Bl+>s%YpojbiJRA9*qWZ|fWYoNHWyprrV7?6925*M#gxmLQ@OV+~ zW!HKF-Cs;UfZSqYfxVjeyS-(`3&nUL^ICd(N>Y!8U7dwOD8}%9m$8Np-@D!}hm1Mj z0YR)s-seAAO^L@uV`UjF8uy4({sE{~RjT_{%Ek*7XdJds@{}Z#PFEWY{|97pf!nXa zisV+jtbnY-VI^F^M50PUD?^qOL*E|qvb1qKvF>U-y_KBt`rd52%~ zMeWCkGZjbgawL+soP(Owy)Nq~*{F|M=A5Z-c**YvhuI`i+yr-__fON0*ywhr(UeQB zSk>}A1CLbWIL=fBMPSOdFsEIy&1_fjZmZ5_>k|h&gl(Mgv7P7(BkEd{?osB zs;mmg$|vG0$q)(y7q6xWvneo{msI_fXVog$$y>Aqi?3>VjuzwG;dzir0V8RN;3X<= zP8Qb+xBcXZ2?Lc+*SH`pa;85JeZv#7sMx3Ar@XZ z#~V+Q`?X0>CnJv@OSEt`bALB}QiF0Y9kr*{4bibTRHDB+vM&A15uL!eSFgYH@Gy2d zYX$k;cm#D!6*$kw7Sd^)12F#lpa^`JfpeMHPHpapA6v`e41tN9UUAhoTJUm@G#fd) z`b&^ZPbeBZgL=dUZkTk=b}p!5OSK^>Fm5OXcVh1680&{tVdq+vxX$1M4qu7FB#a!( z6pK^TJ7$`HmdAL}6XJrHlJ6-p<<4J;K7`CQ2RQ`MK@}{=zv2wXZ(o7>%PTV>_}zRQ zlCFtC0iaVa#Xj2IZCT>_+J&nW;ROZx5@DL$j|}k=bxArsnW`96(HcE$j)&$(De4jQ zqfc)NoAmVAHeu|#E^|gIbYv{9oK8tlV|f!wqTj7b)Z~8Tlpwj?wk#H5@t{M%;#-nN zwNo}R{SxD{P~41NDzW&k5mzP0n+7T(Y^O$%Ti2G3fewe&zVwtGZ)w^<0gB*YX=TdY zdO5-}Ls`A>RQChY3&l^#_pdi9mWv11I`Cu=)|95Fv_gh@{9YQI)Hzp~`Ts zP2-ceriIj}`-pZNNxj0d(k@Urp|ZP+FrOG~BZ z_*H~}EmTsk_r1~mBqgzhm5s_F4ivA}Zbzz$k&>+Ah>X(=n$h*6Qv`49{#A>X4T!s9 zqqdv0=c%kymY{2$*eav&!?&OXj6otGzv7|;2n1;29BAFY>(_}nMQH4aIbm)G%kMKd z!-mQWdIFMZV|hyx63V2BaH@9>_$3e#>Q^1Jl@w4f3JMG{y_B{~$7`r75WshfOMT2BBEO>3a%7YXLgl-eUF);(|A6ZEYr&! zEvWs#5Yiqp&5;Nz1M5bH`rTj$>6`}~47&LCcCQx6cQQ+Y8EaAoo? zTUA(wLzbkH0~G>gXshB}o#8#^VZ%j!EXxzscue+nr(?u8MTbG+rrZ-UuIM~=j8dn1 z`7ejzI}+*)v%VyPKXom(>uAVaq_{pl`EKJJ6L4bkd=-3RYQGLXAf;Ldl0QsvrKpOx z?D|S*bXkwRkM)>|daaJhDKCgD|G|9T#7d{M*^&SBL5ljNN3ki5s*p?LIjl06 zB9vfj7$xy-Ux`1G)%e!$`%mX9{fTYCAw#=y^H)Hp%9CJ#;iFPX%b9R@Cq28dx z%`zAI$&Aq}G-$JYJCIzz`qa@`5;t#EdpovEROSm9R;z z!6^Ukzaos75AgalB7@@;*xl)nC3>8vVC5!;MuSQe6<~>_m$vWRs=FIZp%#h#MD8c+ z6vnyS|LBx4>w-eDDLC34&1~gT7Xk* z>9{@CjS#QSsH)O;vpaP>KbSm@743WpU!phIjHwf;dBr?kWuTM1=Ees7$^ERS*SJT>0$s^RP5u`U52TM$8KSsTjcb%%FBI8~=EXixs=<;C7 zzE<`#IF29liH&uU+(gY6FA+)07d;oSC`T9%T?|DHe_U#3YEcsRV4Tf}mtwl1=8nws zCz(MqRWBlJDLswfn9t+6C2PV8f>1`Y2#t!Z&VvUG9Ju3ufcCg~DgM1R_m0j& zIf|)$>Iz8Crz_$f+L{h*O8S5;hlR`ck zN!-Fm$X-Ylq;)U2n-43{>0wfpMlHD49^XVveej#q`;woUFRIk+)s2~4C`{pX`w;`% zZr_ZJe^%mmRc&M@`ZSa0=k#0J#P3iJvm|GXXghq8La}Q)M*{2w@5BwUGQE;L6P5f+8cD-hVGK3i`-@sCWPwL{|KpG z)x}NGNmPcmKaqI;`8)Wv;s-RxNMz}kyAF`{&Jw3pO|xCXw*a}WN$3?|s#-GWB}N8E z@CKcH8w?nu(Ri%DEqpaeR*pg-Or-p1^uA;y69m4AyC)<1HlCivRk}~@K)CV0@_;sEKnzTYP7q_u47M&9ed4&+cOZL7`oqyp7XB9Yey23b0l^#bZ`3d+cp`LgD+b&PWH zkP!Y0JeVBgLJ~$g-P!B_1O}B$C<5&a4;xwcck!?*tZ(aw|nG$PZET4heX-oyKB=z)n2rJX|wD1yI zv{n0{?p>%c`qR`x>nhXkcM?K6|5cH=Hqbn-GqDh))o1MFhmdu^9p|?GMdCSr2L+a4 zZWb$}m@Ae@%Mx?tf6!Z^uuz=SsQU`XafhV?T|Cljf5JRR zo%`y>93U9~VE!j~=(-L65PU^LG7DT*z9Li@)BnG#i~mz+{NK`IF!lc`IsQNY{x_Wg zs{aoFK>iN^{x@Cq|Ho_n2LK|}0Eh?#AqK!82oV@UIBWm`fr*F#5*jvYS~~jsB1#V! z9vQH6JbWT5rt-|2^Z!110J;Ih@n9+YVsHIyI}RM-5lT=+4Bh;*_t6u}bkdg7qtUBA z=~1K4zwVIakyX`H&F?L-AbFKjY{$3X<>GpPO+WS5xfcp^bF`VUnK9*hP-DU%cD^8J zSE*N71>=<+sI07x?P2o2!kwoxzNyWKa{Jj>Z+j~|o8fzCa=>;s$z}XOD4$!nFKAy7 zW5DlF^J=y5gGS-`_zT_l9D#A^?%}o?F4+pV1y>vU*jXjJJ+~_AQuJZGN7am=UxU{h zB+u;fqVDuFZhl%vW=O}-o~SPHb9dgKh0Q54)N&YfG}xy%e3LvlaTQ>>wY}e2=lBjr z&un(^-t!*-eYrI=FVZRx*0A4FU7z7M4ZDjq@}prM6hA<`83VUYmeBGJk)GEziTh<_ zId5l7=)cRm70y3!7JZR(0ve)yUtHOe=uJHID`ZQBYmV)1arJ|G_Oq}<<1dy^tKF(9 zJQf`9*cTX1*0KvAkK*v&frAhJXvgzl9d4~fKVmtstGC26(nrTHw&1slJD#9tM-hG!-klS$&o21u~RY}*zr5|3uq950@fiJ(q;x~Vp^Spmu5rB`U1wo*5SR*Vwfgu^N(bIzokk4aGWws+hy*Nm_-&O=(#e7 zPftVt_cCF*I(1rc&PT*Bb@hJxw)GArpIzKV%HN_kgQQhsW2^LF<2l++3(bu8AaCMG z^7&2q(Lh0I&wbJ}Z$POYXarvED-QvHc5Yq)Sh<;ksgZ24=cVJ4Up)36mLCb9IRiy4insmiVq@`c$A?LS_B9PU)S z=J9zl`1xbqQ_gp^gQ8zd)?=%F7JhKgH3hCCvhjmQtil9<9K=5;Ffh6%RVGb0dCR{c zR`ncUdU*S|Cy_A6XSnGqg+~MO2bwdQf0?Um@7>f=&+ttCkxB0*V^W$mj3rTzj^;)J$c4dHZ0q;q%95xsTHZ#m%bYE+sK%FHx{RucE@@ zI$M6RJ-sPB>T42P*|mA~(KF`&rTY&+*M)N%V>!ZW(Zc_L7fh1d9i7F8sDPa|??p1` zn{>O(p4ixe+$+3K!rHk{@}8&VU9(yqhwxFKqhWy()g<;v(&!hk!@d8)f+;ChKRt?> z*V|*ya&pcT_0a;Y3-?%==2KNDuRLvZip~utj(wJ;{xdWEm1Dn{ayRF<>g1v3*F!3>-^1jpTv+nT-4{N;?7qb{t*-pEENnZLX3sI2sG8luerTK>+;Dtdl+BXq zKiU)%MO$24O_&eAfv!yx?K83`=c=l6K{ratXO$)`-c0kqv49V%a(@LaN%RvQgdD{j zb(9~apvhTPG4R2Vo)lzFTxZyS5n_#k{R0-DPg1L$U)Tu@ZTB!$*9$#OajtmQchgOF zc#CflkD||PTr?HyS*g9~O|Ejm9)zK@5dB+vZt$UT4U3f6{5d`+s893tk)2V8kL!g<$TF-jYeXyYz#sJJQb#y?&&9e>-)7{s1E>W8fUqe?gp zwUOX-+XUuaZ!696-129+K`rtxPIBj?X9W9znw($TY6o&N<8M}aiiyQ1Rm?Ttw+)@5 z8qSvQnXH_6Ushf$`E5cHE2!c7VP^Nmm!#5Ns6(tO&vL)res@d%O1W{&3nR^FD27D% zdq(aD!k5YMs;ZuFfe9b7Sn#`&w_Jitb}bpyI$$HTbqHdi@hj1MM#aE+E=z}Un)<-A zr!5w!r3_=cep$3NPnV`TE?U}@&dZ@ipEaZ8{rke~_Uk{Ib{Q?%7 zA->g+a?B*zPasunc7-S7hh26X<3~YZ=!a7tYlO+;|Exys4-+}uTb#7S)81K>lxFzE zRK6(IKmQf_M4_zgoMJyZKkLJ3{QY}|I1ctuwha?I%^e=tylKQYh&5B|sBhMxdUcMw zhSLa-C(R*Z#fsN_jGzgLzZ>=}6dtLQa>=&(>dh72L<&__nm!n(qQ83gYLv``fq_pj zTT1f|^vzq>;Wwlt^&)d%`{KMvEi*_{MB@KY6ZCEqtf2LR zI@+G4>=u&W1YQnp4b-ifj9pLn>BUU4A*{(4}Feyl!qQ9&?Z z6m%p-k06v-km7o~?`O0j`qTlO89kIMY_2;t579Lql_e zpPl;~+BLP>Kta*aUFrKn9kt5h4mZC2Cfu@yBmO+2c`(#fdvSZ`ft2??OxA6s{Er{z zve-DD+sL4FqPDPpyE<-U*D0?{i&`KU8k>p}4#G1qd3=)D`Bhe%+9-^ed&Y8$?k#+y zf5S=+f12g3Nu)JD(2-&f6&a%QX~;LDH4D&*qdjc#cov~gA0aF#?v)DJ&HtNctNw&M zkD+Ns-S}lmwcF4^3gwf~tcz-x7DFx5t+wCy?zJ?c zxm@|nwG^TG>M)Bo-mLq_pWzveeWBtCja4@!AD^(iyiehf*TW#w9>&lHJUAFb$*R{Uvg=RQc~3_qxGBtP?mp?DHS)lP~C z%vRdiJf+iKGn3&nVSog8U|AQ)RfF2BL2N}VgGfT*-%K_2yV8lUC;+sKG19fogaF*>+Y;0W9F$lw4%Y&%3x9km(ne4!-*BX((l&vT1kb}?q zz{kx92F(GHPoISx8iE1{@g3Ss_Eb>gMoqJo5g_li;xu~g*LsD^_iYT*EtiXyD?PH z4)(~bcvZSv@Sl)xZ(SFcyu9k&B5^7F`mCQ%%yoD`I*JDTG^QKAfjB~i;3+v`tdxy* z)X&J1v`{_=cNS>XYH%y}o-xI-Tn}`3dH!|>>u-GtC4UY&=9J>c*R(zO&RS<|9QkZc zDU|%#jU-1os=ZG-XS&t`lBMR1c#N#v=ZD8@OOm<|x$}w2nFTnss(*xXE3@4^k^A!o*=L84Sm<0P#PR~=FpLlarlaa1;^0Q@F<9_OGtnM*WetP#l%=9b4 zZ&vPv6RdYTUyUei#AQ%OOso1r&WK%(GxXjtM~QNhH0as=6@2|!5tKd!=w>PPmL&w-}^0N7|Zhq)H zu)@Vt;PyE96ozlqvKPH(dL*Q33^1I-3EKyVR-=Ps2fG6>m;)cJ-h2@eHV4n zE$o_gDY8h2);S1;u3B$qqwK#0b35Qwo~n*T1aR!7Tx_B>0dvdi8Sx?fzd z&|-+->!*=#Ji}$WNWHAh2^j}pkv!vj_H^M~YGX#+aspR^!gBlD2@Ma@}4cF%eK ztf41Ab-Z8l?Z;`Rjb>eZPJc|r>Q3K|hI1QXOR%_-vqUxm^lyIrEWS?Kc*)@S`u=Dj z#kGqT-q_vyoKsY-J_9V;7}7u?61Ycm|DG}KKC~JANlI8{MXYuF8|Yj|5?P;1$)9$S zSeFqwQr!#hb3smkFC}IG^~E@4Urrl5oLQZu%<}VryEs*4;#7-EJ0=w34i= zm>k8dA>zru%x(cgwGkZpt$^7XdzPQZ;hd@8q#PR~em=6~_D3AVTi#))PEdbNkxTlp zxhRD`GyLZ>&vU6;iFcrC#`ABc*=H?ew$xtIhdv{z4P-gfvF4X$``TUeS15&@>}9!p zEZ({bcUs_wIm)h!;yNt@Hl%b}um+ZR#C|u!OD9y%WkfQ^u8er3jV<$@K%#|U1;3Mv(7%}e9$YCCT}W%IjOFj zGt8I@c)xsyNnEckeeSETjwKIkQew4Bx@;|EtO?zEn&mY2gcuWggGqeUr*#p2xQNT- z<CF`+S^dGSW%)vULxyT0Xy*lPtvvrT<$(63h*-MGlo?c zpCi6oW?M<0aEQJ2wH~?cZ1C)9+ijZ*?UnK?T7zQd=eMN2J!~%>ehMd;Qhd3$!EgX; z5R?u`CEiu%3hzx;Zv(K3f}RMkc>+s5Wvjh-Xv+Jd7Fl8{ZYChU&LAy^0nda~Xm4 zKYA)rQSn6lIV8}Rk8YO!l#l7RwB<{XyeOX-lfARF)@l?M5|A?}Zb&{Ek?7deJ$FVt_ zb8KZLdyh~kWOHzkRoNUn$ELDJR56~Byh7qrN-bYbR=XCYa~@qYihDKUCA#AYa7bxtEh*VW=% z(G0aT!peF)!5kLL=|rjk7ZbwI*b|`>mfO2PUH!EgA&^R<`Qcp^tZ4dS)UB^#)zk@ED+qul>%WpyxLoDQ| zKXB?CF<{v1Cx;f!pS=;blhsntOff5E?!v!#Vw$?b!j=k?w>OLh-ZMJVowr;QQ zkd{U*STy55ph1sD$5EMy*@n%|soBB=1xR5MYd1H^Wn7Mmnt7d1{k}b`O&W{&3bt03 zWr^q?xdGp6H0m_un=gFt&!;V4m&ldN3Ts$JJ_HXT#S<;kLziW|+V1JgW_wz_)kgs8 zP5yW@k!A7MK+0@M-YnT43%bse2i4um9JpCN^|aOHV2lsT4Ils2w-v$v+f;77v^t}G zo54lL)9ub@rj-giF%dD}*{bj-hWe{MpRNd6nobVEL{3bEmm7}$Bcd#8kA}tWhH&a7 z2U?w8A8p1T1IP$PjNJ9x{=R#mt~vauDh&b$?e@t2=X=aYUz^X@Rd69$+MkCh;oND@ z*%JfQGS2#JS)Ir-YHuu82qEFYIB)FP(9AHs`u+6NqH1)fZW1ehmAC`3**c8Y`3w}x zcE7#Nk^>89hYx$Te1h2Mjr*NQ)WfROD2MRg#z@IHL}2WJ{g4U<35qYS@~*8r7A8*a zb;Hsl>r{v-Bdgg2gG7qGqfx^EKAigDIWGTYV`! zE{ceRg9l@_a>J~2k?y6QiURzKBKrW{XP z-MFMbEO$=#_K6ysakK9*nV_&Y_v4?N-ss@>$Y{@Jm@#eCYF`mY%5^0|WK9WZ^Qu(H zMT)~bii^95wD8YzWci=8#H+*D)Cx9LlJxs^PLJk-mJ>=!mOlDFOr^7wi$gdtE> zZ(|NQw#!fI@v)x_t*ZPY>HK9_^e8_j4meni%XL1KWK1-KZe`9U_a@EV*nM65AJGbf zG4g!#H0lGkQD(Y-uhDdv?JSA8^50PjF4#-7X?6K!kG(b6SnbSGN*7rkb<@YLpp=EG zAxq2xinEJY*yaDb97Slj*d>xi#+=s9(^f65yT_-eKI5h~U*~9$cw<;t`orsIZKe9( zpC*Q6m7RW>yS&KS6*B9C8bo?3Qei67W_4$y&HA0+!&{POf}Yk>e}A7oNPOSmw60p0 z9Gc)1llw+bnVCCO^SPE*+#|O7>QiEAdC( zNUjg*stn*{SVf5(C5$zW(e82Lx`6(ii8U?#Xf+;~k8l$};bT-jawSuX96j}7=HRPa zEqj~nNjD;r7g9)PLaEFRiSG@2TvDUF=O!SB)M66ov3+U+sld+!Q71FZ9*xhEY_RsZ zy7c!*HqqQ1I*t`STuV~DY$kUSvYv3sbjXY99RdhF*%m*0sv-bw$HBj=t^wNqjz#DN zesEz5X$LS`_zDW!@@4)`y}^EGIeV^b7L7~Y5PrRQ-$*dUu)_J&)a()l@)qmxACXXN z^eh<`HkytI0}{WM1X+JLcw3>6EnJQi=)FUO z2QO|F>1LmrcRAlHD{B+GtaM|2NPAH(cx?jH5o!MXYX=h@5+eJ$)iEZQLKfHAhWW^k zVWJkB^|L|q=CeiQN)$m`pCxM_#X%n+^MXS|b!s5qv8 zlHpRraIx$KonzT${f~&5L~FArXxNeLkXKoBr%Augg!CS10{^yKgeTocUd+D@pik|V$nZHRNGXhXjmvEYf{OAo6uKB5osss|KU}7Kr-^U1x zjCv4_UFmO(?uyn6yt?l?Bx84EHJ%x7B+{ew62Jw-OC`YJv5KCB7~mpJq>? zyYleU3j;<|(JIBlUCyK+7NcApJi<8M&kBK9HFt2?(w83?$T+l6(@9XH`}p`p)3JeK zz>(|lSCtV8-J4e`K3QXDCm+nTaqiL zdW9>6#}-C|u-xviZA5O=q^mN;{TTbXL!MumXj*#lLDA1f#JZLTcuBR6ag$Wjmi(l^ zSy75-$9#{aQP-O@yVv+^>fe)pz_!|3r@#HpzLN%@3b;FeQ%0|{PQ|ZCJRdE}*-(%P zS>f(GzIL3Y8Bp!st-lytt(EHG@_EEBg3(g+hUJ9;c?;C*e2`VKk9?PCJaQSpjT9Gf zm_3nkv%i?|S6y1QsKtitv#YE#lU}vz(keR9`$c>!Nfp4zFQWK+I$`+Uw0}(H#gy8!;NvamXEyHO1b@Pe?R}{i?kp zI0uT3ZNDO;<@uL(UIIbSy=zSuU^NyT!I4mthJ9p2YDqqC(dOuOte!G1J4941^kv1@ zs$a+&bPI_YHHT+mmDc*Evj;&|1eSJ`5L{w9$aq#mSNWimx-@FKeanNwoO}1%gSv$7 zXR2&?AA!qp@olp}!`jLj{oz0%C-WpH7s@eh>(*AvE*H2>SI1+G{DmGP1yvIijpOl5 z_k2kF?TspXhL&iWtsJo%o5H@-T@j)pd#>5PExJv$yzn>etULIn)w~pXjhA$ zs_Dz#u65M|Qa2e#xZRd%Mj5Plp-`}=?4VNli#ov7x?74?4RKkM|Fg`0SP2Cs0AbyH z`&)SpIsS6N~>`kQe|f9v-KPj%2q^cWoAP zb{Ep79qMPh-|)4?+%9-VPrjIh{p8W&phP_FCyK{gZAJNz7kqHzO38Ad!4%Kp%&nei z8zd|~An&#NJ~s8#w&>D!u%XuCfC5axKI9&q4RT9Xw9Wn%q(73 z)^mvZtwxGuZ1Rh;3S@O2`Jp4dM04Vd;e)}$iObDZ{-HQKZ@V=ChqwU9+vT{$mTK0l z4TX<^mw{|IqpQHOo^%1TTn%fMujjH+-FNJT-+H;7`(t4x7DlPx@$h#p^!haX;0*DV zZ~(8EIo!Gyoc_Y3>A)TW-|GYL(rVy4lI}5~o z(=>=yg{Ri6Xt`uLpzj z`u%}9qyIMU?AWv7I&gU7(eMBp?vOrB6$}cTi~MdYWJaq=SG{h6OkC+pdu(7)?lPKlWL4NG655z1x)bF~`jDhBd)>8}i|{(UbA8lU zHtOg~=txXsatX(Qe>ar(WU0L3KO(894@{0g#W?6%V-|izw<_cKa;I2&HCUsy#un;i zW2Wh&l%LbCP3^`k2YCwlPF^raEtXSCZemEOOGA{+z7Q6|caNWPL-{!r`cLb<->m18$qllEk2*-~eWjJo-QV z-}n;EX;m`gbX0;Jbsk-CZ_1+*x^5N?rSnoxC!0qvg0zQPAMdOusX9`!pV+f0z~dQv z=om8c+WejWKqr2b%Tvh8U446!Qo_NA9;6h$s%^Ztsg9%PJ