From 2d9782a0504d7407d553e5b1e08c66fd0d308161 Mon Sep 17 00:00:00 2001 From: Ake Hedman Date: Thu, 28 Sep 2023 22:23:54 +0200 Subject: [PATCH] Module primary editing added. --- CMakeLists.txt | 19 +- images/notes.txt | 3 + images/svg/0.svg | 1 + images/svg/1.svg | 1 + images/svg/2.svg | 1 + images/svg/3.svg | 1 + images/svg/4.svg | 1 + images/svg/5.svg | 1 + images/svg/6.svg | 1 + images/svg/7.svg | 1 + images/svg/8.svg | 1 + images/svg/9.svg | 1 + images/svg/a.svg | 1 + images/svg/address-book.svg | 1 + images/svg/address-card.svg | 1 + images/svg/align-center.svg | 1 + images/svg/align-justify.svg | 1 + images/svg/align-left.svg | 1 + images/svg/align-right.svg | 1 + images/svg/anchor-circle-check.svg | 1 + images/svg/anchor-circle-exclamation.svg | 1 + images/svg/anchor-circle-xmark.svg | 1 + images/svg/anchor-lock.svg | 1 + images/svg/anchor.svg | 1 + images/svg/angle-down.svg | 1 + images/svg/angle-left.svg | 1 + images/svg/angle-right.svg | 1 + images/svg/angle-up.svg | 1 + images/svg/angles-down.svg | 1 + images/svg/angles-left.svg | 1 + images/svg/angles-right.svg | 1 + images/svg/angles-up.svg | 1 + images/svg/ankh.svg | 1 + images/svg/apple-whole.svg | 1 + images/svg/archway.svg | 1 + images/svg/arrow-down-1-9.svg | 1 + images/svg/arrow-down-9-1.svg | 1 + images/svg/arrow-down-a-z.svg | 1 + images/svg/arrow-down-long.svg | 1 + images/svg/arrow-down-short-wide.svg | 1 + images/svg/arrow-down-up-across-line.svg | 1 + images/svg/arrow-down-up-lock.svg | 1 + images/svg/arrow-down-wide-short.svg | 1 + images/svg/arrow-down-z-a.svg | 1 + images/svg/arrow-down.svg | 1 + images/svg/arrow-left-long.svg | 1 + images/svg/arrow-left.svg | 1 + images/svg/arrow-pointer.svg | 1 + images/svg/arrow-right-arrow-left.svg | 1 + images/svg/arrow-right-from-bracket.svg | 1 + images/svg/arrow-right-long.svg | 1 + images/svg/arrow-right-to-bracket.svg | 1 + images/svg/arrow-right-to-city.svg | 1 + images/svg/arrow-right.svg | 1 + images/svg/arrow-rotate-left.svg | 1 + images/svg/arrow-rotate-right.svg | 1 + images/svg/arrow-trend-down.svg | 1 + images/svg/arrow-trend-up.svg | 1 + images/svg/arrow-turn-down.svg | 1 + images/svg/arrow-turn-up.svg | 1 + images/svg/arrow-up-1-9.svg | 1 + images/svg/arrow-up-9-1.svg | 1 + images/svg/arrow-up-a-z.svg | 1 + images/svg/arrow-up-from-bracket.svg | 1 + images/svg/arrow-up-from-ground-water.svg | 1 + images/svg/arrow-up-from-water-pump.svg | 1 + images/svg/arrow-up-long.svg | 1 + images/svg/arrow-up-right-dots.svg | 1 + images/svg/arrow-up-right-from-square.svg | 1 + images/svg/arrow-up-short-wide.svg | 1 + images/svg/arrow-up-wide-short.svg | 1 + images/svg/arrow-up-z-a.svg | 1 + images/svg/arrow-up.svg | 1 + images/svg/arrows-down-to-line.svg | 1 + images/svg/arrows-down-to-people.svg | 1 + images/svg/arrows-left-right-to-line.svg | 1 + images/svg/arrows-left-right.svg | 1 + images/svg/arrows-rotate.svg | 1 + images/svg/arrows-spin.svg | 1 + images/svg/arrows-split-up-and-left.svg | 1 + images/svg/arrows-to-circle.svg | 1 + images/svg/arrows-to-dot.svg | 1 + images/svg/arrows-to-eye.svg | 1 + images/svg/arrows-turn-right.svg | 1 + images/svg/arrows-turn-to-dots.svg | 1 + images/svg/arrows-up-down-left-right.svg | 1 + images/svg/arrows-up-down.svg | 1 + images/svg/arrows-up-to-line.svg | 1 + images/svg/asterisk.svg | 1 + images/svg/at.svg | 1 + images/svg/atom.svg | 1 + images/svg/audio-description.svg | 1 + images/svg/austral-sign.svg | 1 + images/svg/award.svg | 1 + images/svg/b.svg | 1 + images/svg/baby-carriage.svg | 1 + images/svg/baby.svg | 1 + images/svg/backward-fast.svg | 1 + images/svg/backward-step.svg | 1 + images/svg/backward.svg | 1 + images/svg/bacon.svg | 1 + images/svg/bacteria.svg | 1 + images/svg/bacterium.svg | 1 + images/svg/bag-shopping.svg | 1 + images/svg/bahai.svg | 1 + images/svg/baht-sign.svg | 1 + images/svg/ban-smoking.svg | 1 + images/svg/ban.svg | 1 + images/svg/bandage.svg | 1 + images/svg/bangladeshi-taka-sign.svg | 1 + images/svg/barcode.svg | 1 + images/svg/bars-progress.svg | 1 + images/svg/bars-staggered.svg | 1 + images/svg/bars.svg | 1 + images/svg/baseball-bat-ball.svg | 1 + images/svg/baseball.svg | 1 + images/svg/basket-shopping.svg | 1 + images/svg/basketball.svg | 1 + images/svg/bath.svg | 1 + images/svg/battery-empty.svg | 1 + images/svg/battery-full.svg | 1 + images/svg/battery-half.svg | 1 + images/svg/battery-quarter.svg | 1 + images/svg/battery-three-quarters.svg | 1 + images/svg/bed-pulse.svg | 1 + images/svg/bed.svg | 1 + images/svg/beer-mug-empty.svg | 1 + images/svg/bell-concierge.svg | 1 + images/svg/bell-slash.svg | 1 + images/svg/bell.svg | 1 + images/svg/bezier-curve.svg | 1 + images/svg/bicycle.svg | 1 + images/svg/binoculars.svg | 1 + images/svg/biohazard.svg | 1 + images/svg/bitcoin-sign.svg | 1 + images/svg/blender-phone.svg | 1 + images/svg/blender.svg | 1 + images/svg/blog.svg | 1 + images/svg/bold.svg | 1 + images/svg/bolt-lightning.svg | 1 + images/svg/bolt.svg | 1 + images/svg/bomb.svg | 1 + images/svg/bone.svg | 1 + images/svg/bong.svg | 1 + images/svg/book-atlas.svg | 1 + images/svg/book-bible.svg | 1 + images/svg/book-bookmark.svg | 1 + images/svg/book-journal-whills.svg | 1 + images/svg/book-medical.svg | 1 + images/svg/book-open-reader.svg | 1 + images/svg/book-open.svg | 1 + images/svg/book-quran.svg | 1 + images/svg/book-skull.svg | 1 + images/svg/book-tanakh.svg | 1 + images/svg/book.svg | 1 + images/svg/bookmark.svg | 1 + images/svg/border-all.svg | 1 + images/svg/border-none.svg | 1 + images/svg/border-top-left.svg | 1 + images/svg/bore-hole.svg | 1 + images/svg/bottle-droplet.svg | 1 + images/svg/bottle-water.svg | 1 + images/svg/bowl-food.svg | 1 + images/svg/bowl-rice.svg | 1 + images/svg/bowling-ball.svg | 1 + images/svg/box-archive.svg | 1 + images/svg/box-open.svg | 1 + images/svg/box-tissue.svg | 1 + images/svg/box.svg | 1 + images/svg/boxes-packing.svg | 1 + images/svg/boxes-stacked.svg | 1 + images/svg/braille.svg | 1 + images/svg/brain.svg | 1 + images/svg/brazilian-real-sign.svg | 1 + images/svg/bread-slice.svg | 1 + images/svg/bridge-circle-check.svg | 1 + images/svg/bridge-circle-exclamation.svg | 1 + images/svg/bridge-circle-xmark.svg | 1 + images/svg/bridge-lock.svg | 1 + images/svg/bridge-water.svg | 1 + images/svg/bridge.svg | 1 + images/svg/briefcase-medical.svg | 1 + images/svg/briefcase.svg | 1 + images/svg/broom-ball.svg | 1 + images/svg/broom.svg | 1 + images/svg/brush.svg | 1 + images/svg/bucket.svg | 1 + images/svg/bug-slash.svg | 1 + images/svg/bug.svg | 1 + images/svg/bugs.svg | 1 + images/svg/building-circle-arrow-right.svg | 1 + images/svg/building-circle-check.svg | 1 + images/svg/building-circle-exclamation.svg | 1 + images/svg/building-circle-xmark.svg | 1 + images/svg/building-columns.svg | 1 + images/svg/building-flag.svg | 1 + images/svg/building-lock.svg | 1 + images/svg/building-ngo.svg | 1 + images/svg/building-shield.svg | 1 + images/svg/building-un.svg | 1 + images/svg/building-user.svg | 1 + images/svg/building-wheat.svg | 1 + images/svg/building.svg | 1 + images/svg/bullhorn.svg | 1 + images/svg/bullseye.svg | 1 + images/svg/burger.svg | 1 + images/svg/burst.svg | 1 + images/svg/bus-simple.svg | 1 + images/svg/bus.svg | 1 + images/svg/business-time.svg | 1 + images/svg/c.svg | 1 + images/svg/cable-car.svg | 1 + images/svg/cake-candles.svg | 1 + images/svg/calculator.svg | 1 + images/svg/calendar-check.svg | 1 + images/svg/calendar-day.svg | 1 + images/svg/calendar-days.svg | 1 + images/svg/calendar-minus.svg | 1 + images/svg/calendar-plus.svg | 1 + images/svg/calendar-week.svg | 1 + images/svg/calendar-xmark.svg | 1 + images/svg/calendar.svg | 1 + images/svg/camera-retro.svg | 1 + images/svg/camera-rotate.svg | 1 + images/svg/camera.svg | 1 + images/svg/campground.svg | 1 + images/svg/candy-cane.svg | 1 + images/svg/cannabis.svg | 1 + images/svg/capsules.svg | 1 + images/svg/car-battery.svg | 1 + images/svg/car-burst.svg | 1 + images/svg/car-on.svg | 1 + images/svg/car-rear.svg | 1 + images/svg/car-side.svg | 1 + images/svg/car-tunnel.svg | 1 + images/svg/car.svg | 1 + images/svg/caravan.svg | 1 + images/svg/caret-down.svg | 1 + images/svg/caret-left.svg | 1 + images/svg/caret-right.svg | 1 + images/svg/caret-up.svg | 1 + images/svg/carrot.svg | 1 + images/svg/cart-arrow-down.svg | 1 + images/svg/cart-flatbed-suitcase.svg | 1 + images/svg/cart-flatbed.svg | 1 + images/svg/cart-plus.svg | 1 + images/svg/cart-shopping.svg | 1 + images/svg/cash-register.svg | 1 + images/svg/cat.svg | 1 + images/svg/cedi-sign.svg | 1 + images/svg/cent-sign.svg | 1 + images/svg/certificate.svg | 1 + images/svg/chair.svg | 1 + images/svg/chalkboard-user.svg | 1 + images/svg/chalkboard.svg | 1 + images/svg/champagne-glasses.svg | 1 + images/svg/charging-station.svg | 1 + images/svg/chart-area.svg | 1 + images/svg/chart-bar.svg | 1 + images/svg/chart-column.svg | 1 + images/svg/chart-gantt.svg | 1 + images/svg/chart-line.svg | 1 + images/svg/chart-pie.svg | 1 + images/svg/chart-simple.svg | 1 + images/svg/check-double.svg | 1 + images/svg/check-to-slot.svg | 1 + images/svg/check.svg | 1 + images/svg/cheese.svg | 1 + images/svg/chess-bishop.svg | 1 + images/svg/chess-board.svg | 1 + images/svg/chess-king.svg | 1 + images/svg/chess-knight.svg | 1 + images/svg/chess-pawn.svg | 1 + images/svg/chess-queen.svg | 1 + images/svg/chess-rook.svg | 1 + images/svg/chess.svg | 1 + images/svg/chevron-down.svg | 1 + images/svg/chevron-left.svg | 1 + images/svg/chevron-right.svg | 1 + images/svg/chevron-up.svg | 1 + images/svg/child-combatant.svg | 1 + images/svg/child-dress.svg | 1 + images/svg/child-reaching.svg | 1 + images/svg/child.svg | 1 + images/svg/children.svg | 1 + images/svg/church.svg | 1 + images/svg/circle-arrow-down.svg | 1 + images/svg/circle-arrow-left.svg | 1 + images/svg/circle-arrow-right.svg | 1 + images/svg/circle-arrow-up.svg | 1 + images/svg/circle-check.svg | 1 + images/svg/circle-chevron-down.svg | 1 + images/svg/circle-chevron-left.svg | 1 + images/svg/circle-chevron-right.svg | 1 + images/svg/circle-chevron-up.svg | 1 + images/svg/circle-dollar-to-slot.svg | 1 + images/svg/circle-dot.svg | 1 + images/svg/circle-down.svg | 1 + images/svg/circle-exclamation.svg | 1 + images/svg/circle-h.svg | 1 + images/svg/circle-half-stroke.svg | 1 + images/svg/circle-info.svg | 1 + images/svg/circle-left.svg | 1 + images/svg/circle-minus.svg | 1 + images/svg/circle-nodes.svg | 1 + images/svg/circle-notch.svg | 1 + images/svg/circle-pause.svg | 1 + images/svg/circle-play.svg | 1 + images/svg/circle-plus.svg | 1 + images/svg/circle-question.svg | 1 + images/svg/circle-radiation.svg | 1 + images/svg/circle-right.svg | 1 + images/svg/circle-stop.svg | 1 + images/svg/circle-up.svg | 1 + images/svg/circle-user.svg | 1 + images/svg/circle-xmark.svg | 1 + images/svg/circle.svg | 1 + images/svg/city.svg | 1 + images/svg/clapperboard.svg | 1 + images/svg/clipboard-check.svg | 1 + images/svg/clipboard-list.svg | 1 + images/svg/clipboard-question.svg | 1 + images/svg/clipboard-user.svg | 1 + images/svg/clipboard.svg | 1 + images/svg/clock-rotate-left.svg | 1 + images/svg/clock.svg | 1 + images/svg/clone.svg | 1 + images/svg/closed-captioning.svg | 1 + images/svg/cloud-arrow-down.svg | 1 + images/svg/cloud-arrow-up.svg | 1 + images/svg/cloud-bolt.svg | 1 + images/svg/cloud-meatball.svg | 1 + images/svg/cloud-moon-rain.svg | 1 + images/svg/cloud-moon.svg | 1 + images/svg/cloud-rain.svg | 1 + images/svg/cloud-showers-heavy.svg | 1 + images/svg/cloud-showers-water.svg | 1 + images/svg/cloud-sun-rain.svg | 1 + images/svg/cloud-sun.svg | 1 + images/svg/cloud.svg | 1 + images/svg/clover.svg | 1 + images/svg/code-branch.svg | 1 + images/svg/code-commit.svg | 1 + images/svg/code-compare.svg | 1 + images/svg/code-fork.svg | 1 + images/svg/code-merge.svg | 1 + images/svg/code-pull-request.svg | 1 + images/svg/code.svg | 1 + images/svg/coins.svg | 1 + images/svg/colon-sign.svg | 1 + images/svg/comment-dollar.svg | 1 + images/svg/comment-dots.svg | 1 + images/svg/comment-medical.svg | 1 + images/svg/comment-slash.svg | 1 + images/svg/comment-sms.svg | 1 + images/svg/comment.svg | 1 + images/svg/comments-dollar.svg | 1 + images/svg/comments.svg | 1 + images/svg/compact-disc.svg | 1 + images/svg/compass-drafting.svg | 1 + images/svg/compass.svg | 1 + images/svg/compress.svg | 1 + images/svg/computer-mouse.svg | 1 + images/svg/computer.svg | 1 + images/svg/cookie-bite.svg | 1 + images/svg/cookie.svg | 1 + images/svg/copy.svg | 1 + images/svg/copyright.svg | 1 + images/svg/couch.svg | 1 + images/svg/cow.svg | 1 + images/svg/credit-card.svg | 1 + images/svg/crop-simple.svg | 1 + images/svg/crop.svg | 1 + images/svg/cross.svg | 1 + images/svg/crosshairs.svg | 1 + images/svg/crow.svg | 1 + images/svg/crown.svg | 1 + images/svg/crutch.svg | 1 + images/svg/cruzeiro-sign.svg | 1 + images/svg/cube.svg | 1 + images/svg/cubes-stacked.svg | 1 + images/svg/cubes.svg | 1 + images/svg/d.svg | 1 + images/svg/database.svg | 1 + images/svg/delete-left.svg | 1 + images/svg/democrat.svg | 1 + images/svg/desktop.svg | 1 + images/svg/dharmachakra.svg | 1 + images/svg/diagram-next.svg | 1 + images/svg/diagram-predecessor.svg | 1 + images/svg/diagram-project.svg | 1 + images/svg/diagram-successor.svg | 1 + images/svg/diamond-turn-right.svg | 1 + images/svg/diamond.svg | 1 + images/svg/dice-d20.svg | 1 + images/svg/dice-d6.svg | 1 + images/svg/dice-five.svg | 1 + images/svg/dice-four.svg | 1 + images/svg/dice-one.svg | 1 + images/svg/dice-six.svg | 1 + images/svg/dice-three.svg | 1 + images/svg/dice-two.svg | 1 + images/svg/dice.svg | 1 + images/svg/disease.svg | 1 + images/svg/display.svg | 1 + images/svg/divide.svg | 1 + images/svg/dna.svg | 1 + images/svg/dog.svg | 1 + images/svg/dollar-sign.svg | 1 + images/svg/dolly.svg | 1 + images/svg/dong-sign.svg | 1 + images/svg/door-closed.svg | 1 + images/svg/door-open.svg | 1 + images/svg/dove.svg | 1 + .../svg/down-left-and-up-right-to-center.svg | 1 + images/svg/down-long.svg | 1 + images/svg/download.svg | 1 + images/svg/dragon.svg | 1 + images/svg/draw-polygon.svg | 1 + images/svg/droplet-slash.svg | 1 + images/svg/droplet.svg | 1 + images/svg/drum-steelpan.svg | 1 + images/svg/drum.svg | 1 + images/svg/drumstick-bite.svg | 1 + images/svg/dumbbell.svg | 1 + images/svg/dumpster-fire.svg | 1 + images/svg/dumpster.svg | 1 + images/svg/dungeon.svg | 1 + images/svg/e.svg | 1 + images/svg/ear-deaf.svg | 1 + images/svg/ear-listen.svg | 1 + images/svg/earth-africa.svg | 1 + images/svg/earth-americas.svg | 1 + images/svg/earth-asia.svg | 1 + images/svg/earth-europe.svg | 1 + images/svg/earth-oceania.svg | 1 + images/svg/egg.svg | 1 + images/svg/eject.svg | 1 + images/svg/elevator.svg | 1 + images/svg/ellipsis-vertical.svg | 1 + images/svg/ellipsis.svg | 1 + images/svg/envelope-circle-check.svg | 1 + images/svg/envelope-open-text.svg | 1 + images/svg/envelope-open.svg | 1 + images/svg/envelope.svg | 1 + images/svg/envelopes-bulk.svg | 1 + images/svg/equals.svg | 1 + images/svg/eraser.svg | 1 + images/svg/ethernet.svg | 1 + images/svg/euro-sign.svg | 1 + images/svg/exclamation.svg | 1 + images/svg/expand.svg | 1 + images/svg/explosion.svg | 1 + images/svg/eye-dropper.svg | 1 + images/svg/eye-low-vision.svg | 1 + images/svg/eye-slash.svg | 1 + images/svg/eye.svg | 1 + images/svg/f.svg | 1 + images/svg/face-angry.svg | 1 + images/svg/face-dizzy.svg | 1 + images/svg/face-flushed.svg | 1 + images/svg/face-frown-open.svg | 1 + images/svg/face-frown.svg | 1 + images/svg/face-grimace.svg | 1 + images/svg/face-grin-beam-sweat.svg | 1 + images/svg/face-grin-beam.svg | 1 + images/svg/face-grin-hearts.svg | 1 + images/svg/face-grin-squint-tears.svg | 1 + images/svg/face-grin-squint.svg | 1 + images/svg/face-grin-stars.svg | 1 + images/svg/face-grin-tears.svg | 1 + images/svg/face-grin-tongue-squint.svg | 1 + images/svg/face-grin-tongue-wink.svg | 1 + images/svg/face-grin-tongue.svg | 1 + images/svg/face-grin-wide.svg | 1 + images/svg/face-grin-wink.svg | 1 + images/svg/face-grin.svg | 1 + images/svg/face-kiss-beam.svg | 1 + images/svg/face-kiss-wink-heart.svg | 1 + images/svg/face-kiss.svg | 1 + images/svg/face-laugh-beam.svg | 1 + images/svg/face-laugh-squint.svg | 1 + images/svg/face-laugh-wink.svg | 1 + images/svg/face-laugh.svg | 1 + images/svg/face-meh-blank.svg | 1 + images/svg/face-meh.svg | 1 + images/svg/face-rolling-eyes.svg | 1 + images/svg/face-sad-cry.svg | 1 + images/svg/face-sad-tear.svg | 1 + images/svg/face-smile-beam.svg | 1 + images/svg/face-smile-wink.svg | 1 + images/svg/face-smile.svg | 1 + images/svg/face-surprise.svg | 1 + images/svg/face-tired.svg | 1 + images/svg/fan.svg | 1 + images/svg/faucet-drip.svg | 1 + images/svg/faucet.svg | 1 + images/svg/fax.svg | 1 + images/svg/feather-pointed.svg | 1 + images/svg/feather.svg | 1 + images/svg/ferry.svg | 1 + images/svg/file-arrow-down.svg | 1 + images/svg/file-arrow-up.svg | 1 + images/svg/file-audio.svg | 1 + images/svg/file-circle-check.svg | 1 + images/svg/file-circle-exclamation.svg | 1 + images/svg/file-circle-minus.svg | 1 + images/svg/file-circle-plus.svg | 1 + images/svg/file-circle-question.svg | 1 + images/svg/file-circle-xmark.svg | 1 + images/svg/file-code.svg | 1 + images/svg/file-contract.svg | 1 + images/svg/file-csv.svg | 1 + images/svg/file-excel.svg | 1 + images/svg/file-export.svg | 1 + images/svg/file-image.svg | 1 + images/svg/file-import.svg | 1 + images/svg/file-invoice-dollar.svg | 1 + images/svg/file-invoice.svg | 1 + images/svg/file-lines.svg | 1 + images/svg/file-medical.svg | 1 + images/svg/file-pdf.svg | 1 + images/svg/file-pen.svg | 1 + images/svg/file-powerpoint.svg | 1 + images/svg/file-prescription.svg | 1 + images/svg/file-shield.svg | 1 + images/svg/file-signature.svg | 1 + images/svg/file-video.svg | 1 + images/svg/file-waveform.svg | 1 + images/svg/file-word.svg | 1 + images/svg/file-zipper.svg | 1 + images/svg/file.svg | 1 + images/svg/fill-drip.svg | 1 + images/svg/fill.svg | 1 + images/svg/film.svg | 1 + images/svg/filter-circle-dollar.svg | 1 + images/svg/filter-circle-xmark.svg | 1 + images/svg/filter.svg | 1 + images/svg/fingerprint.svg | 1 + images/svg/fire-burner.svg | 1 + images/svg/fire-extinguisher.svg | 1 + images/svg/fire-flame-curved.svg | 1 + images/svg/fire-flame-simple.svg | 1 + images/svg/fire.svg | 1 + images/svg/fish-fins.svg | 1 + images/svg/fish.svg | 1 + images/svg/flag-checkered.svg | 1 + images/svg/flag-usa.svg | 1 + images/svg/flag.svg | 1 + images/svg/flask-vial.svg | 1 + images/svg/flask.svg | 1 + images/svg/floppy-disk.svg | 1 + images/svg/florin-sign.svg | 1 + images/svg/folder-closed.svg | 1 + images/svg/folder-minus.svg | 1 + images/svg/folder-open.svg | 1 + images/svg/folder-plus.svg | 1 + images/svg/folder-tree.svg | 1 + images/svg/folder.svg | 1 + images/svg/font-awesome.svg | 1 + images/svg/font.svg | 1 + images/svg/football.svg | 1 + images/svg/forward-fast.svg | 1 + images/svg/forward-step.svg | 1 + images/svg/forward.svg | 1 + images/svg/franc-sign.svg | 1 + images/svg/frog.svg | 1 + images/svg/futbol.svg | 1 + images/svg/g.svg | 1 + images/svg/gamepad.svg | 1 + images/svg/gas-pump.svg | 1 + images/svg/gauge-high.svg | 1 + images/svg/gauge-simple-high.svg | 1 + images/svg/gauge-simple.svg | 1 + images/svg/gauge.svg | 1 + images/svg/gavel.svg | 1 + images/svg/gear.svg | 1 + images/svg/gears.svg | 1 + images/svg/gem.svg | 1 + images/svg/genderless.svg | 1 + images/svg/ghost.svg | 1 + images/svg/gift.svg | 1 + images/svg/gifts.svg | 1 + images/svg/glass-water-droplet.svg | 1 + images/svg/glass-water.svg | 1 + images/svg/glasses.svg | 1 + images/svg/globe.svg | 1 + images/svg/golf-ball-tee.svg | 1 + images/svg/gopuram.svg | 1 + images/svg/graduation-cap.svg | 1 + images/svg/greater-than-equal.svg | 1 + images/svg/greater-than.svg | 1 + images/svg/grip-lines-vertical.svg | 1 + images/svg/grip-lines.svg | 1 + images/svg/grip-vertical.svg | 1 + images/svg/grip.svg | 1 + images/svg/group-arrows-rotate.svg | 1 + images/svg/guarani-sign.svg | 1 + images/svg/guitar.svg | 1 + images/svg/gun.svg | 1 + images/svg/h.svg | 1 + images/svg/hammer.svg | 1 + images/svg/hamsa.svg | 1 + images/svg/hand-back-fist.svg | 1 + images/svg/hand-dots.svg | 1 + images/svg/hand-fist.svg | 1 + images/svg/hand-holding-dollar.svg | 1 + images/svg/hand-holding-droplet.svg | 1 + images/svg/hand-holding-hand.svg | 1 + images/svg/hand-holding-heart.svg | 1 + images/svg/hand-holding-medical.svg | 1 + images/svg/hand-holding.svg | 1 + images/svg/hand-lizard.svg | 1 + images/svg/hand-middle-finger.svg | 1 + images/svg/hand-peace.svg | 1 + images/svg/hand-point-down.svg | 1 + images/svg/hand-point-left.svg | 1 + images/svg/hand-point-right.svg | 1 + images/svg/hand-point-up.svg | 1 + images/svg/hand-pointer.svg | 1 + images/svg/hand-scissors.svg | 1 + images/svg/hand-sparkles.svg | 1 + images/svg/hand-spock.svg | 1 + images/svg/hand.svg | 1 + images/svg/handcuffs.svg | 1 + images/svg/hands-asl-interpreting.svg | 1 + images/svg/hands-bound.svg | 1 + images/svg/hands-bubbles.svg | 1 + images/svg/hands-clapping.svg | 1 + images/svg/hands-holding-child.svg | 1 + images/svg/hands-holding-circle.svg | 1 + images/svg/hands-holding.svg | 1 + images/svg/hands-praying.svg | 1 + images/svg/hands.svg | 1 + images/svg/handshake-angle.svg | 1 + images/svg/handshake-simple-slash.svg | 1 + images/svg/handshake-simple.svg | 1 + images/svg/handshake-slash.svg | 1 + images/svg/handshake.svg | 1 + images/svg/hanukiah.svg | 1 + images/svg/hard-drive.svg | 1 + images/svg/hashtag.svg | 1 + images/svg/hat-cowboy-side.svg | 1 + images/svg/hat-cowboy.svg | 1 + images/svg/hat-wizard.svg | 1 + images/svg/head-side-cough-slash.svg | 1 + images/svg/head-side-cough.svg | 1 + images/svg/head-side-mask.svg | 1 + images/svg/head-side-virus.svg | 1 + images/svg/heading.svg | 1 + images/svg/headphones-simple.svg | 1 + images/svg/headphones.svg | 1 + images/svg/headset.svg | 1 + images/svg/heart-circle-bolt.svg | 1 + images/svg/heart-circle-check.svg | 1 + images/svg/heart-circle-exclamation.svg | 1 + images/svg/heart-circle-minus.svg | 1 + images/svg/heart-circle-plus.svg | 1 + images/svg/heart-circle-xmark.svg | 1 + images/svg/heart-crack.svg | 1 + images/svg/heart-pulse.svg | 1 + images/svg/heart.svg | 1 + images/svg/helicopter-symbol.svg | 1 + images/svg/helicopter.svg | 1 + images/svg/helmet-safety.svg | 1 + images/svg/helmet-un.svg | 1 + images/svg/highlighter.svg | 1 + images/svg/hill-avalanche.svg | 1 + images/svg/hill-rockslide.svg | 1 + images/svg/hippo.svg | 1 + images/svg/hockey-puck.svg | 1 + images/svg/holly-berry.svg | 1 + images/svg/horse-head.svg | 1 + images/svg/horse.svg | 1 + images/svg/hospital-user.svg | 1 + images/svg/hospital.svg | 1 + images/svg/hot-tub-person.svg | 1 + images/svg/hotdog.svg | 1 + images/svg/hotel.svg | 1 + images/svg/hourglass-end.svg | 1 + images/svg/hourglass-half.svg | 1 + images/svg/hourglass-start.svg | 1 + images/svg/hourglass.svg | 1 + images/svg/house-chimney-crack.svg | 1 + images/svg/house-chimney-medical.svg | 1 + images/svg/house-chimney-user.svg | 1 + images/svg/house-chimney-window.svg | 1 + images/svg/house-chimney.svg | 1 + images/svg/house-circle-check.svg | 1 + images/svg/house-circle-exclamation.svg | 1 + images/svg/house-circle-xmark.svg | 1 + images/svg/house-crack.svg | 1 + images/svg/house-fire.svg | 1 + images/svg/house-flag.svg | 1 + .../house-flood-water-circle-arrow-right.svg | 1 + images/svg/house-flood-water.svg | 1 + images/svg/house-laptop.svg | 1 + images/svg/house-lock.svg | 1 + images/svg/house-medical-circle-check.svg | 1 + .../svg/house-medical-circle-exclamation.svg | 1 + images/svg/house-medical-circle-xmark.svg | 1 + images/svg/house-medical-flag.svg | 1 + images/svg/house-medical.svg | 1 + images/svg/house-signal.svg | 1 + images/svg/house-tsunami.svg | 1 + images/svg/house-user.svg | 1 + images/svg/house.svg | 1 + images/svg/hryvnia-sign.svg | 1 + images/svg/hurricane.svg | 1 + images/svg/i-cursor.svg | 1 + images/svg/i.svg | 1 + images/svg/ice-cream.svg | 1 + images/svg/icicles.svg | 1 + images/svg/icons.svg | 1 + images/svg/id-badge.svg | 1 + images/svg/id-card-clip.svg | 1 + images/svg/id-card.svg | 1 + images/svg/igloo.svg | 1 + images/svg/image-portrait.svg | 1 + images/svg/image.svg | 1 + images/svg/images.svg | 1 + images/svg/inbox.svg | 1 + images/svg/indent.svg | 1 + images/svg/indian-rupee-sign.svg | 1 + images/svg/industry.svg | 1 + images/svg/infinity.svg | 1 + images/svg/info.svg | 1 + images/svg/italic.svg | 1 + images/svg/j.svg | 1 + images/svg/jar-wheat.svg | 1 + images/svg/jar.svg | 1 + images/svg/jedi.svg | 1 + images/svg/jet-fighter-up.svg | 1 + images/svg/jet-fighter.svg | 1 + images/svg/joint.svg | 1 + images/svg/jug-detergent.svg | 1 + images/svg/k.svg | 1 + images/svg/kaaba.svg | 1 + images/svg/key.svg | 1 + images/svg/keyboard.svg | 1 + images/svg/khanda.svg | 1 + images/svg/kip-sign.svg | 1 + images/svg/kit-medical.svg | 1 + images/svg/kitchen-set.svg | 1 + images/svg/kiwi-bird.svg | 1 + images/svg/l.svg | 1 + images/svg/land-mine-on.svg | 1 + images/svg/landmark-dome.svg | 1 + images/svg/landmark-flag.svg | 1 + images/svg/landmark.svg | 1 + images/svg/language.svg | 1 + images/svg/laptop-code.svg | 1 + images/svg/laptop-file.svg | 1 + images/svg/laptop-medical.svg | 1 + images/svg/laptop.svg | 1 + images/svg/lari-sign.svg | 1 + images/svg/layer-group.svg | 1 + images/svg/leaf.svg | 1 + images/svg/left-long.svg | 1 + images/svg/left-right.svg | 1 + images/svg/lemon.svg | 1 + images/svg/less-than-equal.svg | 1 + images/svg/less-than.svg | 1 + images/svg/life-ring.svg | 1 + images/svg/lightbulb.svg | 1 + images/svg/lines-leaning.svg | 1 + images/svg/link-slash.svg | 1 + images/svg/link.svg | 1 + images/svg/lira-sign.svg | 1 + images/svg/list-check.svg | 1 + images/svg/list-ol.svg | 1 + images/svg/list-ul.svg | 1 + images/svg/list.svg | 1 + images/svg/litecoin-sign.svg | 1 + images/svg/location-arrow.svg | 1 + images/svg/location-crosshairs.svg | 1 + images/svg/location-dot.svg | 1 + images/svg/location-pin-lock.svg | 1 + images/svg/location-pin.svg | 1 + images/svg/lock-open.svg | 1 + images/svg/lock.svg | 1 + images/svg/locust.svg | 1 + images/svg/lungs-virus.svg | 1 + images/svg/lungs.svg | 1 + images/svg/m.svg | 1 + images/svg/magnet.svg | 1 + images/svg/magnifying-glass-arrow-right.svg | 1 + images/svg/magnifying-glass-chart.svg | 1 + images/svg/magnifying-glass-dollar.svg | 1 + images/svg/magnifying-glass-location.svg | 1 + images/svg/magnifying-glass-minus.svg | 1 + images/svg/magnifying-glass-plus.svg | 1 + images/svg/magnifying-glass.svg | 1 + images/svg/manat-sign.svg | 1 + images/svg/map-location-dot.svg | 1 + images/svg/map-location.svg | 1 + images/svg/map-pin.svg | 1 + images/svg/map.svg | 1 + images/svg/marker.svg | 1 + images/svg/mars-and-venus-burst.svg | 1 + images/svg/mars-and-venus.svg | 1 + images/svg/mars-double.svg | 1 + images/svg/mars-stroke-right.svg | 1 + images/svg/mars-stroke-up.svg | 1 + images/svg/mars-stroke.svg | 1 + images/svg/mars.svg | 1 + images/svg/martini-glass-citrus.svg | 1 + images/svg/martini-glass-empty.svg | 1 + images/svg/martini-glass.svg | 1 + images/svg/mask-face.svg | 1 + images/svg/mask-ventilator.svg | 1 + images/svg/mask.svg | 1 + images/svg/masks-theater.svg | 1 + images/svg/mattress-pillow.svg | 1 + images/svg/maximize.svg | 1 + images/svg/medal.svg | 1 + images/svg/memory.svg | 1 + images/svg/menorah.svg | 1 + images/svg/mercury.svg | 1 + images/svg/message.svg | 1 + images/svg/meteor.svg | 1 + images/svg/microchip.svg | 1 + images/svg/microphone-lines-slash.svg | 1 + images/svg/microphone-lines.svg | 1 + images/svg/microphone-slash.svg | 1 + images/svg/microphone.svg | 1 + images/svg/microscope.svg | 1 + images/svg/mill-sign.svg | 1 + images/svg/minimize.svg | 1 + images/svg/minus.svg | 1 + images/svg/mitten.svg | 1 + images/svg/mobile-button.svg | 1 + images/svg/mobile-retro.svg | 1 + images/svg/mobile-screen-button.svg | 1 + images/svg/mobile-screen.svg | 1 + images/svg/mobile.svg | 1 + images/svg/money-bill-1-wave.svg | 1 + images/svg/money-bill-1.svg | 1 + images/svg/money-bill-transfer.svg | 1 + images/svg/money-bill-trend-up.svg | 1 + images/svg/money-bill-wave.svg | 1 + images/svg/money-bill-wheat.svg | 1 + images/svg/money-bill.svg | 1 + images/svg/money-bills.svg | 1 + images/svg/money-check-dollar.svg | 1 + images/svg/money-check.svg | 1 + images/svg/monument.svg | 1 + images/svg/moon.svg | 1 + images/svg/mortar-pestle.svg | 1 + images/svg/mosque.svg | 1 + images/svg/mosquito-net.svg | 1 + images/svg/mosquito.svg | 1 + images/svg/motorcycle.svg | 1 + images/svg/mound.svg | 1 + images/svg/mountain-city.svg | 1 + images/svg/mountain-sun.svg | 1 + images/svg/mountain.svg | 1 + images/svg/mug-hot.svg | 1 + images/svg/mug-saucer.svg | 1 + images/svg/music.svg | 1 + images/svg/n.svg | 1 + images/svg/naira-sign.svg | 1 + images/svg/network-wired.svg | 1 + images/svg/neuter.svg | 1 + images/svg/newspaper.svg | 1 + images/svg/not-equal.svg | 1 + images/svg/notdef.svg | 1 + images/svg/note-sticky.svg | 1 + images/svg/notes-medical.svg | 1 + images/svg/o.svg | 1 + images/svg/object-group.svg | 1 + images/svg/object-ungroup.svg | 1 + images/svg/oil-can.svg | 1 + images/svg/oil-well.svg | 1 + images/svg/om.svg | 1 + images/svg/otter.svg | 1 + images/svg/outdent.svg | 1 + images/svg/p.svg | 1 + images/svg/pager.svg | 1 + images/svg/paint-roller.svg | 1 + images/svg/paintbrush.svg | 1 + images/svg/palette.svg | 1 + images/svg/pallet.svg | 1 + images/svg/panorama.svg | 1 + images/svg/paper-plane.svg | 1 + images/svg/paperclip.svg | 1 + images/svg/parachute-box.svg | 1 + images/svg/paragraph.svg | 1 + images/svg/passport.svg | 1 + images/svg/paste.svg | 1 + images/svg/pause.svg | 1 + images/svg/paw.svg | 1 + images/svg/peace.svg | 1 + images/svg/pen-clip.svg | 1 + images/svg/pen-fancy.svg | 1 + images/svg/pen-nib.svg | 1 + images/svg/pen-ruler.svg | 1 + images/svg/pen-to-square.svg | 1 + images/svg/pen.svg | 1 + images/svg/pencil.svg | 1 + images/svg/people-arrows.svg | 1 + images/svg/people-carry-box.svg | 1 + images/svg/people-group.svg | 1 + images/svg/people-line.svg | 1 + images/svg/people-pulling.svg | 1 + images/svg/people-robbery.svg | 1 + images/svg/people-roof.svg | 1 + images/svg/pepper-hot.svg | 1 + images/svg/percent.svg | 1 + images/svg/person-arrow-down-to-line.svg | 1 + images/svg/person-arrow-up-from-line.svg | 1 + images/svg/person-biking.svg | 1 + images/svg/person-booth.svg | 1 + images/svg/person-breastfeeding.svg | 1 + images/svg/person-burst.svg | 1 + images/svg/person-cane.svg | 1 + images/svg/person-chalkboard.svg | 1 + images/svg/person-circle-check.svg | 1 + images/svg/person-circle-exclamation.svg | 1 + images/svg/person-circle-minus.svg | 1 + images/svg/person-circle-plus.svg | 1 + images/svg/person-circle-question.svg | 1 + images/svg/person-circle-xmark.svg | 1 + images/svg/person-digging.svg | 1 + images/svg/person-dots-from-line.svg | 1 + images/svg/person-dress-burst.svg | 1 + images/svg/person-dress.svg | 1 + images/svg/person-drowning.svg | 1 + images/svg/person-falling-burst.svg | 1 + images/svg/person-falling.svg | 1 + images/svg/person-half-dress.svg | 1 + images/svg/person-harassing.svg | 1 + images/svg/person-hiking.svg | 1 + images/svg/person-military-pointing.svg | 1 + images/svg/person-military-rifle.svg | 1 + images/svg/person-military-to-person.svg | 1 + images/svg/person-praying.svg | 1 + images/svg/person-pregnant.svg | 1 + images/svg/person-rays.svg | 1 + images/svg/person-rifle.svg | 1 + images/svg/person-running.svg | 1 + images/svg/person-shelter.svg | 1 + images/svg/person-skating.svg | 1 + images/svg/person-skiing-nordic.svg | 1 + images/svg/person-skiing.svg | 1 + images/svg/person-snowboarding.svg | 1 + images/svg/person-swimming.svg | 1 + images/svg/person-through-window.svg | 1 + images/svg/person-walking-arrow-loop-left.svg | 1 + images/svg/person-walking-arrow-right.svg | 1 + ...person-walking-dashed-line-arrow-right.svg | 1 + images/svg/person-walking-luggage.svg | 1 + images/svg/person-walking-with-cane.svg | 1 + images/svg/person-walking.svg | 1 + images/svg/person.svg | 1 + images/svg/peseta-sign.svg | 1 + images/svg/peso-sign.svg | 1 + images/svg/phone-flip.svg | 1 + images/svg/phone-slash.svg | 1 + images/svg/phone-volume.svg | 1 + images/svg/phone.svg | 1 + images/svg/photo-film.svg | 1 + images/svg/piggy-bank.svg | 1 + images/svg/pills.svg | 1 + images/svg/pizza-slice.svg | 1 + images/svg/place-of-worship.svg | 1 + images/svg/plane-arrival.svg | 1 + images/svg/plane-circle-check.svg | 1 + images/svg/plane-circle-exclamation.svg | 1 + images/svg/plane-circle-xmark.svg | 1 + images/svg/plane-departure.svg | 1 + images/svg/plane-lock.svg | 1 + images/svg/plane-slash.svg | 1 + images/svg/plane-up.svg | 1 + images/svg/plane.svg | 1 + images/svg/plant-wilt.svg | 1 + images/svg/plate-wheat.svg | 1 + images/svg/play.svg | 1 + images/svg/plug-circle-bolt.svg | 1 + images/svg/plug-circle-check.svg | 1 + images/svg/plug-circle-exclamation.svg | 1 + images/svg/plug-circle-minus.svg | 1 + images/svg/plug-circle-plus.svg | 1 + images/svg/plug-circle-xmark.svg | 1 + images/svg/plug.svg | 1 + images/svg/plus-minus.svg | 1 + images/svg/plus.svg | 1 + images/svg/podcast.svg | 1 + images/svg/poo-storm.svg | 1 + images/svg/poo.svg | 1 + images/svg/poop.svg | 1 + images/svg/power-off.svg | 1 + images/svg/prescription-bottle-medical.svg | 1 + images/svg/prescription-bottle.svg | 1 + images/svg/prescription.svg | 1 + images/svg/print.svg | 1 + images/svg/pump-medical.svg | 1 + images/svg/pump-soap.svg | 1 + images/svg/puzzle-piece.svg | 1 + images/svg/q.svg | 1 + images/svg/qrcode.svg | 1 + images/svg/question.svg | 1 + images/svg/quote-left.svg | 1 + images/svg/quote-right.svg | 1 + images/svg/r.svg | 1 + images/svg/radiation.svg | 1 + images/svg/radio.svg | 1 + images/svg/rainbow.svg | 1 + images/svg/ranking-star.svg | 1 + images/svg/receipt.svg | 1 + images/svg/record-vinyl.svg | 1 + images/svg/rectangle-ad.svg | 1 + images/svg/rectangle-list.svg | 1 + images/svg/rectangle-xmark.svg | 1 + images/svg/recycle.svg | 1 + images/svg/registered.svg | 1 + images/svg/repeat.svg | 1 + images/svg/reply-all.svg | 1 + images/svg/reply.svg | 1 + images/svg/republican.svg | 1 + images/svg/restroom.svg | 1 + images/svg/retweet.svg | 1 + images/svg/ribbon.svg | 1 + images/svg/right-from-bracket.svg | 1 + images/svg/right-left.svg | 1 + images/svg/right-long.svg | 1 + images/svg/right-to-bracket.svg | 1 + images/svg/ring.svg | 1 + images/svg/road-barrier.svg | 1 + images/svg/road-bridge.svg | 1 + images/svg/road-circle-check.svg | 1 + images/svg/road-circle-exclamation.svg | 1 + images/svg/road-circle-xmark.svg | 1 + images/svg/road-lock.svg | 1 + images/svg/road-spikes.svg | 1 + images/svg/road.svg | 1 + images/svg/robot.svg | 1 + images/svg/rocket.svg | 1 + images/svg/rotate-left.svg | 1 + images/svg/rotate-right.svg | 1 + images/svg/rotate.svg | 1 + images/svg/route.svg | 1 + images/svg/rss.svg | 1 + images/svg/ruble-sign.svg | 1 + images/svg/rug.svg | 1 + images/svg/ruler-combined.svg | 1 + images/svg/ruler-horizontal.svg | 1 + images/svg/ruler-vertical.svg | 1 + images/svg/ruler.svg | 1 + images/svg/rupee-sign.svg | 1 + images/svg/rupiah-sign.svg | 1 + images/svg/s.svg | 1 + images/svg/sack-dollar.svg | 1 + images/svg/sack-xmark.svg | 1 + images/svg/sailboat.svg | 1 + images/svg/satellite-dish.svg | 1 + images/svg/satellite.svg | 1 + images/svg/scale-balanced.svg | 1 + images/svg/scale-unbalanced-flip.svg | 1 + images/svg/scale-unbalanced.svg | 1 + images/svg/school-circle-check.svg | 1 + images/svg/school-circle-exclamation.svg | 1 + images/svg/school-circle-xmark.svg | 1 + images/svg/school-flag.svg | 1 + images/svg/school-lock.svg | 1 + images/svg/school.svg | 1 + images/svg/scissors.svg | 1 + images/svg/screwdriver-wrench.svg | 1 + images/svg/screwdriver.svg | 1 + images/svg/scroll-torah.svg | 1 + images/svg/scroll.svg | 1 + images/svg/sd-card.svg | 1 + images/svg/section.svg | 1 + images/svg/seedling.svg | 1 + images/svg/server.svg | 1 + images/svg/shapes.svg | 1 + images/svg/share-from-square.svg | 1 + images/svg/share-nodes.svg | 1 + images/svg/share.svg | 1 + images/svg/sheet-plastic.svg | 1 + images/svg/shekel-sign.svg | 1 + images/svg/shield-cat.svg | 1 + images/svg/shield-dog.svg | 1 + images/svg/shield-halved.svg | 1 + images/svg/shield-heart.svg | 1 + images/svg/shield-virus.svg | 1 + images/svg/shield.svg | 1 + images/svg/ship.svg | 1 + images/svg/shirt.svg | 1 + images/svg/shoe-prints.svg | 1 + images/svg/shop-lock.svg | 1 + images/svg/shop-slash.svg | 1 + images/svg/shop.svg | 1 + images/svg/shower.svg | 1 + images/svg/shrimp.svg | 1 + images/svg/shuffle.svg | 1 + images/svg/shuttle-space.svg | 1 + images/svg/sign-hanging.svg | 1 + images/svg/signal.svg | 1 + images/svg/signature.svg | 1 + images/svg/signs-post.svg | 1 + images/svg/sim-card.svg | 1 + images/svg/sink.svg | 1 + images/svg/sitemap.svg | 1 + images/svg/skull-crossbones.svg | 1 + images/svg/skull.svg | 1 + images/svg/slash.svg | 1 + images/svg/sleigh.svg | 1 + images/svg/sliders.svg | 1 + images/svg/smog.svg | 1 + images/svg/smoking.svg | 1 + images/svg/snowflake.svg | 1 + images/svg/snowman.svg | 1 + images/svg/snowplow.svg | 1 + images/svg/soap.svg | 1 + images/svg/socks.svg | 1 + images/svg/solar-panel.svg | 1 + images/svg/sort-down.svg | 1 + images/svg/sort-up.svg | 1 + images/svg/sort.svg | 1 + images/svg/spa.svg | 1 + images/svg/spaghetti-monster-flying.svg | 1 + images/svg/spell-check.svg | 1 + images/svg/spider.svg | 1 + images/svg/spinner.svg | 1 + images/svg/splotch.svg | 1 + images/svg/spoon.svg | 1 + images/svg/spray-can-sparkles.svg | 1 + images/svg/spray-can.svg | 1 + images/svg/square-arrow-up-right.svg | 1 + images/svg/square-caret-down.svg | 1 + images/svg/square-caret-left.svg | 1 + images/svg/square-caret-right.svg | 1 + images/svg/square-caret-up.svg | 1 + images/svg/square-check.svg | 1 + images/svg/square-envelope.svg | 1 + images/svg/square-full.svg | 1 + images/svg/square-h.svg | 1 + images/svg/square-minus.svg | 1 + images/svg/square-nfi.svg | 1 + images/svg/square-parking.svg | 1 + images/svg/square-pen.svg | 1 + images/svg/square-person-confined.svg | 1 + images/svg/square-phone-flip.svg | 1 + images/svg/square-phone.svg | 1 + images/svg/square-plus.svg | 1 + images/svg/square-poll-horizontal.svg | 1 + images/svg/square-poll-vertical.svg | 1 + images/svg/square-root-variable.svg | 1 + images/svg/square-rss.svg | 1 + images/svg/square-share-nodes.svg | 1 + images/svg/square-up-right.svg | 1 + images/svg/square-virus.svg | 1 + images/svg/square-xmark.svg | 1 + images/svg/square.svg | 1 + images/svg/staff-snake.svg | 1 + images/svg/stairs.svg | 1 + images/svg/stamp.svg | 1 + images/svg/stapler.svg | 1 + images/svg/star-and-crescent.svg | 1 + images/svg/star-half-stroke.svg | 1 + images/svg/star-half.svg | 1 + images/svg/star-of-david.svg | 1 + images/svg/star-of-life.svg | 1 + images/svg/star.svg | 1 + images/svg/sterling-sign.svg | 1 + images/svg/stethoscope.svg | 1 + images/svg/stop.svg | 1 + images/svg/stopwatch-20.svg | 1 + images/svg/stopwatch.svg | 1 + images/svg/store-slash.svg | 1 + images/svg/store.svg | 1 + images/svg/street-view.svg | 1 + images/svg/strikethrough.svg | 1 + images/svg/stroopwafel.svg | 1 + images/svg/subscript.svg | 1 + images/svg/suitcase-medical.svg | 1 + images/svg/suitcase-rolling.svg | 1 + images/svg/suitcase.svg | 1 + images/svg/sun-plant-wilt.svg | 1 + images/svg/sun.svg | 1 + images/svg/superscript.svg | 1 + images/svg/swatchbook.svg | 1 + images/svg/synagogue.svg | 1 + images/svg/syringe.svg | 1 + images/svg/t.svg | 1 + images/svg/table-cells-large.svg | 1 + images/svg/table-cells.svg | 1 + images/svg/table-columns.svg | 1 + images/svg/table-list.svg | 1 + images/svg/table-tennis-paddle-ball.svg | 1 + images/svg/table.svg | 1 + images/svg/tablet-button.svg | 1 + images/svg/tablet-screen-button.svg | 1 + images/svg/tablet.svg | 1 + images/svg/tablets.svg | 1 + images/svg/tachograph-digital.svg | 1 + images/svg/tag.svg | 1 + images/svg/tags.svg | 1 + images/svg/tape.svg | 1 + images/svg/tarp-droplet.svg | 1 + images/svg/tarp.svg | 1 + images/svg/taxi.svg | 1 + images/svg/teeth-open.svg | 1 + images/svg/teeth.svg | 1 + images/svg/temperature-arrow-down.svg | 1 + images/svg/temperature-arrow-up.svg | 1 + images/svg/temperature-empty.svg | 1 + images/svg/temperature-full.svg | 1 + images/svg/temperature-half.svg | 1 + images/svg/temperature-high.svg | 1 + images/svg/temperature-low.svg | 1 + images/svg/temperature-quarter.svg | 1 + images/svg/temperature-three-quarters.svg | 1 + images/svg/tenge-sign.svg | 1 + images/svg/tent-arrow-down-to-line.svg | 1 + images/svg/tent-arrow-left-right.svg | 1 + images/svg/tent-arrow-turn-left.svg | 1 + images/svg/tent-arrows-down.svg | 1 + images/svg/tent.svg | 1 + images/svg/tents.svg | 1 + images/svg/terminal.svg | 1 + images/svg/text-height.svg | 1 + images/svg/text-slash.svg | 1 + images/svg/text-width.svg | 1 + images/svg/thermometer.svg | 1 + images/svg/thumbs-down.svg | 1 + images/svg/thumbs-up.svg | 1 + images/svg/thumbtack.svg | 1 + images/svg/ticket-simple.svg | 1 + images/svg/ticket.svg | 1 + images/svg/timeline.svg | 1 + images/svg/toggle-off.svg | 1 + images/svg/toggle-on.svg | 1 + images/svg/toilet-paper-slash.svg | 1 + images/svg/toilet-paper.svg | 1 + images/svg/toilet-portable.svg | 1 + images/svg/toilet.svg | 1 + images/svg/toilets-portable.svg | 1 + images/svg/toolbox.svg | 1 + images/svg/tooth.svg | 1 + images/svg/torii-gate.svg | 1 + images/svg/tornado.svg | 1 + images/svg/tower-broadcast.svg | 1 + images/svg/tower-cell.svg | 1 + images/svg/tower-observation.svg | 1 + images/svg/tractor.svg | 1 + images/svg/trademark.svg | 1 + images/svg/traffic-light.svg | 1 + images/svg/trailer.svg | 1 + images/svg/train-subway.svg | 1 + images/svg/train-tram.svg | 1 + images/svg/train.svg | 1 + images/svg/transgender.svg | 1 + images/svg/trash-arrow-up.svg | 1 + images/svg/trash-can-arrow-up.svg | 1 + images/svg/trash-can.svg | 1 + images/svg/trash.svg | 1 + images/svg/tree-city.svg | 1 + images/svg/tree.svg | 1 + images/svg/triangle-exclamation.svg | 1 + images/svg/trophy.svg | 1 + images/svg/trowel-bricks.svg | 1 + images/svg/trowel.svg | 1 + images/svg/truck-arrow-right.svg | 1 + images/svg/truck-droplet.svg | 1 + images/svg/truck-fast.svg | 1 + images/svg/truck-field-un.svg | 1 + images/svg/truck-field.svg | 1 + images/svg/truck-front.svg | 1 + images/svg/truck-medical.svg | 1 + images/svg/truck-monster.svg | 1 + images/svg/truck-moving.svg | 1 + images/svg/truck-pickup.svg | 1 + images/svg/truck-plane.svg | 1 + images/svg/truck-ramp-box.svg | 1 + images/svg/truck.svg | 1 + images/svg/tty.svg | 1 + images/svg/turkish-lira-sign.svg | 1 + images/svg/turn-down.svg | 1 + images/svg/turn-up.svg | 1 + images/svg/tv.svg | 1 + images/svg/u.svg | 1 + images/svg/umbrella-beach.svg | 1 + images/svg/umbrella.svg | 1 + images/svg/underline.svg | 1 + images/svg/universal-access.svg | 1 + images/svg/unlock-keyhole.svg | 1 + images/svg/unlock.svg | 1 + images/svg/up-down-left-right.svg | 1 + images/svg/up-down.svg | 1 + images/svg/up-long.svg | 1 + .../up-right-and-down-left-from-center.svg | 1 + images/svg/up-right-from-square.svg | 1 + images/svg/upload.svg | 1 + images/svg/user-astronaut.svg | 1 + images/svg/user-check.svg | 1 + images/svg/user-clock.svg | 1 + images/svg/user-doctor.svg | 1 + images/svg/user-gear.svg | 1 + images/svg/user-graduate.svg | 1 + images/svg/user-group.svg | 1 + images/svg/user-injured.svg | 1 + images/svg/user-large-slash.svg | 1 + images/svg/user-large.svg | 1 + images/svg/user-lock.svg | 1 + images/svg/user-minus.svg | 1 + images/svg/user-ninja.svg | 1 + images/svg/user-nurse.svg | 1 + images/svg/user-pen.svg | 1 + images/svg/user-plus.svg | 1 + images/svg/user-secret.svg | 1 + images/svg/user-shield.svg | 1 + images/svg/user-slash.svg | 1 + images/svg/user-tag.svg | 1 + images/svg/user-tie.svg | 1 + images/svg/user-xmark.svg | 1 + images/svg/user.svg | 1 + images/svg/users-between-lines.svg | 1 + images/svg/users-gear.svg | 1 + images/svg/users-line.svg | 1 + images/svg/users-rays.svg | 1 + images/svg/users-rectangle.svg | 1 + images/svg/users-slash.svg | 1 + images/svg/users-viewfinder.svg | 1 + images/svg/users.svg | 1 + images/svg/utensils.svg | 1 + images/svg/v.svg | 1 + images/svg/van-shuttle.svg | 1 + images/svg/vault.svg | 1 + images/svg/vector-square.svg | 1 + images/svg/venus-double.svg | 1 + images/svg/venus-mars.svg | 1 + images/svg/venus.svg | 1 + images/svg/vest-patches.svg | 1 + images/svg/vest.svg | 1 + images/svg/vial-circle-check.svg | 1 + images/svg/vial-virus.svg | 1 + images/svg/vial.svg | 1 + images/svg/vials.svg | 1 + images/svg/video-slash.svg | 1 + images/svg/video.svg | 1 + images/svg/vihara.svg | 1 + images/svg/virus-covid-slash.svg | 1 + images/svg/virus-covid.svg | 1 + images/svg/virus-slash.svg | 1 + images/svg/virus.svg | 1 + images/svg/viruses.svg | 1 + images/svg/voicemail.svg | 1 + images/svg/volcano.svg | 1 + images/svg/volleyball.svg | 1 + images/svg/volume-high.svg | 1 + images/svg/volume-low.svg | 1 + images/svg/volume-off.svg | 1 + images/svg/volume-xmark.svg | 1 + images/svg/vr-cardboard.svg | 1 + images/svg/w.svg | 1 + images/svg/walkie-talkie.svg | 1 + images/svg/wallet.svg | 1 + images/svg/wand-magic-sparkles.svg | 1 + images/svg/wand-magic.svg | 1 + images/svg/wand-sparkles.svg | 1 + images/svg/warehouse.svg | 1 + images/svg/water-ladder.svg | 1 + images/svg/water.svg | 1 + images/svg/wave-square.svg | 1 + images/svg/weight-hanging.svg | 1 + images/svg/weight-scale.svg | 1 + images/svg/wheat-awn-circle-exclamation.svg | 1 + images/svg/wheat-awn.svg | 1 + images/svg/wheelchair-move.svg | 1 + images/svg/wheelchair.svg | 1 + images/svg/whiskey-glass.svg | 1 + images/svg/wifi.svg | 1 + images/svg/wind.svg | 1 + images/svg/window-maximize.svg | 1 + images/svg/window-minimize.svg | 1 + images/svg/window-restore.svg | 1 + images/svg/wine-bottle.svg | 1 + images/svg/wine-glass-empty.svg | 1 + images/svg/wine-glass.svg | 1 + images/svg/won-sign.svg | 1 + images/svg/worm.svg | 1 + images/svg/wrench.svg | 1 + images/svg/x-ray.svg | 1 + images/svg/x.svg | 1 + images/svg/xmark.svg | 1 + images/svg/xmarks-lines.svg | 1 + images/svg/y.svg | 1 + images/svg/yen-sign.svg | 1 + images/svg/yin-yang.svg | 1 + images/svg/z.svg | 1 + src/cdlgconnsettingscanal.cpp | 1313 +++++++------ src/cdlgdatepicker.cpp | 85 +- src/cdlgdatepicker.h | 49 +- src/cdlgdatepicker.ui | 2 +- src/cdlgeditmap.cpp | 363 ++++ src/cdlgeditmap.h | 97 + src/cdlgeditmap.ui | 181 ++ src/cdlgmdfdescription.cpp | 195 ++ src/cdlgmdfdescription.h | 83 + src/cdlgmdfdescription.ui | 104 +- src/cdlgmdfinfourl.cpp | 191 ++ src/cdlgmdfinfourl.h | 88 + src/cdlgmdfinfourl.ui | 169 ++ src/cdlgmdfmodule.cpp | 401 +++- src/cdlgmdfmodule.h | 204 +- src/cdlgmdfmodule.ui | 383 +++- src/cfrmmdf.cpp | 551 +++++- src/cfrmmdf.h | 159 +- src/cfrmmdf.ui | 12 + src/copy.svg | 1 + src/iso639.h | 225 +++ src/vscpworks.cpp | 1666 +++++++++-------- src/vscpworks.h | 823 ++++---- src/vscpworks.qrc | 5 + 1416 files changed, 6433 insertions(+), 2329 deletions(-) create mode 100644 images/notes.txt create mode 100644 images/svg/0.svg create mode 100644 images/svg/1.svg create mode 100644 images/svg/2.svg create mode 100644 images/svg/3.svg create mode 100644 images/svg/4.svg create mode 100644 images/svg/5.svg create mode 100644 images/svg/6.svg create mode 100644 images/svg/7.svg create mode 100644 images/svg/8.svg create mode 100644 images/svg/9.svg create mode 100644 images/svg/a.svg create mode 100644 images/svg/address-book.svg create mode 100644 images/svg/address-card.svg create mode 100644 images/svg/align-center.svg create mode 100644 images/svg/align-justify.svg create mode 100644 images/svg/align-left.svg create mode 100644 images/svg/align-right.svg create mode 100644 images/svg/anchor-circle-check.svg create mode 100644 images/svg/anchor-circle-exclamation.svg create mode 100644 images/svg/anchor-circle-xmark.svg create mode 100644 images/svg/anchor-lock.svg create mode 100644 images/svg/anchor.svg create mode 100644 images/svg/angle-down.svg create mode 100644 images/svg/angle-left.svg create mode 100644 images/svg/angle-right.svg create mode 100644 images/svg/angle-up.svg create mode 100644 images/svg/angles-down.svg create mode 100644 images/svg/angles-left.svg create mode 100644 images/svg/angles-right.svg create mode 100644 images/svg/angles-up.svg create mode 100644 images/svg/ankh.svg create mode 100644 images/svg/apple-whole.svg create mode 100644 images/svg/archway.svg create mode 100644 images/svg/arrow-down-1-9.svg create mode 100644 images/svg/arrow-down-9-1.svg create mode 100644 images/svg/arrow-down-a-z.svg create mode 100644 images/svg/arrow-down-long.svg create mode 100644 images/svg/arrow-down-short-wide.svg create mode 100644 images/svg/arrow-down-up-across-line.svg create mode 100644 images/svg/arrow-down-up-lock.svg create mode 100644 images/svg/arrow-down-wide-short.svg create mode 100644 images/svg/arrow-down-z-a.svg create mode 100644 images/svg/arrow-down.svg create mode 100644 images/svg/arrow-left-long.svg create mode 100644 images/svg/arrow-left.svg create mode 100644 images/svg/arrow-pointer.svg create mode 100644 images/svg/arrow-right-arrow-left.svg create mode 100644 images/svg/arrow-right-from-bracket.svg create mode 100644 images/svg/arrow-right-long.svg create mode 100644 images/svg/arrow-right-to-bracket.svg create mode 100644 images/svg/arrow-right-to-city.svg create mode 100644 images/svg/arrow-right.svg create mode 100644 images/svg/arrow-rotate-left.svg create mode 100644 images/svg/arrow-rotate-right.svg create mode 100644 images/svg/arrow-trend-down.svg create mode 100644 images/svg/arrow-trend-up.svg create mode 100644 images/svg/arrow-turn-down.svg create mode 100644 images/svg/arrow-turn-up.svg create mode 100644 images/svg/arrow-up-1-9.svg create mode 100644 images/svg/arrow-up-9-1.svg create mode 100644 images/svg/arrow-up-a-z.svg create mode 100644 images/svg/arrow-up-from-bracket.svg create mode 100644 images/svg/arrow-up-from-ground-water.svg create mode 100644 images/svg/arrow-up-from-water-pump.svg create mode 100644 images/svg/arrow-up-long.svg create mode 100644 images/svg/arrow-up-right-dots.svg create mode 100644 images/svg/arrow-up-right-from-square.svg create mode 100644 images/svg/arrow-up-short-wide.svg create mode 100644 images/svg/arrow-up-wide-short.svg create mode 100644 images/svg/arrow-up-z-a.svg create mode 100644 images/svg/arrow-up.svg create mode 100644 images/svg/arrows-down-to-line.svg create mode 100644 images/svg/arrows-down-to-people.svg create mode 100644 images/svg/arrows-left-right-to-line.svg create mode 100644 images/svg/arrows-left-right.svg create mode 100644 images/svg/arrows-rotate.svg create mode 100644 images/svg/arrows-spin.svg create mode 100644 images/svg/arrows-split-up-and-left.svg create mode 100644 images/svg/arrows-to-circle.svg create mode 100644 images/svg/arrows-to-dot.svg create mode 100644 images/svg/arrows-to-eye.svg create mode 100644 images/svg/arrows-turn-right.svg create mode 100644 images/svg/arrows-turn-to-dots.svg create mode 100644 images/svg/arrows-up-down-left-right.svg create mode 100644 images/svg/arrows-up-down.svg create mode 100644 images/svg/arrows-up-to-line.svg create mode 100644 images/svg/asterisk.svg create mode 100644 images/svg/at.svg create mode 100644 images/svg/atom.svg create mode 100644 images/svg/audio-description.svg create mode 100644 images/svg/austral-sign.svg create mode 100644 images/svg/award.svg create mode 100644 images/svg/b.svg create mode 100644 images/svg/baby-carriage.svg create mode 100644 images/svg/baby.svg create mode 100644 images/svg/backward-fast.svg create mode 100644 images/svg/backward-step.svg create mode 100644 images/svg/backward.svg create mode 100644 images/svg/bacon.svg create mode 100644 images/svg/bacteria.svg create mode 100644 images/svg/bacterium.svg create mode 100644 images/svg/bag-shopping.svg create mode 100644 images/svg/bahai.svg create mode 100644 images/svg/baht-sign.svg create mode 100644 images/svg/ban-smoking.svg create mode 100644 images/svg/ban.svg create mode 100644 images/svg/bandage.svg create mode 100644 images/svg/bangladeshi-taka-sign.svg create mode 100644 images/svg/barcode.svg create mode 100644 images/svg/bars-progress.svg create mode 100644 images/svg/bars-staggered.svg create mode 100644 images/svg/bars.svg create mode 100644 images/svg/baseball-bat-ball.svg create mode 100644 images/svg/baseball.svg create mode 100644 images/svg/basket-shopping.svg create mode 100644 images/svg/basketball.svg create mode 100644 images/svg/bath.svg create mode 100644 images/svg/battery-empty.svg create mode 100644 images/svg/battery-full.svg create mode 100644 images/svg/battery-half.svg create mode 100644 images/svg/battery-quarter.svg create mode 100644 images/svg/battery-three-quarters.svg create mode 100644 images/svg/bed-pulse.svg create mode 100644 images/svg/bed.svg create mode 100644 images/svg/beer-mug-empty.svg create mode 100644 images/svg/bell-concierge.svg create mode 100644 images/svg/bell-slash.svg create mode 100644 images/svg/bell.svg create mode 100644 images/svg/bezier-curve.svg create mode 100644 images/svg/bicycle.svg create mode 100644 images/svg/binoculars.svg create mode 100644 images/svg/biohazard.svg create mode 100644 images/svg/bitcoin-sign.svg create mode 100644 images/svg/blender-phone.svg create mode 100644 images/svg/blender.svg create mode 100644 images/svg/blog.svg create mode 100644 images/svg/bold.svg create mode 100644 images/svg/bolt-lightning.svg create mode 100644 images/svg/bolt.svg create mode 100644 images/svg/bomb.svg create mode 100644 images/svg/bone.svg create mode 100644 images/svg/bong.svg create mode 100644 images/svg/book-atlas.svg create mode 100644 images/svg/book-bible.svg create mode 100644 images/svg/book-bookmark.svg create mode 100644 images/svg/book-journal-whills.svg create mode 100644 images/svg/book-medical.svg create mode 100644 images/svg/book-open-reader.svg create mode 100644 images/svg/book-open.svg create mode 100644 images/svg/book-quran.svg create mode 100644 images/svg/book-skull.svg create mode 100644 images/svg/book-tanakh.svg create mode 100644 images/svg/book.svg create mode 100644 images/svg/bookmark.svg create mode 100644 images/svg/border-all.svg create mode 100644 images/svg/border-none.svg create mode 100644 images/svg/border-top-left.svg create mode 100644 images/svg/bore-hole.svg create mode 100644 images/svg/bottle-droplet.svg create mode 100644 images/svg/bottle-water.svg create mode 100644 images/svg/bowl-food.svg create mode 100644 images/svg/bowl-rice.svg create mode 100644 images/svg/bowling-ball.svg create mode 100644 images/svg/box-archive.svg create mode 100644 images/svg/box-open.svg create mode 100644 images/svg/box-tissue.svg create mode 100644 images/svg/box.svg create mode 100644 images/svg/boxes-packing.svg create mode 100644 images/svg/boxes-stacked.svg create mode 100644 images/svg/braille.svg create mode 100644 images/svg/brain.svg create mode 100644 images/svg/brazilian-real-sign.svg create mode 100644 images/svg/bread-slice.svg create mode 100644 images/svg/bridge-circle-check.svg create mode 100644 images/svg/bridge-circle-exclamation.svg create mode 100644 images/svg/bridge-circle-xmark.svg create mode 100644 images/svg/bridge-lock.svg create mode 100644 images/svg/bridge-water.svg create mode 100644 images/svg/bridge.svg create mode 100644 images/svg/briefcase-medical.svg create mode 100644 images/svg/briefcase.svg create mode 100644 images/svg/broom-ball.svg create mode 100644 images/svg/broom.svg create mode 100644 images/svg/brush.svg create mode 100644 images/svg/bucket.svg create mode 100644 images/svg/bug-slash.svg create mode 100644 images/svg/bug.svg create mode 100644 images/svg/bugs.svg create mode 100644 images/svg/building-circle-arrow-right.svg create mode 100644 images/svg/building-circle-check.svg create mode 100644 images/svg/building-circle-exclamation.svg create mode 100644 images/svg/building-circle-xmark.svg create mode 100644 images/svg/building-columns.svg create mode 100644 images/svg/building-flag.svg create mode 100644 images/svg/building-lock.svg create mode 100644 images/svg/building-ngo.svg create mode 100644 images/svg/building-shield.svg create mode 100644 images/svg/building-un.svg create mode 100644 images/svg/building-user.svg create mode 100644 images/svg/building-wheat.svg create mode 100644 images/svg/building.svg create mode 100644 images/svg/bullhorn.svg create mode 100644 images/svg/bullseye.svg create mode 100644 images/svg/burger.svg create mode 100644 images/svg/burst.svg create mode 100644 images/svg/bus-simple.svg create mode 100644 images/svg/bus.svg create mode 100644 images/svg/business-time.svg create mode 100644 images/svg/c.svg create mode 100644 images/svg/cable-car.svg create mode 100644 images/svg/cake-candles.svg create mode 100644 images/svg/calculator.svg create mode 100644 images/svg/calendar-check.svg create mode 100644 images/svg/calendar-day.svg create mode 100644 images/svg/calendar-days.svg create mode 100644 images/svg/calendar-minus.svg create mode 100644 images/svg/calendar-plus.svg create mode 100644 images/svg/calendar-week.svg create mode 100644 images/svg/calendar-xmark.svg create mode 100644 images/svg/calendar.svg create mode 100644 images/svg/camera-retro.svg create mode 100644 images/svg/camera-rotate.svg create mode 100644 images/svg/camera.svg create mode 100644 images/svg/campground.svg create mode 100644 images/svg/candy-cane.svg create mode 100644 images/svg/cannabis.svg create mode 100644 images/svg/capsules.svg create mode 100644 images/svg/car-battery.svg create mode 100644 images/svg/car-burst.svg create mode 100644 images/svg/car-on.svg create mode 100644 images/svg/car-rear.svg create mode 100644 images/svg/car-side.svg create mode 100644 images/svg/car-tunnel.svg create mode 100644 images/svg/car.svg create mode 100644 images/svg/caravan.svg create mode 100644 images/svg/caret-down.svg create mode 100644 images/svg/caret-left.svg create mode 100644 images/svg/caret-right.svg create mode 100644 images/svg/caret-up.svg create mode 100644 images/svg/carrot.svg create mode 100644 images/svg/cart-arrow-down.svg create mode 100644 images/svg/cart-flatbed-suitcase.svg create mode 100644 images/svg/cart-flatbed.svg create mode 100644 images/svg/cart-plus.svg create mode 100644 images/svg/cart-shopping.svg create mode 100644 images/svg/cash-register.svg create mode 100644 images/svg/cat.svg create mode 100644 images/svg/cedi-sign.svg create mode 100644 images/svg/cent-sign.svg create mode 100644 images/svg/certificate.svg create mode 100644 images/svg/chair.svg create mode 100644 images/svg/chalkboard-user.svg create mode 100644 images/svg/chalkboard.svg create mode 100644 images/svg/champagne-glasses.svg create mode 100644 images/svg/charging-station.svg create mode 100644 images/svg/chart-area.svg create mode 100644 images/svg/chart-bar.svg create mode 100644 images/svg/chart-column.svg create mode 100644 images/svg/chart-gantt.svg create mode 100644 images/svg/chart-line.svg create mode 100644 images/svg/chart-pie.svg create mode 100644 images/svg/chart-simple.svg create mode 100644 images/svg/check-double.svg create mode 100644 images/svg/check-to-slot.svg create mode 100644 images/svg/check.svg create mode 100644 images/svg/cheese.svg create mode 100644 images/svg/chess-bishop.svg create mode 100644 images/svg/chess-board.svg create mode 100644 images/svg/chess-king.svg create mode 100644 images/svg/chess-knight.svg create mode 100644 images/svg/chess-pawn.svg create mode 100644 images/svg/chess-queen.svg create mode 100644 images/svg/chess-rook.svg create mode 100644 images/svg/chess.svg create mode 100644 images/svg/chevron-down.svg create mode 100644 images/svg/chevron-left.svg create mode 100644 images/svg/chevron-right.svg create mode 100644 images/svg/chevron-up.svg create mode 100644 images/svg/child-combatant.svg create mode 100644 images/svg/child-dress.svg create mode 100644 images/svg/child-reaching.svg create mode 100644 images/svg/child.svg create mode 100644 images/svg/children.svg create mode 100644 images/svg/church.svg create mode 100644 images/svg/circle-arrow-down.svg create mode 100644 images/svg/circle-arrow-left.svg create mode 100644 images/svg/circle-arrow-right.svg create mode 100644 images/svg/circle-arrow-up.svg create mode 100644 images/svg/circle-check.svg create mode 100644 images/svg/circle-chevron-down.svg create mode 100644 images/svg/circle-chevron-left.svg create mode 100644 images/svg/circle-chevron-right.svg create mode 100644 images/svg/circle-chevron-up.svg create mode 100644 images/svg/circle-dollar-to-slot.svg create mode 100644 images/svg/circle-dot.svg create mode 100644 images/svg/circle-down.svg create mode 100644 images/svg/circle-exclamation.svg create mode 100644 images/svg/circle-h.svg create mode 100644 images/svg/circle-half-stroke.svg create mode 100644 images/svg/circle-info.svg create mode 100644 images/svg/circle-left.svg create mode 100644 images/svg/circle-minus.svg create mode 100644 images/svg/circle-nodes.svg create mode 100644 images/svg/circle-notch.svg create mode 100644 images/svg/circle-pause.svg create mode 100644 images/svg/circle-play.svg create mode 100644 images/svg/circle-plus.svg create mode 100644 images/svg/circle-question.svg create mode 100644 images/svg/circle-radiation.svg create mode 100644 images/svg/circle-right.svg create mode 100644 images/svg/circle-stop.svg create mode 100644 images/svg/circle-up.svg create mode 100644 images/svg/circle-user.svg create mode 100644 images/svg/circle-xmark.svg create mode 100644 images/svg/circle.svg create mode 100644 images/svg/city.svg create mode 100644 images/svg/clapperboard.svg create mode 100644 images/svg/clipboard-check.svg create mode 100644 images/svg/clipboard-list.svg create mode 100644 images/svg/clipboard-question.svg create mode 100644 images/svg/clipboard-user.svg create mode 100644 images/svg/clipboard.svg create mode 100644 images/svg/clock-rotate-left.svg create mode 100644 images/svg/clock.svg create mode 100644 images/svg/clone.svg create mode 100644 images/svg/closed-captioning.svg create mode 100644 images/svg/cloud-arrow-down.svg create mode 100644 images/svg/cloud-arrow-up.svg create mode 100644 images/svg/cloud-bolt.svg create mode 100644 images/svg/cloud-meatball.svg create mode 100644 images/svg/cloud-moon-rain.svg create mode 100644 images/svg/cloud-moon.svg create mode 100644 images/svg/cloud-rain.svg create mode 100644 images/svg/cloud-showers-heavy.svg create mode 100644 images/svg/cloud-showers-water.svg create mode 100644 images/svg/cloud-sun-rain.svg create mode 100644 images/svg/cloud-sun.svg create mode 100644 images/svg/cloud.svg create mode 100644 images/svg/clover.svg create mode 100644 images/svg/code-branch.svg create mode 100644 images/svg/code-commit.svg create mode 100644 images/svg/code-compare.svg create mode 100644 images/svg/code-fork.svg create mode 100644 images/svg/code-merge.svg create mode 100644 images/svg/code-pull-request.svg create mode 100644 images/svg/code.svg create mode 100644 images/svg/coins.svg create mode 100644 images/svg/colon-sign.svg create mode 100644 images/svg/comment-dollar.svg create mode 100644 images/svg/comment-dots.svg create mode 100644 images/svg/comment-medical.svg create mode 100644 images/svg/comment-slash.svg create mode 100644 images/svg/comment-sms.svg create mode 100644 images/svg/comment.svg create mode 100644 images/svg/comments-dollar.svg create mode 100644 images/svg/comments.svg create mode 100644 images/svg/compact-disc.svg create mode 100644 images/svg/compass-drafting.svg create mode 100644 images/svg/compass.svg create mode 100644 images/svg/compress.svg create mode 100644 images/svg/computer-mouse.svg create mode 100644 images/svg/computer.svg create mode 100644 images/svg/cookie-bite.svg create mode 100644 images/svg/cookie.svg create mode 100644 images/svg/copy.svg create mode 100644 images/svg/copyright.svg create mode 100644 images/svg/couch.svg create mode 100644 images/svg/cow.svg create mode 100644 images/svg/credit-card.svg create mode 100644 images/svg/crop-simple.svg create mode 100644 images/svg/crop.svg create mode 100644 images/svg/cross.svg create mode 100644 images/svg/crosshairs.svg create mode 100644 images/svg/crow.svg create mode 100644 images/svg/crown.svg create mode 100644 images/svg/crutch.svg create mode 100644 images/svg/cruzeiro-sign.svg create mode 100644 images/svg/cube.svg create mode 100644 images/svg/cubes-stacked.svg create mode 100644 images/svg/cubes.svg create mode 100644 images/svg/d.svg create mode 100644 images/svg/database.svg create mode 100644 images/svg/delete-left.svg create mode 100644 images/svg/democrat.svg create mode 100644 images/svg/desktop.svg create mode 100644 images/svg/dharmachakra.svg create mode 100644 images/svg/diagram-next.svg create mode 100644 images/svg/diagram-predecessor.svg create mode 100644 images/svg/diagram-project.svg create mode 100644 images/svg/diagram-successor.svg create mode 100644 images/svg/diamond-turn-right.svg create mode 100644 images/svg/diamond.svg create mode 100644 images/svg/dice-d20.svg create mode 100644 images/svg/dice-d6.svg create mode 100644 images/svg/dice-five.svg create mode 100644 images/svg/dice-four.svg create mode 100644 images/svg/dice-one.svg create mode 100644 images/svg/dice-six.svg create mode 100644 images/svg/dice-three.svg create mode 100644 images/svg/dice-two.svg create mode 100644 images/svg/dice.svg create mode 100644 images/svg/disease.svg create mode 100644 images/svg/display.svg create mode 100644 images/svg/divide.svg create mode 100644 images/svg/dna.svg create mode 100644 images/svg/dog.svg create mode 100644 images/svg/dollar-sign.svg create mode 100644 images/svg/dolly.svg create mode 100644 images/svg/dong-sign.svg create mode 100644 images/svg/door-closed.svg create mode 100644 images/svg/door-open.svg create mode 100644 images/svg/dove.svg create mode 100644 images/svg/down-left-and-up-right-to-center.svg create mode 100644 images/svg/down-long.svg create mode 100644 images/svg/download.svg create mode 100644 images/svg/dragon.svg create mode 100644 images/svg/draw-polygon.svg create mode 100644 images/svg/droplet-slash.svg create mode 100644 images/svg/droplet.svg create mode 100644 images/svg/drum-steelpan.svg create mode 100644 images/svg/drum.svg create mode 100644 images/svg/drumstick-bite.svg create mode 100644 images/svg/dumbbell.svg create mode 100644 images/svg/dumpster-fire.svg create mode 100644 images/svg/dumpster.svg create mode 100644 images/svg/dungeon.svg create mode 100644 images/svg/e.svg create mode 100644 images/svg/ear-deaf.svg create mode 100644 images/svg/ear-listen.svg create mode 100644 images/svg/earth-africa.svg create mode 100644 images/svg/earth-americas.svg create mode 100644 images/svg/earth-asia.svg create mode 100644 images/svg/earth-europe.svg create mode 100644 images/svg/earth-oceania.svg create mode 100644 images/svg/egg.svg create mode 100644 images/svg/eject.svg create mode 100644 images/svg/elevator.svg create mode 100644 images/svg/ellipsis-vertical.svg create mode 100644 images/svg/ellipsis.svg create mode 100644 images/svg/envelope-circle-check.svg create mode 100644 images/svg/envelope-open-text.svg create mode 100644 images/svg/envelope-open.svg create mode 100644 images/svg/envelope.svg create mode 100644 images/svg/envelopes-bulk.svg create mode 100644 images/svg/equals.svg create mode 100644 images/svg/eraser.svg create mode 100644 images/svg/ethernet.svg create mode 100644 images/svg/euro-sign.svg create mode 100644 images/svg/exclamation.svg create mode 100644 images/svg/expand.svg create mode 100644 images/svg/explosion.svg create mode 100644 images/svg/eye-dropper.svg create mode 100644 images/svg/eye-low-vision.svg create mode 100644 images/svg/eye-slash.svg create mode 100644 images/svg/eye.svg create mode 100644 images/svg/f.svg create mode 100644 images/svg/face-angry.svg create mode 100644 images/svg/face-dizzy.svg create mode 100644 images/svg/face-flushed.svg create mode 100644 images/svg/face-frown-open.svg create mode 100644 images/svg/face-frown.svg create mode 100644 images/svg/face-grimace.svg create mode 100644 images/svg/face-grin-beam-sweat.svg create mode 100644 images/svg/face-grin-beam.svg create mode 100644 images/svg/face-grin-hearts.svg create mode 100644 images/svg/face-grin-squint-tears.svg create mode 100644 images/svg/face-grin-squint.svg create mode 100644 images/svg/face-grin-stars.svg create mode 100644 images/svg/face-grin-tears.svg create mode 100644 images/svg/face-grin-tongue-squint.svg create mode 100644 images/svg/face-grin-tongue-wink.svg create mode 100644 images/svg/face-grin-tongue.svg create mode 100644 images/svg/face-grin-wide.svg create mode 100644 images/svg/face-grin-wink.svg create mode 100644 images/svg/face-grin.svg create mode 100644 images/svg/face-kiss-beam.svg create mode 100644 images/svg/face-kiss-wink-heart.svg create mode 100644 images/svg/face-kiss.svg create mode 100644 images/svg/face-laugh-beam.svg create mode 100644 images/svg/face-laugh-squint.svg create mode 100644 images/svg/face-laugh-wink.svg create mode 100644 images/svg/face-laugh.svg create mode 100644 images/svg/face-meh-blank.svg create mode 100644 images/svg/face-meh.svg create mode 100644 images/svg/face-rolling-eyes.svg create mode 100644 images/svg/face-sad-cry.svg create mode 100644 images/svg/face-sad-tear.svg create mode 100644 images/svg/face-smile-beam.svg create mode 100644 images/svg/face-smile-wink.svg create mode 100644 images/svg/face-smile.svg create mode 100644 images/svg/face-surprise.svg create mode 100644 images/svg/face-tired.svg create mode 100644 images/svg/fan.svg create mode 100644 images/svg/faucet-drip.svg create mode 100644 images/svg/faucet.svg create mode 100644 images/svg/fax.svg create mode 100644 images/svg/feather-pointed.svg create mode 100644 images/svg/feather.svg create mode 100644 images/svg/ferry.svg create mode 100644 images/svg/file-arrow-down.svg create mode 100644 images/svg/file-arrow-up.svg create mode 100644 images/svg/file-audio.svg create mode 100644 images/svg/file-circle-check.svg create mode 100644 images/svg/file-circle-exclamation.svg create mode 100644 images/svg/file-circle-minus.svg create mode 100644 images/svg/file-circle-plus.svg create mode 100644 images/svg/file-circle-question.svg create mode 100644 images/svg/file-circle-xmark.svg create mode 100644 images/svg/file-code.svg create mode 100644 images/svg/file-contract.svg create mode 100644 images/svg/file-csv.svg create mode 100644 images/svg/file-excel.svg create mode 100644 images/svg/file-export.svg create mode 100644 images/svg/file-image.svg create mode 100644 images/svg/file-import.svg create mode 100644 images/svg/file-invoice-dollar.svg create mode 100644 images/svg/file-invoice.svg create mode 100644 images/svg/file-lines.svg create mode 100644 images/svg/file-medical.svg create mode 100644 images/svg/file-pdf.svg create mode 100644 images/svg/file-pen.svg create mode 100644 images/svg/file-powerpoint.svg create mode 100644 images/svg/file-prescription.svg create mode 100644 images/svg/file-shield.svg create mode 100644 images/svg/file-signature.svg create mode 100644 images/svg/file-video.svg create mode 100644 images/svg/file-waveform.svg create mode 100644 images/svg/file-word.svg create mode 100644 images/svg/file-zipper.svg create mode 100644 images/svg/file.svg create mode 100644 images/svg/fill-drip.svg create mode 100644 images/svg/fill.svg create mode 100644 images/svg/film.svg create mode 100644 images/svg/filter-circle-dollar.svg create mode 100644 images/svg/filter-circle-xmark.svg create mode 100644 images/svg/filter.svg create mode 100644 images/svg/fingerprint.svg create mode 100644 images/svg/fire-burner.svg create mode 100644 images/svg/fire-extinguisher.svg create mode 100644 images/svg/fire-flame-curved.svg create mode 100644 images/svg/fire-flame-simple.svg create mode 100644 images/svg/fire.svg create mode 100644 images/svg/fish-fins.svg create mode 100644 images/svg/fish.svg create mode 100644 images/svg/flag-checkered.svg create mode 100644 images/svg/flag-usa.svg create mode 100644 images/svg/flag.svg create mode 100644 images/svg/flask-vial.svg create mode 100644 images/svg/flask.svg create mode 100644 images/svg/floppy-disk.svg create mode 100644 images/svg/florin-sign.svg create mode 100644 images/svg/folder-closed.svg create mode 100644 images/svg/folder-minus.svg create mode 100644 images/svg/folder-open.svg create mode 100644 images/svg/folder-plus.svg create mode 100644 images/svg/folder-tree.svg create mode 100644 images/svg/folder.svg create mode 100644 images/svg/font-awesome.svg create mode 100644 images/svg/font.svg create mode 100644 images/svg/football.svg create mode 100644 images/svg/forward-fast.svg create mode 100644 images/svg/forward-step.svg create mode 100644 images/svg/forward.svg create mode 100644 images/svg/franc-sign.svg create mode 100644 images/svg/frog.svg create mode 100644 images/svg/futbol.svg create mode 100644 images/svg/g.svg create mode 100644 images/svg/gamepad.svg create mode 100644 images/svg/gas-pump.svg create mode 100644 images/svg/gauge-high.svg create mode 100644 images/svg/gauge-simple-high.svg create mode 100644 images/svg/gauge-simple.svg create mode 100644 images/svg/gauge.svg create mode 100644 images/svg/gavel.svg create mode 100644 images/svg/gear.svg create mode 100644 images/svg/gears.svg create mode 100644 images/svg/gem.svg create mode 100644 images/svg/genderless.svg create mode 100644 images/svg/ghost.svg create mode 100644 images/svg/gift.svg create mode 100644 images/svg/gifts.svg create mode 100644 images/svg/glass-water-droplet.svg create mode 100644 images/svg/glass-water.svg create mode 100644 images/svg/glasses.svg create mode 100644 images/svg/globe.svg create mode 100644 images/svg/golf-ball-tee.svg create mode 100644 images/svg/gopuram.svg create mode 100644 images/svg/graduation-cap.svg create mode 100644 images/svg/greater-than-equal.svg create mode 100644 images/svg/greater-than.svg create mode 100644 images/svg/grip-lines-vertical.svg create mode 100644 images/svg/grip-lines.svg create mode 100644 images/svg/grip-vertical.svg create mode 100644 images/svg/grip.svg create mode 100644 images/svg/group-arrows-rotate.svg create mode 100644 images/svg/guarani-sign.svg create mode 100644 images/svg/guitar.svg create mode 100644 images/svg/gun.svg create mode 100644 images/svg/h.svg create mode 100644 images/svg/hammer.svg create mode 100644 images/svg/hamsa.svg create mode 100644 images/svg/hand-back-fist.svg create mode 100644 images/svg/hand-dots.svg create mode 100644 images/svg/hand-fist.svg create mode 100644 images/svg/hand-holding-dollar.svg create mode 100644 images/svg/hand-holding-droplet.svg create mode 100644 images/svg/hand-holding-hand.svg create mode 100644 images/svg/hand-holding-heart.svg create mode 100644 images/svg/hand-holding-medical.svg create mode 100644 images/svg/hand-holding.svg create mode 100644 images/svg/hand-lizard.svg create mode 100644 images/svg/hand-middle-finger.svg create mode 100644 images/svg/hand-peace.svg create mode 100644 images/svg/hand-point-down.svg create mode 100644 images/svg/hand-point-left.svg create mode 100644 images/svg/hand-point-right.svg create mode 100644 images/svg/hand-point-up.svg create mode 100644 images/svg/hand-pointer.svg create mode 100644 images/svg/hand-scissors.svg create mode 100644 images/svg/hand-sparkles.svg create mode 100644 images/svg/hand-spock.svg create mode 100644 images/svg/hand.svg create mode 100644 images/svg/handcuffs.svg create mode 100644 images/svg/hands-asl-interpreting.svg create mode 100644 images/svg/hands-bound.svg create mode 100644 images/svg/hands-bubbles.svg create mode 100644 images/svg/hands-clapping.svg create mode 100644 images/svg/hands-holding-child.svg create mode 100644 images/svg/hands-holding-circle.svg create mode 100644 images/svg/hands-holding.svg create mode 100644 images/svg/hands-praying.svg create mode 100644 images/svg/hands.svg create mode 100644 images/svg/handshake-angle.svg create mode 100644 images/svg/handshake-simple-slash.svg create mode 100644 images/svg/handshake-simple.svg create mode 100644 images/svg/handshake-slash.svg create mode 100644 images/svg/handshake.svg create mode 100644 images/svg/hanukiah.svg create mode 100644 images/svg/hard-drive.svg create mode 100644 images/svg/hashtag.svg create mode 100644 images/svg/hat-cowboy-side.svg create mode 100644 images/svg/hat-cowboy.svg create mode 100644 images/svg/hat-wizard.svg create mode 100644 images/svg/head-side-cough-slash.svg create mode 100644 images/svg/head-side-cough.svg create mode 100644 images/svg/head-side-mask.svg create mode 100644 images/svg/head-side-virus.svg create mode 100644 images/svg/heading.svg create mode 100644 images/svg/headphones-simple.svg create mode 100644 images/svg/headphones.svg create mode 100644 images/svg/headset.svg create mode 100644 images/svg/heart-circle-bolt.svg create mode 100644 images/svg/heart-circle-check.svg create mode 100644 images/svg/heart-circle-exclamation.svg create mode 100644 images/svg/heart-circle-minus.svg create mode 100644 images/svg/heart-circle-plus.svg create mode 100644 images/svg/heart-circle-xmark.svg create mode 100644 images/svg/heart-crack.svg create mode 100644 images/svg/heart-pulse.svg create mode 100644 images/svg/heart.svg create mode 100644 images/svg/helicopter-symbol.svg create mode 100644 images/svg/helicopter.svg create mode 100644 images/svg/helmet-safety.svg create mode 100644 images/svg/helmet-un.svg create mode 100644 images/svg/highlighter.svg create mode 100644 images/svg/hill-avalanche.svg create mode 100644 images/svg/hill-rockslide.svg create mode 100644 images/svg/hippo.svg create mode 100644 images/svg/hockey-puck.svg create mode 100644 images/svg/holly-berry.svg create mode 100644 images/svg/horse-head.svg create mode 100644 images/svg/horse.svg create mode 100644 images/svg/hospital-user.svg create mode 100644 images/svg/hospital.svg create mode 100644 images/svg/hot-tub-person.svg create mode 100644 images/svg/hotdog.svg create mode 100644 images/svg/hotel.svg create mode 100644 images/svg/hourglass-end.svg create mode 100644 images/svg/hourglass-half.svg create mode 100644 images/svg/hourglass-start.svg create mode 100644 images/svg/hourglass.svg create mode 100644 images/svg/house-chimney-crack.svg create mode 100644 images/svg/house-chimney-medical.svg create mode 100644 images/svg/house-chimney-user.svg create mode 100644 images/svg/house-chimney-window.svg create mode 100644 images/svg/house-chimney.svg create mode 100644 images/svg/house-circle-check.svg create mode 100644 images/svg/house-circle-exclamation.svg create mode 100644 images/svg/house-circle-xmark.svg create mode 100644 images/svg/house-crack.svg create mode 100644 images/svg/house-fire.svg create mode 100644 images/svg/house-flag.svg create mode 100644 images/svg/house-flood-water-circle-arrow-right.svg create mode 100644 images/svg/house-flood-water.svg create mode 100644 images/svg/house-laptop.svg create mode 100644 images/svg/house-lock.svg create mode 100644 images/svg/house-medical-circle-check.svg create mode 100644 images/svg/house-medical-circle-exclamation.svg create mode 100644 images/svg/house-medical-circle-xmark.svg create mode 100644 images/svg/house-medical-flag.svg create mode 100644 images/svg/house-medical.svg create mode 100644 images/svg/house-signal.svg create mode 100644 images/svg/house-tsunami.svg create mode 100644 images/svg/house-user.svg create mode 100644 images/svg/house.svg create mode 100644 images/svg/hryvnia-sign.svg create mode 100644 images/svg/hurricane.svg create mode 100644 images/svg/i-cursor.svg create mode 100644 images/svg/i.svg create mode 100644 images/svg/ice-cream.svg create mode 100644 images/svg/icicles.svg create mode 100644 images/svg/icons.svg create mode 100644 images/svg/id-badge.svg create mode 100644 images/svg/id-card-clip.svg create mode 100644 images/svg/id-card.svg create mode 100644 images/svg/igloo.svg create mode 100644 images/svg/image-portrait.svg create mode 100644 images/svg/image.svg create mode 100644 images/svg/images.svg create mode 100644 images/svg/inbox.svg create mode 100644 images/svg/indent.svg create mode 100644 images/svg/indian-rupee-sign.svg create mode 100644 images/svg/industry.svg create mode 100644 images/svg/infinity.svg create mode 100644 images/svg/info.svg create mode 100644 images/svg/italic.svg create mode 100644 images/svg/j.svg create mode 100644 images/svg/jar-wheat.svg create mode 100644 images/svg/jar.svg create mode 100644 images/svg/jedi.svg create mode 100644 images/svg/jet-fighter-up.svg create mode 100644 images/svg/jet-fighter.svg create mode 100644 images/svg/joint.svg create mode 100644 images/svg/jug-detergent.svg create mode 100644 images/svg/k.svg create mode 100644 images/svg/kaaba.svg create mode 100644 images/svg/key.svg create mode 100644 images/svg/keyboard.svg create mode 100644 images/svg/khanda.svg create mode 100644 images/svg/kip-sign.svg create mode 100644 images/svg/kit-medical.svg create mode 100644 images/svg/kitchen-set.svg create mode 100644 images/svg/kiwi-bird.svg create mode 100644 images/svg/l.svg create mode 100644 images/svg/land-mine-on.svg create mode 100644 images/svg/landmark-dome.svg create mode 100644 images/svg/landmark-flag.svg create mode 100644 images/svg/landmark.svg create mode 100644 images/svg/language.svg create mode 100644 images/svg/laptop-code.svg create mode 100644 images/svg/laptop-file.svg create mode 100644 images/svg/laptop-medical.svg create mode 100644 images/svg/laptop.svg create mode 100644 images/svg/lari-sign.svg create mode 100644 images/svg/layer-group.svg create mode 100644 images/svg/leaf.svg create mode 100644 images/svg/left-long.svg create mode 100644 images/svg/left-right.svg create mode 100644 images/svg/lemon.svg create mode 100644 images/svg/less-than-equal.svg create mode 100644 images/svg/less-than.svg create mode 100644 images/svg/life-ring.svg create mode 100644 images/svg/lightbulb.svg create mode 100644 images/svg/lines-leaning.svg create mode 100644 images/svg/link-slash.svg create mode 100644 images/svg/link.svg create mode 100644 images/svg/lira-sign.svg create mode 100644 images/svg/list-check.svg create mode 100644 images/svg/list-ol.svg create mode 100644 images/svg/list-ul.svg create mode 100644 images/svg/list.svg create mode 100644 images/svg/litecoin-sign.svg create mode 100644 images/svg/location-arrow.svg create mode 100644 images/svg/location-crosshairs.svg create mode 100644 images/svg/location-dot.svg create mode 100644 images/svg/location-pin-lock.svg create mode 100644 images/svg/location-pin.svg create mode 100644 images/svg/lock-open.svg create mode 100644 images/svg/lock.svg create mode 100644 images/svg/locust.svg create mode 100644 images/svg/lungs-virus.svg create mode 100644 images/svg/lungs.svg create mode 100644 images/svg/m.svg create mode 100644 images/svg/magnet.svg create mode 100644 images/svg/magnifying-glass-arrow-right.svg create mode 100644 images/svg/magnifying-glass-chart.svg create mode 100644 images/svg/magnifying-glass-dollar.svg create mode 100644 images/svg/magnifying-glass-location.svg create mode 100644 images/svg/magnifying-glass-minus.svg create mode 100644 images/svg/magnifying-glass-plus.svg create mode 100644 images/svg/magnifying-glass.svg create mode 100644 images/svg/manat-sign.svg create mode 100644 images/svg/map-location-dot.svg create mode 100644 images/svg/map-location.svg create mode 100644 images/svg/map-pin.svg create mode 100644 images/svg/map.svg create mode 100644 images/svg/marker.svg create mode 100644 images/svg/mars-and-venus-burst.svg create mode 100644 images/svg/mars-and-venus.svg create mode 100644 images/svg/mars-double.svg create mode 100644 images/svg/mars-stroke-right.svg create mode 100644 images/svg/mars-stroke-up.svg create mode 100644 images/svg/mars-stroke.svg create mode 100644 images/svg/mars.svg create mode 100644 images/svg/martini-glass-citrus.svg create mode 100644 images/svg/martini-glass-empty.svg create mode 100644 images/svg/martini-glass.svg create mode 100644 images/svg/mask-face.svg create mode 100644 images/svg/mask-ventilator.svg create mode 100644 images/svg/mask.svg create mode 100644 images/svg/masks-theater.svg create mode 100644 images/svg/mattress-pillow.svg create mode 100644 images/svg/maximize.svg create mode 100644 images/svg/medal.svg create mode 100644 images/svg/memory.svg create mode 100644 images/svg/menorah.svg create mode 100644 images/svg/mercury.svg create mode 100644 images/svg/message.svg create mode 100644 images/svg/meteor.svg create mode 100644 images/svg/microchip.svg create mode 100644 images/svg/microphone-lines-slash.svg create mode 100644 images/svg/microphone-lines.svg create mode 100644 images/svg/microphone-slash.svg create mode 100644 images/svg/microphone.svg create mode 100644 images/svg/microscope.svg create mode 100644 images/svg/mill-sign.svg create mode 100644 images/svg/minimize.svg create mode 100644 images/svg/minus.svg create mode 100644 images/svg/mitten.svg create mode 100644 images/svg/mobile-button.svg create mode 100644 images/svg/mobile-retro.svg create mode 100644 images/svg/mobile-screen-button.svg create mode 100644 images/svg/mobile-screen.svg create mode 100644 images/svg/mobile.svg create mode 100644 images/svg/money-bill-1-wave.svg create mode 100644 images/svg/money-bill-1.svg create mode 100644 images/svg/money-bill-transfer.svg create mode 100644 images/svg/money-bill-trend-up.svg create mode 100644 images/svg/money-bill-wave.svg create mode 100644 images/svg/money-bill-wheat.svg create mode 100644 images/svg/money-bill.svg create mode 100644 images/svg/money-bills.svg create mode 100644 images/svg/money-check-dollar.svg create mode 100644 images/svg/money-check.svg create mode 100644 images/svg/monument.svg create mode 100644 images/svg/moon.svg create mode 100644 images/svg/mortar-pestle.svg create mode 100644 images/svg/mosque.svg create mode 100644 images/svg/mosquito-net.svg create mode 100644 images/svg/mosquito.svg create mode 100644 images/svg/motorcycle.svg create mode 100644 images/svg/mound.svg create mode 100644 images/svg/mountain-city.svg create mode 100644 images/svg/mountain-sun.svg create mode 100644 images/svg/mountain.svg create mode 100644 images/svg/mug-hot.svg create mode 100644 images/svg/mug-saucer.svg create mode 100644 images/svg/music.svg create mode 100644 images/svg/n.svg create mode 100644 images/svg/naira-sign.svg create mode 100644 images/svg/network-wired.svg create mode 100644 images/svg/neuter.svg create mode 100644 images/svg/newspaper.svg create mode 100644 images/svg/not-equal.svg create mode 100644 images/svg/notdef.svg create mode 100644 images/svg/note-sticky.svg create mode 100644 images/svg/notes-medical.svg create mode 100644 images/svg/o.svg create mode 100644 images/svg/object-group.svg create mode 100644 images/svg/object-ungroup.svg create mode 100644 images/svg/oil-can.svg create mode 100644 images/svg/oil-well.svg create mode 100644 images/svg/om.svg create mode 100644 images/svg/otter.svg create mode 100644 images/svg/outdent.svg create mode 100644 images/svg/p.svg create mode 100644 images/svg/pager.svg create mode 100644 images/svg/paint-roller.svg create mode 100644 images/svg/paintbrush.svg create mode 100644 images/svg/palette.svg create mode 100644 images/svg/pallet.svg create mode 100644 images/svg/panorama.svg create mode 100644 images/svg/paper-plane.svg create mode 100644 images/svg/paperclip.svg create mode 100644 images/svg/parachute-box.svg create mode 100644 images/svg/paragraph.svg create mode 100644 images/svg/passport.svg create mode 100644 images/svg/paste.svg create mode 100644 images/svg/pause.svg create mode 100644 images/svg/paw.svg create mode 100644 images/svg/peace.svg create mode 100644 images/svg/pen-clip.svg create mode 100644 images/svg/pen-fancy.svg create mode 100644 images/svg/pen-nib.svg create mode 100644 images/svg/pen-ruler.svg create mode 100644 images/svg/pen-to-square.svg create mode 100644 images/svg/pen.svg create mode 100644 images/svg/pencil.svg create mode 100644 images/svg/people-arrows.svg create mode 100644 images/svg/people-carry-box.svg create mode 100644 images/svg/people-group.svg create mode 100644 images/svg/people-line.svg create mode 100644 images/svg/people-pulling.svg create mode 100644 images/svg/people-robbery.svg create mode 100644 images/svg/people-roof.svg create mode 100644 images/svg/pepper-hot.svg create mode 100644 images/svg/percent.svg create mode 100644 images/svg/person-arrow-down-to-line.svg create mode 100644 images/svg/person-arrow-up-from-line.svg create mode 100644 images/svg/person-biking.svg create mode 100644 images/svg/person-booth.svg create mode 100644 images/svg/person-breastfeeding.svg create mode 100644 images/svg/person-burst.svg create mode 100644 images/svg/person-cane.svg create mode 100644 images/svg/person-chalkboard.svg create mode 100644 images/svg/person-circle-check.svg create mode 100644 images/svg/person-circle-exclamation.svg create mode 100644 images/svg/person-circle-minus.svg create mode 100644 images/svg/person-circle-plus.svg create mode 100644 images/svg/person-circle-question.svg create mode 100644 images/svg/person-circle-xmark.svg create mode 100644 images/svg/person-digging.svg create mode 100644 images/svg/person-dots-from-line.svg create mode 100644 images/svg/person-dress-burst.svg create mode 100644 images/svg/person-dress.svg create mode 100644 images/svg/person-drowning.svg create mode 100644 images/svg/person-falling-burst.svg create mode 100644 images/svg/person-falling.svg create mode 100644 images/svg/person-half-dress.svg create mode 100644 images/svg/person-harassing.svg create mode 100644 images/svg/person-hiking.svg create mode 100644 images/svg/person-military-pointing.svg create mode 100644 images/svg/person-military-rifle.svg create mode 100644 images/svg/person-military-to-person.svg create mode 100644 images/svg/person-praying.svg create mode 100644 images/svg/person-pregnant.svg create mode 100644 images/svg/person-rays.svg create mode 100644 images/svg/person-rifle.svg create mode 100644 images/svg/person-running.svg create mode 100644 images/svg/person-shelter.svg create mode 100644 images/svg/person-skating.svg create mode 100644 images/svg/person-skiing-nordic.svg create mode 100644 images/svg/person-skiing.svg create mode 100644 images/svg/person-snowboarding.svg create mode 100644 images/svg/person-swimming.svg create mode 100644 images/svg/person-through-window.svg create mode 100644 images/svg/person-walking-arrow-loop-left.svg create mode 100644 images/svg/person-walking-arrow-right.svg create mode 100644 images/svg/person-walking-dashed-line-arrow-right.svg create mode 100644 images/svg/person-walking-luggage.svg create mode 100644 images/svg/person-walking-with-cane.svg create mode 100644 images/svg/person-walking.svg create mode 100644 images/svg/person.svg create mode 100644 images/svg/peseta-sign.svg create mode 100644 images/svg/peso-sign.svg create mode 100644 images/svg/phone-flip.svg create mode 100644 images/svg/phone-slash.svg create mode 100644 images/svg/phone-volume.svg create mode 100644 images/svg/phone.svg create mode 100644 images/svg/photo-film.svg create mode 100644 images/svg/piggy-bank.svg create mode 100644 images/svg/pills.svg create mode 100644 images/svg/pizza-slice.svg create mode 100644 images/svg/place-of-worship.svg create mode 100644 images/svg/plane-arrival.svg create mode 100644 images/svg/plane-circle-check.svg create mode 100644 images/svg/plane-circle-exclamation.svg create mode 100644 images/svg/plane-circle-xmark.svg create mode 100644 images/svg/plane-departure.svg create mode 100644 images/svg/plane-lock.svg create mode 100644 images/svg/plane-slash.svg create mode 100644 images/svg/plane-up.svg create mode 100644 images/svg/plane.svg create mode 100644 images/svg/plant-wilt.svg create mode 100644 images/svg/plate-wheat.svg create mode 100644 images/svg/play.svg create mode 100644 images/svg/plug-circle-bolt.svg create mode 100644 images/svg/plug-circle-check.svg create mode 100644 images/svg/plug-circle-exclamation.svg create mode 100644 images/svg/plug-circle-minus.svg create mode 100644 images/svg/plug-circle-plus.svg create mode 100644 images/svg/plug-circle-xmark.svg create mode 100644 images/svg/plug.svg create mode 100644 images/svg/plus-minus.svg create mode 100644 images/svg/plus.svg create mode 100644 images/svg/podcast.svg create mode 100644 images/svg/poo-storm.svg create mode 100644 images/svg/poo.svg create mode 100644 images/svg/poop.svg create mode 100644 images/svg/power-off.svg create mode 100644 images/svg/prescription-bottle-medical.svg create mode 100644 images/svg/prescription-bottle.svg create mode 100644 images/svg/prescription.svg create mode 100644 images/svg/print.svg create mode 100644 images/svg/pump-medical.svg create mode 100644 images/svg/pump-soap.svg create mode 100644 images/svg/puzzle-piece.svg create mode 100644 images/svg/q.svg create mode 100644 images/svg/qrcode.svg create mode 100644 images/svg/question.svg create mode 100644 images/svg/quote-left.svg create mode 100644 images/svg/quote-right.svg create mode 100644 images/svg/r.svg create mode 100644 images/svg/radiation.svg create mode 100644 images/svg/radio.svg create mode 100644 images/svg/rainbow.svg create mode 100644 images/svg/ranking-star.svg create mode 100644 images/svg/receipt.svg create mode 100644 images/svg/record-vinyl.svg create mode 100644 images/svg/rectangle-ad.svg create mode 100644 images/svg/rectangle-list.svg create mode 100644 images/svg/rectangle-xmark.svg create mode 100644 images/svg/recycle.svg create mode 100644 images/svg/registered.svg create mode 100644 images/svg/repeat.svg create mode 100644 images/svg/reply-all.svg create mode 100644 images/svg/reply.svg create mode 100644 images/svg/republican.svg create mode 100644 images/svg/restroom.svg create mode 100644 images/svg/retweet.svg create mode 100644 images/svg/ribbon.svg create mode 100644 images/svg/right-from-bracket.svg create mode 100644 images/svg/right-left.svg create mode 100644 images/svg/right-long.svg create mode 100644 images/svg/right-to-bracket.svg create mode 100644 images/svg/ring.svg create mode 100644 images/svg/road-barrier.svg create mode 100644 images/svg/road-bridge.svg create mode 100644 images/svg/road-circle-check.svg create mode 100644 images/svg/road-circle-exclamation.svg create mode 100644 images/svg/road-circle-xmark.svg create mode 100644 images/svg/road-lock.svg create mode 100644 images/svg/road-spikes.svg create mode 100644 images/svg/road.svg create mode 100644 images/svg/robot.svg create mode 100644 images/svg/rocket.svg create mode 100644 images/svg/rotate-left.svg create mode 100644 images/svg/rotate-right.svg create mode 100644 images/svg/rotate.svg create mode 100644 images/svg/route.svg create mode 100644 images/svg/rss.svg create mode 100644 images/svg/ruble-sign.svg create mode 100644 images/svg/rug.svg create mode 100644 images/svg/ruler-combined.svg create mode 100644 images/svg/ruler-horizontal.svg create mode 100644 images/svg/ruler-vertical.svg create mode 100644 images/svg/ruler.svg create mode 100644 images/svg/rupee-sign.svg create mode 100644 images/svg/rupiah-sign.svg create mode 100644 images/svg/s.svg create mode 100644 images/svg/sack-dollar.svg create mode 100644 images/svg/sack-xmark.svg create mode 100644 images/svg/sailboat.svg create mode 100644 images/svg/satellite-dish.svg create mode 100644 images/svg/satellite.svg create mode 100644 images/svg/scale-balanced.svg create mode 100644 images/svg/scale-unbalanced-flip.svg create mode 100644 images/svg/scale-unbalanced.svg create mode 100644 images/svg/school-circle-check.svg create mode 100644 images/svg/school-circle-exclamation.svg create mode 100644 images/svg/school-circle-xmark.svg create mode 100644 images/svg/school-flag.svg create mode 100644 images/svg/school-lock.svg create mode 100644 images/svg/school.svg create mode 100644 images/svg/scissors.svg create mode 100644 images/svg/screwdriver-wrench.svg create mode 100644 images/svg/screwdriver.svg create mode 100644 images/svg/scroll-torah.svg create mode 100644 images/svg/scroll.svg create mode 100644 images/svg/sd-card.svg create mode 100644 images/svg/section.svg create mode 100644 images/svg/seedling.svg create mode 100644 images/svg/server.svg create mode 100644 images/svg/shapes.svg create mode 100644 images/svg/share-from-square.svg create mode 100644 images/svg/share-nodes.svg create mode 100644 images/svg/share.svg create mode 100644 images/svg/sheet-plastic.svg create mode 100644 images/svg/shekel-sign.svg create mode 100644 images/svg/shield-cat.svg create mode 100644 images/svg/shield-dog.svg create mode 100644 images/svg/shield-halved.svg create mode 100644 images/svg/shield-heart.svg create mode 100644 images/svg/shield-virus.svg create mode 100644 images/svg/shield.svg create mode 100644 images/svg/ship.svg create mode 100644 images/svg/shirt.svg create mode 100644 images/svg/shoe-prints.svg create mode 100644 images/svg/shop-lock.svg create mode 100644 images/svg/shop-slash.svg create mode 100644 images/svg/shop.svg create mode 100644 images/svg/shower.svg create mode 100644 images/svg/shrimp.svg create mode 100644 images/svg/shuffle.svg create mode 100644 images/svg/shuttle-space.svg create mode 100644 images/svg/sign-hanging.svg create mode 100644 images/svg/signal.svg create mode 100644 images/svg/signature.svg create mode 100644 images/svg/signs-post.svg create mode 100644 images/svg/sim-card.svg create mode 100644 images/svg/sink.svg create mode 100644 images/svg/sitemap.svg create mode 100644 images/svg/skull-crossbones.svg create mode 100644 images/svg/skull.svg create mode 100644 images/svg/slash.svg create mode 100644 images/svg/sleigh.svg create mode 100644 images/svg/sliders.svg create mode 100644 images/svg/smog.svg create mode 100644 images/svg/smoking.svg create mode 100644 images/svg/snowflake.svg create mode 100644 images/svg/snowman.svg create mode 100644 images/svg/snowplow.svg create mode 100644 images/svg/soap.svg create mode 100644 images/svg/socks.svg create mode 100644 images/svg/solar-panel.svg create mode 100644 images/svg/sort-down.svg create mode 100644 images/svg/sort-up.svg create mode 100644 images/svg/sort.svg create mode 100644 images/svg/spa.svg create mode 100644 images/svg/spaghetti-monster-flying.svg create mode 100644 images/svg/spell-check.svg create mode 100644 images/svg/spider.svg create mode 100644 images/svg/spinner.svg create mode 100644 images/svg/splotch.svg create mode 100644 images/svg/spoon.svg create mode 100644 images/svg/spray-can-sparkles.svg create mode 100644 images/svg/spray-can.svg create mode 100644 images/svg/square-arrow-up-right.svg create mode 100644 images/svg/square-caret-down.svg create mode 100644 images/svg/square-caret-left.svg create mode 100644 images/svg/square-caret-right.svg create mode 100644 images/svg/square-caret-up.svg create mode 100644 images/svg/square-check.svg create mode 100644 images/svg/square-envelope.svg create mode 100644 images/svg/square-full.svg create mode 100644 images/svg/square-h.svg create mode 100644 images/svg/square-minus.svg create mode 100644 images/svg/square-nfi.svg create mode 100644 images/svg/square-parking.svg create mode 100644 images/svg/square-pen.svg create mode 100644 images/svg/square-person-confined.svg create mode 100644 images/svg/square-phone-flip.svg create mode 100644 images/svg/square-phone.svg create mode 100644 images/svg/square-plus.svg create mode 100644 images/svg/square-poll-horizontal.svg create mode 100644 images/svg/square-poll-vertical.svg create mode 100644 images/svg/square-root-variable.svg create mode 100644 images/svg/square-rss.svg create mode 100644 images/svg/square-share-nodes.svg create mode 100644 images/svg/square-up-right.svg create mode 100644 images/svg/square-virus.svg create mode 100644 images/svg/square-xmark.svg create mode 100644 images/svg/square.svg create mode 100644 images/svg/staff-snake.svg create mode 100644 images/svg/stairs.svg create mode 100644 images/svg/stamp.svg create mode 100644 images/svg/stapler.svg create mode 100644 images/svg/star-and-crescent.svg create mode 100644 images/svg/star-half-stroke.svg create mode 100644 images/svg/star-half.svg create mode 100644 images/svg/star-of-david.svg create mode 100644 images/svg/star-of-life.svg create mode 100644 images/svg/star.svg create mode 100644 images/svg/sterling-sign.svg create mode 100644 images/svg/stethoscope.svg create mode 100644 images/svg/stop.svg create mode 100644 images/svg/stopwatch-20.svg create mode 100644 images/svg/stopwatch.svg create mode 100644 images/svg/store-slash.svg create mode 100644 images/svg/store.svg create mode 100644 images/svg/street-view.svg create mode 100644 images/svg/strikethrough.svg create mode 100644 images/svg/stroopwafel.svg create mode 100644 images/svg/subscript.svg create mode 100644 images/svg/suitcase-medical.svg create mode 100644 images/svg/suitcase-rolling.svg create mode 100644 images/svg/suitcase.svg create mode 100644 images/svg/sun-plant-wilt.svg create mode 100644 images/svg/sun.svg create mode 100644 images/svg/superscript.svg create mode 100644 images/svg/swatchbook.svg create mode 100644 images/svg/synagogue.svg create mode 100644 images/svg/syringe.svg create mode 100644 images/svg/t.svg create mode 100644 images/svg/table-cells-large.svg create mode 100644 images/svg/table-cells.svg create mode 100644 images/svg/table-columns.svg create mode 100644 images/svg/table-list.svg create mode 100644 images/svg/table-tennis-paddle-ball.svg create mode 100644 images/svg/table.svg create mode 100644 images/svg/tablet-button.svg create mode 100644 images/svg/tablet-screen-button.svg create mode 100644 images/svg/tablet.svg create mode 100644 images/svg/tablets.svg create mode 100644 images/svg/tachograph-digital.svg create mode 100644 images/svg/tag.svg create mode 100644 images/svg/tags.svg create mode 100644 images/svg/tape.svg create mode 100644 images/svg/tarp-droplet.svg create mode 100644 images/svg/tarp.svg create mode 100644 images/svg/taxi.svg create mode 100644 images/svg/teeth-open.svg create mode 100644 images/svg/teeth.svg create mode 100644 images/svg/temperature-arrow-down.svg create mode 100644 images/svg/temperature-arrow-up.svg create mode 100644 images/svg/temperature-empty.svg create mode 100644 images/svg/temperature-full.svg create mode 100644 images/svg/temperature-half.svg create mode 100644 images/svg/temperature-high.svg create mode 100644 images/svg/temperature-low.svg create mode 100644 images/svg/temperature-quarter.svg create mode 100644 images/svg/temperature-three-quarters.svg create mode 100644 images/svg/tenge-sign.svg create mode 100644 images/svg/tent-arrow-down-to-line.svg create mode 100644 images/svg/tent-arrow-left-right.svg create mode 100644 images/svg/tent-arrow-turn-left.svg create mode 100644 images/svg/tent-arrows-down.svg create mode 100644 images/svg/tent.svg create mode 100644 images/svg/tents.svg create mode 100644 images/svg/terminal.svg create mode 100644 images/svg/text-height.svg create mode 100644 images/svg/text-slash.svg create mode 100644 images/svg/text-width.svg create mode 100644 images/svg/thermometer.svg create mode 100644 images/svg/thumbs-down.svg create mode 100644 images/svg/thumbs-up.svg create mode 100644 images/svg/thumbtack.svg create mode 100644 images/svg/ticket-simple.svg create mode 100644 images/svg/ticket.svg create mode 100644 images/svg/timeline.svg create mode 100644 images/svg/toggle-off.svg create mode 100644 images/svg/toggle-on.svg create mode 100644 images/svg/toilet-paper-slash.svg create mode 100644 images/svg/toilet-paper.svg create mode 100644 images/svg/toilet-portable.svg create mode 100644 images/svg/toilet.svg create mode 100644 images/svg/toilets-portable.svg create mode 100644 images/svg/toolbox.svg create mode 100644 images/svg/tooth.svg create mode 100644 images/svg/torii-gate.svg create mode 100644 images/svg/tornado.svg create mode 100644 images/svg/tower-broadcast.svg create mode 100644 images/svg/tower-cell.svg create mode 100644 images/svg/tower-observation.svg create mode 100644 images/svg/tractor.svg create mode 100644 images/svg/trademark.svg create mode 100644 images/svg/traffic-light.svg create mode 100644 images/svg/trailer.svg create mode 100644 images/svg/train-subway.svg create mode 100644 images/svg/train-tram.svg create mode 100644 images/svg/train.svg create mode 100644 images/svg/transgender.svg create mode 100644 images/svg/trash-arrow-up.svg create mode 100644 images/svg/trash-can-arrow-up.svg create mode 100644 images/svg/trash-can.svg create mode 100644 images/svg/trash.svg create mode 100644 images/svg/tree-city.svg create mode 100644 images/svg/tree.svg create mode 100644 images/svg/triangle-exclamation.svg create mode 100644 images/svg/trophy.svg create mode 100644 images/svg/trowel-bricks.svg create mode 100644 images/svg/trowel.svg create mode 100644 images/svg/truck-arrow-right.svg create mode 100644 images/svg/truck-droplet.svg create mode 100644 images/svg/truck-fast.svg create mode 100644 images/svg/truck-field-un.svg create mode 100644 images/svg/truck-field.svg create mode 100644 images/svg/truck-front.svg create mode 100644 images/svg/truck-medical.svg create mode 100644 images/svg/truck-monster.svg create mode 100644 images/svg/truck-moving.svg create mode 100644 images/svg/truck-pickup.svg create mode 100644 images/svg/truck-plane.svg create mode 100644 images/svg/truck-ramp-box.svg create mode 100644 images/svg/truck.svg create mode 100644 images/svg/tty.svg create mode 100644 images/svg/turkish-lira-sign.svg create mode 100644 images/svg/turn-down.svg create mode 100644 images/svg/turn-up.svg create mode 100644 images/svg/tv.svg create mode 100644 images/svg/u.svg create mode 100644 images/svg/umbrella-beach.svg create mode 100644 images/svg/umbrella.svg create mode 100644 images/svg/underline.svg create mode 100644 images/svg/universal-access.svg create mode 100644 images/svg/unlock-keyhole.svg create mode 100644 images/svg/unlock.svg create mode 100644 images/svg/up-down-left-right.svg create mode 100644 images/svg/up-down.svg create mode 100644 images/svg/up-long.svg create mode 100644 images/svg/up-right-and-down-left-from-center.svg create mode 100644 images/svg/up-right-from-square.svg create mode 100644 images/svg/upload.svg create mode 100644 images/svg/user-astronaut.svg create mode 100644 images/svg/user-check.svg create mode 100644 images/svg/user-clock.svg create mode 100644 images/svg/user-doctor.svg create mode 100644 images/svg/user-gear.svg create mode 100644 images/svg/user-graduate.svg create mode 100644 images/svg/user-group.svg create mode 100644 images/svg/user-injured.svg create mode 100644 images/svg/user-large-slash.svg create mode 100644 images/svg/user-large.svg create mode 100644 images/svg/user-lock.svg create mode 100644 images/svg/user-minus.svg create mode 100644 images/svg/user-ninja.svg create mode 100644 images/svg/user-nurse.svg create mode 100644 images/svg/user-pen.svg create mode 100644 images/svg/user-plus.svg create mode 100644 images/svg/user-secret.svg create mode 100644 images/svg/user-shield.svg create mode 100644 images/svg/user-slash.svg create mode 100644 images/svg/user-tag.svg create mode 100644 images/svg/user-tie.svg create mode 100644 images/svg/user-xmark.svg create mode 100644 images/svg/user.svg create mode 100644 images/svg/users-between-lines.svg create mode 100644 images/svg/users-gear.svg create mode 100644 images/svg/users-line.svg create mode 100644 images/svg/users-rays.svg create mode 100644 images/svg/users-rectangle.svg create mode 100644 images/svg/users-slash.svg create mode 100644 images/svg/users-viewfinder.svg create mode 100644 images/svg/users.svg create mode 100644 images/svg/utensils.svg create mode 100644 images/svg/v.svg create mode 100644 images/svg/van-shuttle.svg create mode 100644 images/svg/vault.svg create mode 100644 images/svg/vector-square.svg create mode 100644 images/svg/venus-double.svg create mode 100644 images/svg/venus-mars.svg create mode 100644 images/svg/venus.svg create mode 100644 images/svg/vest-patches.svg create mode 100644 images/svg/vest.svg create mode 100644 images/svg/vial-circle-check.svg create mode 100644 images/svg/vial-virus.svg create mode 100644 images/svg/vial.svg create mode 100644 images/svg/vials.svg create mode 100644 images/svg/video-slash.svg create mode 100644 images/svg/video.svg create mode 100644 images/svg/vihara.svg create mode 100644 images/svg/virus-covid-slash.svg create mode 100644 images/svg/virus-covid.svg create mode 100644 images/svg/virus-slash.svg create mode 100644 images/svg/virus.svg create mode 100644 images/svg/viruses.svg create mode 100644 images/svg/voicemail.svg create mode 100644 images/svg/volcano.svg create mode 100644 images/svg/volleyball.svg create mode 100644 images/svg/volume-high.svg create mode 100644 images/svg/volume-low.svg create mode 100644 images/svg/volume-off.svg create mode 100644 images/svg/volume-xmark.svg create mode 100644 images/svg/vr-cardboard.svg create mode 100644 images/svg/w.svg create mode 100644 images/svg/walkie-talkie.svg create mode 100644 images/svg/wallet.svg create mode 100644 images/svg/wand-magic-sparkles.svg create mode 100644 images/svg/wand-magic.svg create mode 100644 images/svg/wand-sparkles.svg create mode 100644 images/svg/warehouse.svg create mode 100644 images/svg/water-ladder.svg create mode 100644 images/svg/water.svg create mode 100644 images/svg/wave-square.svg create mode 100644 images/svg/weight-hanging.svg create mode 100644 images/svg/weight-scale.svg create mode 100644 images/svg/wheat-awn-circle-exclamation.svg create mode 100644 images/svg/wheat-awn.svg create mode 100644 images/svg/wheelchair-move.svg create mode 100644 images/svg/wheelchair.svg create mode 100644 images/svg/whiskey-glass.svg create mode 100644 images/svg/wifi.svg create mode 100644 images/svg/wind.svg create mode 100644 images/svg/window-maximize.svg create mode 100644 images/svg/window-minimize.svg create mode 100644 images/svg/window-restore.svg create mode 100644 images/svg/wine-bottle.svg create mode 100644 images/svg/wine-glass-empty.svg create mode 100644 images/svg/wine-glass.svg create mode 100644 images/svg/won-sign.svg create mode 100644 images/svg/worm.svg create mode 100644 images/svg/wrench.svg create mode 100644 images/svg/x-ray.svg create mode 100644 images/svg/x.svg create mode 100644 images/svg/xmark.svg create mode 100644 images/svg/xmarks-lines.svg create mode 100644 images/svg/y.svg create mode 100644 images/svg/yen-sign.svg create mode 100644 images/svg/yin-yang.svg create mode 100644 images/svg/z.svg create mode 100644 src/cdlgeditmap.cpp create mode 100644 src/cdlgeditmap.h create mode 100644 src/cdlgeditmap.ui create mode 100644 src/cdlgmdfdescription.cpp create mode 100644 src/cdlgmdfdescription.h create mode 100644 src/cdlgmdfinfourl.cpp create mode 100644 src/cdlgmdfinfourl.h create mode 100644 src/cdlgmdfinfourl.ui create mode 100644 src/copy.svg create mode 100644 src/iso639.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f442184c..16d3768c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -250,10 +250,12 @@ qt5_wrap_ui(UI src/mainwindow.ui src/cdlgmdffiledriver.ui src/cdlgmdffile.ui src/cdlgmdfremotevar.ui - src/cdlgmdfdescription.ui + src/cdlgmdfdescription.ui + src/cdlgmdfinfourl.ui src/cdlgmdffilefirmware.ui src/cdlgmdffilevideo.ui src/cdlgmdfvaluelist.ui + src/cdlgeditmap.ui ) add_executable(${PROJECT_NAME} @@ -484,6 +486,21 @@ add_executable(${PROJECT_NAME} src/cdlgmdfmodule.cpp src/cdlgmdfmodule.h + build/ui_cdlgmdfdescription.h + src/cdlgmdfdescription.ui + src/cdlgmdfdescription.cpp + src/cdlgmdfdescription.h + + build/ui_cdlgmdfinfourl.h + src/cdlgmdfinfourl.ui + src/cdlgmdfinfourl.cpp + src/cdlgmdfinfourl.h + + build/ui_cdlgeditmap.h + src/cdlgeditmap.ui + src/cdlgeditmap.cpp + src/cdlgeditmap.h + ${VSCP_PATH}/src/vscp/common/version.h ${VSCP_PATH}/src/vscp/common/vscp.h ${VSCP_PATH}/src/vscp/common/vscpremotetcpif.h diff --git a/images/notes.txt b/images/notes.txt new file mode 100644 index 00000000..35c381f0 --- /dev/null +++ b/images/notes.txt @@ -0,0 +1,3 @@ +icons from + +https://github.com/FortAwesome/Font-Awesome.git \ No newline at end of file diff --git a/images/svg/0.svg b/images/svg/0.svg new file mode 100644 index 00000000..d15544b5 --- /dev/null +++ b/images/svg/0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/1.svg b/images/svg/1.svg new file mode 100644 index 00000000..070e084c --- /dev/null +++ b/images/svg/1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/2.svg b/images/svg/2.svg new file mode 100644 index 00000000..097a0c7b --- /dev/null +++ b/images/svg/2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/3.svg b/images/svg/3.svg new file mode 100644 index 00000000..7d7e42ff --- /dev/null +++ b/images/svg/3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/4.svg b/images/svg/4.svg new file mode 100644 index 00000000..15f48fa8 --- /dev/null +++ b/images/svg/4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/5.svg b/images/svg/5.svg new file mode 100644 index 00000000..ccb9c2d8 --- /dev/null +++ b/images/svg/5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/6.svg b/images/svg/6.svg new file mode 100644 index 00000000..fe6b2997 --- /dev/null +++ b/images/svg/6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/7.svg b/images/svg/7.svg new file mode 100644 index 00000000..76e755bf --- /dev/null +++ b/images/svg/7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/8.svg b/images/svg/8.svg new file mode 100644 index 00000000..8a43a4f4 --- /dev/null +++ b/images/svg/8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/9.svg b/images/svg/9.svg new file mode 100644 index 00000000..b4c58778 --- /dev/null +++ b/images/svg/9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/a.svg b/images/svg/a.svg new file mode 100644 index 00000000..03afd599 --- /dev/null +++ b/images/svg/a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/address-book.svg b/images/svg/address-book.svg new file mode 100644 index 00000000..e87d1420 --- /dev/null +++ b/images/svg/address-book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/address-card.svg b/images/svg/address-card.svg new file mode 100644 index 00000000..611a55e3 --- /dev/null +++ b/images/svg/address-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/align-center.svg b/images/svg/align-center.svg new file mode 100644 index 00000000..ab280099 --- /dev/null +++ b/images/svg/align-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/align-justify.svg b/images/svg/align-justify.svg new file mode 100644 index 00000000..f8e628f4 --- /dev/null +++ b/images/svg/align-justify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/align-left.svg b/images/svg/align-left.svg new file mode 100644 index 00000000..844bd8db --- /dev/null +++ b/images/svg/align-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/align-right.svg b/images/svg/align-right.svg new file mode 100644 index 00000000..7570612a --- /dev/null +++ b/images/svg/align-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/anchor-circle-check.svg b/images/svg/anchor-circle-check.svg new file mode 100644 index 00000000..e9a92f0b --- /dev/null +++ b/images/svg/anchor-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/anchor-circle-exclamation.svg b/images/svg/anchor-circle-exclamation.svg new file mode 100644 index 00000000..87f4cc97 --- /dev/null +++ b/images/svg/anchor-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/anchor-circle-xmark.svg b/images/svg/anchor-circle-xmark.svg new file mode 100644 index 00000000..66849ae2 --- /dev/null +++ b/images/svg/anchor-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/anchor-lock.svg b/images/svg/anchor-lock.svg new file mode 100644 index 00000000..27b268ee --- /dev/null +++ b/images/svg/anchor-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/anchor.svg b/images/svg/anchor.svg new file mode 100644 index 00000000..281b2e88 --- /dev/null +++ b/images/svg/anchor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angle-down.svg b/images/svg/angle-down.svg new file mode 100644 index 00000000..1eba548c --- /dev/null +++ b/images/svg/angle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angle-left.svg b/images/svg/angle-left.svg new file mode 100644 index 00000000..804865ab --- /dev/null +++ b/images/svg/angle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angle-right.svg b/images/svg/angle-right.svg new file mode 100644 index 00000000..e1ac160f --- /dev/null +++ b/images/svg/angle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angle-up.svg b/images/svg/angle-up.svg new file mode 100644 index 00000000..67f29a8f --- /dev/null +++ b/images/svg/angle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angles-down.svg b/images/svg/angles-down.svg new file mode 100644 index 00000000..6d6d79d0 --- /dev/null +++ b/images/svg/angles-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angles-left.svg b/images/svg/angles-left.svg new file mode 100644 index 00000000..d6d20406 --- /dev/null +++ b/images/svg/angles-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angles-right.svg b/images/svg/angles-right.svg new file mode 100644 index 00000000..0654d35e --- /dev/null +++ b/images/svg/angles-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/angles-up.svg b/images/svg/angles-up.svg new file mode 100644 index 00000000..3806da04 --- /dev/null +++ b/images/svg/angles-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ankh.svg b/images/svg/ankh.svg new file mode 100644 index 00000000..54ab041e --- /dev/null +++ b/images/svg/ankh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/apple-whole.svg b/images/svg/apple-whole.svg new file mode 100644 index 00000000..861be225 --- /dev/null +++ b/images/svg/apple-whole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/archway.svg b/images/svg/archway.svg new file mode 100644 index 00000000..f66ad382 --- /dev/null +++ b/images/svg/archway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-1-9.svg b/images/svg/arrow-down-1-9.svg new file mode 100644 index 00000000..bf28e2aa --- /dev/null +++ b/images/svg/arrow-down-1-9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-9-1.svg b/images/svg/arrow-down-9-1.svg new file mode 100644 index 00000000..0ccf49aa --- /dev/null +++ b/images/svg/arrow-down-9-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-a-z.svg b/images/svg/arrow-down-a-z.svg new file mode 100644 index 00000000..58ed7da9 --- /dev/null +++ b/images/svg/arrow-down-a-z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-long.svg b/images/svg/arrow-down-long.svg new file mode 100644 index 00000000..04361197 --- /dev/null +++ b/images/svg/arrow-down-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-short-wide.svg b/images/svg/arrow-down-short-wide.svg new file mode 100644 index 00000000..0e4bd619 --- /dev/null +++ b/images/svg/arrow-down-short-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-up-across-line.svg b/images/svg/arrow-down-up-across-line.svg new file mode 100644 index 00000000..a6b49fb8 --- /dev/null +++ b/images/svg/arrow-down-up-across-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-up-lock.svg b/images/svg/arrow-down-up-lock.svg new file mode 100644 index 00000000..3515331f --- /dev/null +++ b/images/svg/arrow-down-up-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-wide-short.svg b/images/svg/arrow-down-wide-short.svg new file mode 100644 index 00000000..631e2ac6 --- /dev/null +++ b/images/svg/arrow-down-wide-short.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down-z-a.svg b/images/svg/arrow-down-z-a.svg new file mode 100644 index 00000000..237a9123 --- /dev/null +++ b/images/svg/arrow-down-z-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-down.svg b/images/svg/arrow-down.svg new file mode 100644 index 00000000..1afac666 --- /dev/null +++ b/images/svg/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-left-long.svg b/images/svg/arrow-left-long.svg new file mode 100644 index 00000000..4482af4a --- /dev/null +++ b/images/svg/arrow-left-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-left.svg b/images/svg/arrow-left.svg new file mode 100644 index 00000000..b927121b --- /dev/null +++ b/images/svg/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-pointer.svg b/images/svg/arrow-pointer.svg new file mode 100644 index 00000000..70afe4d0 --- /dev/null +++ b/images/svg/arrow-pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-right-arrow-left.svg b/images/svg/arrow-right-arrow-left.svg new file mode 100644 index 00000000..75dcf5c2 --- /dev/null +++ b/images/svg/arrow-right-arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-right-from-bracket.svg b/images/svg/arrow-right-from-bracket.svg new file mode 100644 index 00000000..e4792a1f --- /dev/null +++ b/images/svg/arrow-right-from-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-right-long.svg b/images/svg/arrow-right-long.svg new file mode 100644 index 00000000..5776fd47 --- /dev/null +++ b/images/svg/arrow-right-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-right-to-bracket.svg b/images/svg/arrow-right-to-bracket.svg new file mode 100644 index 00000000..998b2252 --- /dev/null +++ b/images/svg/arrow-right-to-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-right-to-city.svg b/images/svg/arrow-right-to-city.svg new file mode 100644 index 00000000..22b51292 --- /dev/null +++ b/images/svg/arrow-right-to-city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-right.svg b/images/svg/arrow-right.svg new file mode 100644 index 00000000..9fb7fe97 --- /dev/null +++ b/images/svg/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-rotate-left.svg b/images/svg/arrow-rotate-left.svg new file mode 100644 index 00000000..694731a2 --- /dev/null +++ b/images/svg/arrow-rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-rotate-right.svg b/images/svg/arrow-rotate-right.svg new file mode 100644 index 00000000..6f3f898c --- /dev/null +++ b/images/svg/arrow-rotate-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-trend-down.svg b/images/svg/arrow-trend-down.svg new file mode 100644 index 00000000..63469be7 --- /dev/null +++ b/images/svg/arrow-trend-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-trend-up.svg b/images/svg/arrow-trend-up.svg new file mode 100644 index 00000000..3a2c0911 --- /dev/null +++ b/images/svg/arrow-trend-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-turn-down.svg b/images/svg/arrow-turn-down.svg new file mode 100644 index 00000000..3fb67b47 --- /dev/null +++ b/images/svg/arrow-turn-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-turn-up.svg b/images/svg/arrow-turn-up.svg new file mode 100644 index 00000000..ffdf628a --- /dev/null +++ b/images/svg/arrow-turn-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-1-9.svg b/images/svg/arrow-up-1-9.svg new file mode 100644 index 00000000..8eb50c7b --- /dev/null +++ b/images/svg/arrow-up-1-9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-9-1.svg b/images/svg/arrow-up-9-1.svg new file mode 100644 index 00000000..dcce2874 --- /dev/null +++ b/images/svg/arrow-up-9-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-a-z.svg b/images/svg/arrow-up-a-z.svg new file mode 100644 index 00000000..9038e7ea --- /dev/null +++ b/images/svg/arrow-up-a-z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-from-bracket.svg b/images/svg/arrow-up-from-bracket.svg new file mode 100644 index 00000000..a04b57ed --- /dev/null +++ b/images/svg/arrow-up-from-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-from-ground-water.svg b/images/svg/arrow-up-from-ground-water.svg new file mode 100644 index 00000000..0edcf9b6 --- /dev/null +++ b/images/svg/arrow-up-from-ground-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-from-water-pump.svg b/images/svg/arrow-up-from-water-pump.svg new file mode 100644 index 00000000..7b4f0b4e --- /dev/null +++ b/images/svg/arrow-up-from-water-pump.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-long.svg b/images/svg/arrow-up-long.svg new file mode 100644 index 00000000..0bb0b7ed --- /dev/null +++ b/images/svg/arrow-up-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-right-dots.svg b/images/svg/arrow-up-right-dots.svg new file mode 100644 index 00000000..d97333ce --- /dev/null +++ b/images/svg/arrow-up-right-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-right-from-square.svg b/images/svg/arrow-up-right-from-square.svg new file mode 100644 index 00000000..523a34e9 --- /dev/null +++ b/images/svg/arrow-up-right-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-short-wide.svg b/images/svg/arrow-up-short-wide.svg new file mode 100644 index 00000000..65bf7e2e --- /dev/null +++ b/images/svg/arrow-up-short-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-wide-short.svg b/images/svg/arrow-up-wide-short.svg new file mode 100644 index 00000000..ee547e0a --- /dev/null +++ b/images/svg/arrow-up-wide-short.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up-z-a.svg b/images/svg/arrow-up-z-a.svg new file mode 100644 index 00000000..0174594f --- /dev/null +++ b/images/svg/arrow-up-z-a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrow-up.svg b/images/svg/arrow-up.svg new file mode 100644 index 00000000..87b58498 --- /dev/null +++ b/images/svg/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-down-to-line.svg b/images/svg/arrows-down-to-line.svg new file mode 100644 index 00000000..8d380274 --- /dev/null +++ b/images/svg/arrows-down-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-down-to-people.svg b/images/svg/arrows-down-to-people.svg new file mode 100644 index 00000000..25ea589e --- /dev/null +++ b/images/svg/arrows-down-to-people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-left-right-to-line.svg b/images/svg/arrows-left-right-to-line.svg new file mode 100644 index 00000000..24289272 --- /dev/null +++ b/images/svg/arrows-left-right-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-left-right.svg b/images/svg/arrows-left-right.svg new file mode 100644 index 00000000..3f9ab9c0 --- /dev/null +++ b/images/svg/arrows-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-rotate.svg b/images/svg/arrows-rotate.svg new file mode 100644 index 00000000..13651dd2 --- /dev/null +++ b/images/svg/arrows-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-spin.svg b/images/svg/arrows-spin.svg new file mode 100644 index 00000000..4ff7560b --- /dev/null +++ b/images/svg/arrows-spin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-split-up-and-left.svg b/images/svg/arrows-split-up-and-left.svg new file mode 100644 index 00000000..f85e859e --- /dev/null +++ b/images/svg/arrows-split-up-and-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-to-circle.svg b/images/svg/arrows-to-circle.svg new file mode 100644 index 00000000..78d8d7b8 --- /dev/null +++ b/images/svg/arrows-to-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-to-dot.svg b/images/svg/arrows-to-dot.svg new file mode 100644 index 00000000..cf38a62c --- /dev/null +++ b/images/svg/arrows-to-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-to-eye.svg b/images/svg/arrows-to-eye.svg new file mode 100644 index 00000000..f588d011 --- /dev/null +++ b/images/svg/arrows-to-eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-turn-right.svg b/images/svg/arrows-turn-right.svg new file mode 100644 index 00000000..08167508 --- /dev/null +++ b/images/svg/arrows-turn-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-turn-to-dots.svg b/images/svg/arrows-turn-to-dots.svg new file mode 100644 index 00000000..3c4c527f --- /dev/null +++ b/images/svg/arrows-turn-to-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-up-down-left-right.svg b/images/svg/arrows-up-down-left-right.svg new file mode 100644 index 00000000..a3f51a80 --- /dev/null +++ b/images/svg/arrows-up-down-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-up-down.svg b/images/svg/arrows-up-down.svg new file mode 100644 index 00000000..df548fb1 --- /dev/null +++ b/images/svg/arrows-up-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/arrows-up-to-line.svg b/images/svg/arrows-up-to-line.svg new file mode 100644 index 00000000..af3aba81 --- /dev/null +++ b/images/svg/arrows-up-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/asterisk.svg b/images/svg/asterisk.svg new file mode 100644 index 00000000..98320217 --- /dev/null +++ b/images/svg/asterisk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/at.svg b/images/svg/at.svg new file mode 100644 index 00000000..d25f5dec --- /dev/null +++ b/images/svg/at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/atom.svg b/images/svg/atom.svg new file mode 100644 index 00000000..313a9178 --- /dev/null +++ b/images/svg/atom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/audio-description.svg b/images/svg/audio-description.svg new file mode 100644 index 00000000..ab7bd525 --- /dev/null +++ b/images/svg/audio-description.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/austral-sign.svg b/images/svg/austral-sign.svg new file mode 100644 index 00000000..a6894cee --- /dev/null +++ b/images/svg/austral-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/award.svg b/images/svg/award.svg new file mode 100644 index 00000000..8049abe0 --- /dev/null +++ b/images/svg/award.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/b.svg b/images/svg/b.svg new file mode 100644 index 00000000..f68be5e9 --- /dev/null +++ b/images/svg/b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/baby-carriage.svg b/images/svg/baby-carriage.svg new file mode 100644 index 00000000..86246cb6 --- /dev/null +++ b/images/svg/baby-carriage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/baby.svg b/images/svg/baby.svg new file mode 100644 index 00000000..a1749df3 --- /dev/null +++ b/images/svg/baby.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/backward-fast.svg b/images/svg/backward-fast.svg new file mode 100644 index 00000000..86cf8b00 --- /dev/null +++ b/images/svg/backward-fast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/backward-step.svg b/images/svg/backward-step.svg new file mode 100644 index 00000000..089cc565 --- /dev/null +++ b/images/svg/backward-step.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/backward.svg b/images/svg/backward.svg new file mode 100644 index 00000000..4496eb25 --- /dev/null +++ b/images/svg/backward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bacon.svg b/images/svg/bacon.svg new file mode 100644 index 00000000..9aa4e14b --- /dev/null +++ b/images/svg/bacon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bacteria.svg b/images/svg/bacteria.svg new file mode 100644 index 00000000..2244590a --- /dev/null +++ b/images/svg/bacteria.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bacterium.svg b/images/svg/bacterium.svg new file mode 100644 index 00000000..3c77b685 --- /dev/null +++ b/images/svg/bacterium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bag-shopping.svg b/images/svg/bag-shopping.svg new file mode 100644 index 00000000..c6e0eceb --- /dev/null +++ b/images/svg/bag-shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bahai.svg b/images/svg/bahai.svg new file mode 100644 index 00000000..6c8d98be --- /dev/null +++ b/images/svg/bahai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/baht-sign.svg b/images/svg/baht-sign.svg new file mode 100644 index 00000000..b8cf0819 --- /dev/null +++ b/images/svg/baht-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ban-smoking.svg b/images/svg/ban-smoking.svg new file mode 100644 index 00000000..1e2951d3 --- /dev/null +++ b/images/svg/ban-smoking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ban.svg b/images/svg/ban.svg new file mode 100644 index 00000000..cd84b0ee --- /dev/null +++ b/images/svg/ban.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bandage.svg b/images/svg/bandage.svg new file mode 100644 index 00000000..7d3a0e8b --- /dev/null +++ b/images/svg/bandage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bangladeshi-taka-sign.svg b/images/svg/bangladeshi-taka-sign.svg new file mode 100644 index 00000000..8983a9c3 --- /dev/null +++ b/images/svg/bangladeshi-taka-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/barcode.svg b/images/svg/barcode.svg new file mode 100644 index 00000000..c9a9c840 --- /dev/null +++ b/images/svg/barcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bars-progress.svg b/images/svg/bars-progress.svg new file mode 100644 index 00000000..41e947a6 --- /dev/null +++ b/images/svg/bars-progress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bars-staggered.svg b/images/svg/bars-staggered.svg new file mode 100644 index 00000000..01258c59 --- /dev/null +++ b/images/svg/bars-staggered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bars.svg b/images/svg/bars.svg new file mode 100644 index 00000000..8a541299 --- /dev/null +++ b/images/svg/bars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/baseball-bat-ball.svg b/images/svg/baseball-bat-ball.svg new file mode 100644 index 00000000..5a80b217 --- /dev/null +++ b/images/svg/baseball-bat-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/baseball.svg b/images/svg/baseball.svg new file mode 100644 index 00000000..10ccb592 --- /dev/null +++ b/images/svg/baseball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/basket-shopping.svg b/images/svg/basket-shopping.svg new file mode 100644 index 00000000..fe41145e --- /dev/null +++ b/images/svg/basket-shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/basketball.svg b/images/svg/basketball.svg new file mode 100644 index 00000000..6b0d71df --- /dev/null +++ b/images/svg/basketball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bath.svg b/images/svg/bath.svg new file mode 100644 index 00000000..fceafb8b --- /dev/null +++ b/images/svg/bath.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/battery-empty.svg b/images/svg/battery-empty.svg new file mode 100644 index 00000000..29cb43f2 --- /dev/null +++ b/images/svg/battery-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/battery-full.svg b/images/svg/battery-full.svg new file mode 100644 index 00000000..31043533 --- /dev/null +++ b/images/svg/battery-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/battery-half.svg b/images/svg/battery-half.svg new file mode 100644 index 00000000..877ed436 --- /dev/null +++ b/images/svg/battery-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/battery-quarter.svg b/images/svg/battery-quarter.svg new file mode 100644 index 00000000..4daae7ec --- /dev/null +++ b/images/svg/battery-quarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/battery-three-quarters.svg b/images/svg/battery-three-quarters.svg new file mode 100644 index 00000000..87df0cb4 --- /dev/null +++ b/images/svg/battery-three-quarters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bed-pulse.svg b/images/svg/bed-pulse.svg new file mode 100644 index 00000000..3263fdbd --- /dev/null +++ b/images/svg/bed-pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bed.svg b/images/svg/bed.svg new file mode 100644 index 00000000..3b9619b0 --- /dev/null +++ b/images/svg/bed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/beer-mug-empty.svg b/images/svg/beer-mug-empty.svg new file mode 100644 index 00000000..123618dd --- /dev/null +++ b/images/svg/beer-mug-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bell-concierge.svg b/images/svg/bell-concierge.svg new file mode 100644 index 00000000..6bf2784c --- /dev/null +++ b/images/svg/bell-concierge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bell-slash.svg b/images/svg/bell-slash.svg new file mode 100644 index 00000000..bb2dc273 --- /dev/null +++ b/images/svg/bell-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bell.svg b/images/svg/bell.svg new file mode 100644 index 00000000..78c8d785 --- /dev/null +++ b/images/svg/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bezier-curve.svg b/images/svg/bezier-curve.svg new file mode 100644 index 00000000..11363ecb --- /dev/null +++ b/images/svg/bezier-curve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bicycle.svg b/images/svg/bicycle.svg new file mode 100644 index 00000000..06d4fcd7 --- /dev/null +++ b/images/svg/bicycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/binoculars.svg b/images/svg/binoculars.svg new file mode 100644 index 00000000..ebd6cb27 --- /dev/null +++ b/images/svg/binoculars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/biohazard.svg b/images/svg/biohazard.svg new file mode 100644 index 00000000..bd01273a --- /dev/null +++ b/images/svg/biohazard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bitcoin-sign.svg b/images/svg/bitcoin-sign.svg new file mode 100644 index 00000000..f52df3b1 --- /dev/null +++ b/images/svg/bitcoin-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/blender-phone.svg b/images/svg/blender-phone.svg new file mode 100644 index 00000000..586264b6 --- /dev/null +++ b/images/svg/blender-phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/blender.svg b/images/svg/blender.svg new file mode 100644 index 00000000..2b246841 --- /dev/null +++ b/images/svg/blender.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/blog.svg b/images/svg/blog.svg new file mode 100644 index 00000000..8ea406e7 --- /dev/null +++ b/images/svg/blog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bold.svg b/images/svg/bold.svg new file mode 100644 index 00000000..a734a206 --- /dev/null +++ b/images/svg/bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bolt-lightning.svg b/images/svg/bolt-lightning.svg new file mode 100644 index 00000000..adebe625 --- /dev/null +++ b/images/svg/bolt-lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bolt.svg b/images/svg/bolt.svg new file mode 100644 index 00000000..78544f30 --- /dev/null +++ b/images/svg/bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bomb.svg b/images/svg/bomb.svg new file mode 100644 index 00000000..5daaa40b --- /dev/null +++ b/images/svg/bomb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bone.svg b/images/svg/bone.svg new file mode 100644 index 00000000..51f26b03 --- /dev/null +++ b/images/svg/bone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bong.svg b/images/svg/bong.svg new file mode 100644 index 00000000..5efd2190 --- /dev/null +++ b/images/svg/bong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-atlas.svg b/images/svg/book-atlas.svg new file mode 100644 index 00000000..12604d3e --- /dev/null +++ b/images/svg/book-atlas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-bible.svg b/images/svg/book-bible.svg new file mode 100644 index 00000000..411a76d7 --- /dev/null +++ b/images/svg/book-bible.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-bookmark.svg b/images/svg/book-bookmark.svg new file mode 100644 index 00000000..910f20ae --- /dev/null +++ b/images/svg/book-bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-journal-whills.svg b/images/svg/book-journal-whills.svg new file mode 100644 index 00000000..c0545b7a --- /dev/null +++ b/images/svg/book-journal-whills.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-medical.svg b/images/svg/book-medical.svg new file mode 100644 index 00000000..f8f757ac --- /dev/null +++ b/images/svg/book-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-open-reader.svg b/images/svg/book-open-reader.svg new file mode 100644 index 00000000..907c3675 --- /dev/null +++ b/images/svg/book-open-reader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-open.svg b/images/svg/book-open.svg new file mode 100644 index 00000000..080898bf --- /dev/null +++ b/images/svg/book-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-quran.svg b/images/svg/book-quran.svg new file mode 100644 index 00000000..43b7eacd --- /dev/null +++ b/images/svg/book-quran.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-skull.svg b/images/svg/book-skull.svg new file mode 100644 index 00000000..0b0addaf --- /dev/null +++ b/images/svg/book-skull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book-tanakh.svg b/images/svg/book-tanakh.svg new file mode 100644 index 00000000..63d0930d --- /dev/null +++ b/images/svg/book-tanakh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/book.svg b/images/svg/book.svg new file mode 100644 index 00000000..325c7f17 --- /dev/null +++ b/images/svg/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bookmark.svg b/images/svg/bookmark.svg new file mode 100644 index 00000000..fb3514bc --- /dev/null +++ b/images/svg/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/border-all.svg b/images/svg/border-all.svg new file mode 100644 index 00000000..dc7766d8 --- /dev/null +++ b/images/svg/border-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/border-none.svg b/images/svg/border-none.svg new file mode 100644 index 00000000..ca2aa1d2 --- /dev/null +++ b/images/svg/border-none.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/border-top-left.svg b/images/svg/border-top-left.svg new file mode 100644 index 00000000..031e2444 --- /dev/null +++ b/images/svg/border-top-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bore-hole.svg b/images/svg/bore-hole.svg new file mode 100644 index 00000000..7948c21b --- /dev/null +++ b/images/svg/bore-hole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bottle-droplet.svg b/images/svg/bottle-droplet.svg new file mode 100644 index 00000000..250a47b7 --- /dev/null +++ b/images/svg/bottle-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bottle-water.svg b/images/svg/bottle-water.svg new file mode 100644 index 00000000..e81b7b3d --- /dev/null +++ b/images/svg/bottle-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bowl-food.svg b/images/svg/bowl-food.svg new file mode 100644 index 00000000..d152deab --- /dev/null +++ b/images/svg/bowl-food.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bowl-rice.svg b/images/svg/bowl-rice.svg new file mode 100644 index 00000000..338d333a --- /dev/null +++ b/images/svg/bowl-rice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bowling-ball.svg b/images/svg/bowling-ball.svg new file mode 100644 index 00000000..1ea3464f --- /dev/null +++ b/images/svg/bowling-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/box-archive.svg b/images/svg/box-archive.svg new file mode 100644 index 00000000..1cf3f7de --- /dev/null +++ b/images/svg/box-archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/box-open.svg b/images/svg/box-open.svg new file mode 100644 index 00000000..a8263651 --- /dev/null +++ b/images/svg/box-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/box-tissue.svg b/images/svg/box-tissue.svg new file mode 100644 index 00000000..c2704c26 --- /dev/null +++ b/images/svg/box-tissue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/box.svg b/images/svg/box.svg new file mode 100644 index 00000000..2c2ee47e --- /dev/null +++ b/images/svg/box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/boxes-packing.svg b/images/svg/boxes-packing.svg new file mode 100644 index 00000000..380376ee --- /dev/null +++ b/images/svg/boxes-packing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/boxes-stacked.svg b/images/svg/boxes-stacked.svg new file mode 100644 index 00000000..11769b46 --- /dev/null +++ b/images/svg/boxes-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/braille.svg b/images/svg/braille.svg new file mode 100644 index 00000000..286db56d --- /dev/null +++ b/images/svg/braille.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/brain.svg b/images/svg/brain.svg new file mode 100644 index 00000000..8e377b76 --- /dev/null +++ b/images/svg/brain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/brazilian-real-sign.svg b/images/svg/brazilian-real-sign.svg new file mode 100644 index 00000000..257bd11d --- /dev/null +++ b/images/svg/brazilian-real-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bread-slice.svg b/images/svg/bread-slice.svg new file mode 100644 index 00000000..97fa0954 --- /dev/null +++ b/images/svg/bread-slice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bridge-circle-check.svg b/images/svg/bridge-circle-check.svg new file mode 100644 index 00000000..7c51f4ad --- /dev/null +++ b/images/svg/bridge-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bridge-circle-exclamation.svg b/images/svg/bridge-circle-exclamation.svg new file mode 100644 index 00000000..1eda3324 --- /dev/null +++ b/images/svg/bridge-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bridge-circle-xmark.svg b/images/svg/bridge-circle-xmark.svg new file mode 100644 index 00000000..d9b09035 --- /dev/null +++ b/images/svg/bridge-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bridge-lock.svg b/images/svg/bridge-lock.svg new file mode 100644 index 00000000..6ce2b843 --- /dev/null +++ b/images/svg/bridge-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bridge-water.svg b/images/svg/bridge-water.svg new file mode 100644 index 00000000..9d0d27e3 --- /dev/null +++ b/images/svg/bridge-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bridge.svg b/images/svg/bridge.svg new file mode 100644 index 00000000..f246e3e3 --- /dev/null +++ b/images/svg/bridge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/briefcase-medical.svg b/images/svg/briefcase-medical.svg new file mode 100644 index 00000000..82e388ef --- /dev/null +++ b/images/svg/briefcase-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/briefcase.svg b/images/svg/briefcase.svg new file mode 100644 index 00000000..2f34805d --- /dev/null +++ b/images/svg/briefcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/broom-ball.svg b/images/svg/broom-ball.svg new file mode 100644 index 00000000..68cce3c7 --- /dev/null +++ b/images/svg/broom-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/broom.svg b/images/svg/broom.svg new file mode 100644 index 00000000..347d700f --- /dev/null +++ b/images/svg/broom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/brush.svg b/images/svg/brush.svg new file mode 100644 index 00000000..09d8464f --- /dev/null +++ b/images/svg/brush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bucket.svg b/images/svg/bucket.svg new file mode 100644 index 00000000..8e441e82 --- /dev/null +++ b/images/svg/bucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bug-slash.svg b/images/svg/bug-slash.svg new file mode 100644 index 00000000..2f07d6fa --- /dev/null +++ b/images/svg/bug-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bug.svg b/images/svg/bug.svg new file mode 100644 index 00000000..be5da648 --- /dev/null +++ b/images/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bugs.svg b/images/svg/bugs.svg new file mode 100644 index 00000000..17b492ce --- /dev/null +++ b/images/svg/bugs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-circle-arrow-right.svg b/images/svg/building-circle-arrow-right.svg new file mode 100644 index 00000000..e7e70724 --- /dev/null +++ b/images/svg/building-circle-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-circle-check.svg b/images/svg/building-circle-check.svg new file mode 100644 index 00000000..e1254e44 --- /dev/null +++ b/images/svg/building-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-circle-exclamation.svg b/images/svg/building-circle-exclamation.svg new file mode 100644 index 00000000..d747145f --- /dev/null +++ b/images/svg/building-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-circle-xmark.svg b/images/svg/building-circle-xmark.svg new file mode 100644 index 00000000..198cf8d6 --- /dev/null +++ b/images/svg/building-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-columns.svg b/images/svg/building-columns.svg new file mode 100644 index 00000000..72ea62cd --- /dev/null +++ b/images/svg/building-columns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-flag.svg b/images/svg/building-flag.svg new file mode 100644 index 00000000..faacb6f0 --- /dev/null +++ b/images/svg/building-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-lock.svg b/images/svg/building-lock.svg new file mode 100644 index 00000000..696a0daa --- /dev/null +++ b/images/svg/building-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-ngo.svg b/images/svg/building-ngo.svg new file mode 100644 index 00000000..165504a6 --- /dev/null +++ b/images/svg/building-ngo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-shield.svg b/images/svg/building-shield.svg new file mode 100644 index 00000000..b10f7ed1 --- /dev/null +++ b/images/svg/building-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-un.svg b/images/svg/building-un.svg new file mode 100644 index 00000000..c1040d9e --- /dev/null +++ b/images/svg/building-un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-user.svg b/images/svg/building-user.svg new file mode 100644 index 00000000..2e20f7f2 --- /dev/null +++ b/images/svg/building-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building-wheat.svg b/images/svg/building-wheat.svg new file mode 100644 index 00000000..d6b66de7 --- /dev/null +++ b/images/svg/building-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/building.svg b/images/svg/building.svg new file mode 100644 index 00000000..a5754b37 --- /dev/null +++ b/images/svg/building.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bullhorn.svg b/images/svg/bullhorn.svg new file mode 100644 index 00000000..9b9ff849 --- /dev/null +++ b/images/svg/bullhorn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bullseye.svg b/images/svg/bullseye.svg new file mode 100644 index 00000000..1f707f32 --- /dev/null +++ b/images/svg/bullseye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/burger.svg b/images/svg/burger.svg new file mode 100644 index 00000000..a991da10 --- /dev/null +++ b/images/svg/burger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/burst.svg b/images/svg/burst.svg new file mode 100644 index 00000000..6561c864 --- /dev/null +++ b/images/svg/burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bus-simple.svg b/images/svg/bus-simple.svg new file mode 100644 index 00000000..c44f8efd --- /dev/null +++ b/images/svg/bus-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/bus.svg b/images/svg/bus.svg new file mode 100644 index 00000000..bfd4937f --- /dev/null +++ b/images/svg/bus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/business-time.svg b/images/svg/business-time.svg new file mode 100644 index 00000000..08657d8d --- /dev/null +++ b/images/svg/business-time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/c.svg b/images/svg/c.svg new file mode 100644 index 00000000..a9c29ede --- /dev/null +++ b/images/svg/c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cable-car.svg b/images/svg/cable-car.svg new file mode 100644 index 00000000..250c760e --- /dev/null +++ b/images/svg/cable-car.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cake-candles.svg b/images/svg/cake-candles.svg new file mode 100644 index 00000000..3327a2d7 --- /dev/null +++ b/images/svg/cake-candles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calculator.svg b/images/svg/calculator.svg new file mode 100644 index 00000000..ecef7f03 --- /dev/null +++ b/images/svg/calculator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-check.svg b/images/svg/calendar-check.svg new file mode 100644 index 00000000..e30dbfa4 --- /dev/null +++ b/images/svg/calendar-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-day.svg b/images/svg/calendar-day.svg new file mode 100644 index 00000000..cacee71e --- /dev/null +++ b/images/svg/calendar-day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-days.svg b/images/svg/calendar-days.svg new file mode 100644 index 00000000..ed6969e0 --- /dev/null +++ b/images/svg/calendar-days.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-minus.svg b/images/svg/calendar-minus.svg new file mode 100644 index 00000000..dd168dc6 --- /dev/null +++ b/images/svg/calendar-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-plus.svg b/images/svg/calendar-plus.svg new file mode 100644 index 00000000..326d5b73 --- /dev/null +++ b/images/svg/calendar-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-week.svg b/images/svg/calendar-week.svg new file mode 100644 index 00000000..bd09163c --- /dev/null +++ b/images/svg/calendar-week.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar-xmark.svg b/images/svg/calendar-xmark.svg new file mode 100644 index 00000000..93204b66 --- /dev/null +++ b/images/svg/calendar-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/calendar.svg b/images/svg/calendar.svg new file mode 100644 index 00000000..3f55c64f --- /dev/null +++ b/images/svg/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/camera-retro.svg b/images/svg/camera-retro.svg new file mode 100644 index 00000000..ec771f7e --- /dev/null +++ b/images/svg/camera-retro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/camera-rotate.svg b/images/svg/camera-rotate.svg new file mode 100644 index 00000000..1453b478 --- /dev/null +++ b/images/svg/camera-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/camera.svg b/images/svg/camera.svg new file mode 100644 index 00000000..edf047c0 --- /dev/null +++ b/images/svg/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/campground.svg b/images/svg/campground.svg new file mode 100644 index 00000000..4a1fe6c9 --- /dev/null +++ b/images/svg/campground.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/candy-cane.svg b/images/svg/candy-cane.svg new file mode 100644 index 00000000..4cfe55ea --- /dev/null +++ b/images/svg/candy-cane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cannabis.svg b/images/svg/cannabis.svg new file mode 100644 index 00000000..66d55808 --- /dev/null +++ b/images/svg/cannabis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/capsules.svg b/images/svg/capsules.svg new file mode 100644 index 00000000..46108beb --- /dev/null +++ b/images/svg/capsules.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car-battery.svg b/images/svg/car-battery.svg new file mode 100644 index 00000000..ccfbb733 --- /dev/null +++ b/images/svg/car-battery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car-burst.svg b/images/svg/car-burst.svg new file mode 100644 index 00000000..dd0ec4c4 --- /dev/null +++ b/images/svg/car-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car-on.svg b/images/svg/car-on.svg new file mode 100644 index 00000000..4d2024ac --- /dev/null +++ b/images/svg/car-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car-rear.svg b/images/svg/car-rear.svg new file mode 100644 index 00000000..736b82ea --- /dev/null +++ b/images/svg/car-rear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car-side.svg b/images/svg/car-side.svg new file mode 100644 index 00000000..08c945f2 --- /dev/null +++ b/images/svg/car-side.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car-tunnel.svg b/images/svg/car-tunnel.svg new file mode 100644 index 00000000..7ee746e2 --- /dev/null +++ b/images/svg/car-tunnel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/car.svg b/images/svg/car.svg new file mode 100644 index 00000000..64b03c67 --- /dev/null +++ b/images/svg/car.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/caravan.svg b/images/svg/caravan.svg new file mode 100644 index 00000000..3a9e0866 --- /dev/null +++ b/images/svg/caravan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/caret-down.svg b/images/svg/caret-down.svg new file mode 100644 index 00000000..d4352eaa --- /dev/null +++ b/images/svg/caret-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/caret-left.svg b/images/svg/caret-left.svg new file mode 100644 index 00000000..55e5ef95 --- /dev/null +++ b/images/svg/caret-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/caret-right.svg b/images/svg/caret-right.svg new file mode 100644 index 00000000..564930df --- /dev/null +++ b/images/svg/caret-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/caret-up.svg b/images/svg/caret-up.svg new file mode 100644 index 00000000..42788b17 --- /dev/null +++ b/images/svg/caret-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/carrot.svg b/images/svg/carrot.svg new file mode 100644 index 00000000..15a86c31 --- /dev/null +++ b/images/svg/carrot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cart-arrow-down.svg b/images/svg/cart-arrow-down.svg new file mode 100644 index 00000000..531a0fd5 --- /dev/null +++ b/images/svg/cart-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cart-flatbed-suitcase.svg b/images/svg/cart-flatbed-suitcase.svg new file mode 100644 index 00000000..786268f4 --- /dev/null +++ b/images/svg/cart-flatbed-suitcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cart-flatbed.svg b/images/svg/cart-flatbed.svg new file mode 100644 index 00000000..d7332f66 --- /dev/null +++ b/images/svg/cart-flatbed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cart-plus.svg b/images/svg/cart-plus.svg new file mode 100644 index 00000000..a0b45c69 --- /dev/null +++ b/images/svg/cart-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cart-shopping.svg b/images/svg/cart-shopping.svg new file mode 100644 index 00000000..697682ee --- /dev/null +++ b/images/svg/cart-shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cash-register.svg b/images/svg/cash-register.svg new file mode 100644 index 00000000..75a3c82a --- /dev/null +++ b/images/svg/cash-register.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cat.svg b/images/svg/cat.svg new file mode 100644 index 00000000..a3347771 --- /dev/null +++ b/images/svg/cat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cedi-sign.svg b/images/svg/cedi-sign.svg new file mode 100644 index 00000000..2f3db390 --- /dev/null +++ b/images/svg/cedi-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cent-sign.svg b/images/svg/cent-sign.svg new file mode 100644 index 00000000..04cb0306 --- /dev/null +++ b/images/svg/cent-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/certificate.svg b/images/svg/certificate.svg new file mode 100644 index 00000000..bf8d086d --- /dev/null +++ b/images/svg/certificate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chair.svg b/images/svg/chair.svg new file mode 100644 index 00000000..59d989f3 --- /dev/null +++ b/images/svg/chair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chalkboard-user.svg b/images/svg/chalkboard-user.svg new file mode 100644 index 00000000..ad065562 --- /dev/null +++ b/images/svg/chalkboard-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chalkboard.svg b/images/svg/chalkboard.svg new file mode 100644 index 00000000..2a315044 --- /dev/null +++ b/images/svg/chalkboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/champagne-glasses.svg b/images/svg/champagne-glasses.svg new file mode 100644 index 00000000..f9629511 --- /dev/null +++ b/images/svg/champagne-glasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/charging-station.svg b/images/svg/charging-station.svg new file mode 100644 index 00000000..e2f4d39b --- /dev/null +++ b/images/svg/charging-station.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-area.svg b/images/svg/chart-area.svg new file mode 100644 index 00000000..69ed05c9 --- /dev/null +++ b/images/svg/chart-area.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-bar.svg b/images/svg/chart-bar.svg new file mode 100644 index 00000000..51ca300d --- /dev/null +++ b/images/svg/chart-bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-column.svg b/images/svg/chart-column.svg new file mode 100644 index 00000000..4e25c7cb --- /dev/null +++ b/images/svg/chart-column.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-gantt.svg b/images/svg/chart-gantt.svg new file mode 100644 index 00000000..302c377a --- /dev/null +++ b/images/svg/chart-gantt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-line.svg b/images/svg/chart-line.svg new file mode 100644 index 00000000..fa06f7ab --- /dev/null +++ b/images/svg/chart-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-pie.svg b/images/svg/chart-pie.svg new file mode 100644 index 00000000..cacfde32 --- /dev/null +++ b/images/svg/chart-pie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chart-simple.svg b/images/svg/chart-simple.svg new file mode 100644 index 00000000..fc34fc48 --- /dev/null +++ b/images/svg/chart-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/check-double.svg b/images/svg/check-double.svg new file mode 100644 index 00000000..0db79bcf --- /dev/null +++ b/images/svg/check-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/check-to-slot.svg b/images/svg/check-to-slot.svg new file mode 100644 index 00000000..5c9926cf --- /dev/null +++ b/images/svg/check-to-slot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/check.svg b/images/svg/check.svg new file mode 100644 index 00000000..e0e7c942 --- /dev/null +++ b/images/svg/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cheese.svg b/images/svg/cheese.svg new file mode 100644 index 00000000..be46fa28 --- /dev/null +++ b/images/svg/cheese.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-bishop.svg b/images/svg/chess-bishop.svg new file mode 100644 index 00000000..e69f5090 --- /dev/null +++ b/images/svg/chess-bishop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-board.svg b/images/svg/chess-board.svg new file mode 100644 index 00000000..8e3e7a15 --- /dev/null +++ b/images/svg/chess-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-king.svg b/images/svg/chess-king.svg new file mode 100644 index 00000000..2d1068fe --- /dev/null +++ b/images/svg/chess-king.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-knight.svg b/images/svg/chess-knight.svg new file mode 100644 index 00000000..24496f30 --- /dev/null +++ b/images/svg/chess-knight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-pawn.svg b/images/svg/chess-pawn.svg new file mode 100644 index 00000000..cdf7b7be --- /dev/null +++ b/images/svg/chess-pawn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-queen.svg b/images/svg/chess-queen.svg new file mode 100644 index 00000000..a03660d9 --- /dev/null +++ b/images/svg/chess-queen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess-rook.svg b/images/svg/chess-rook.svg new file mode 100644 index 00000000..b402434a --- /dev/null +++ b/images/svg/chess-rook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chess.svg b/images/svg/chess.svg new file mode 100644 index 00000000..362a2dce --- /dev/null +++ b/images/svg/chess.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chevron-down.svg b/images/svg/chevron-down.svg new file mode 100644 index 00000000..2055a4a4 --- /dev/null +++ b/images/svg/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chevron-left.svg b/images/svg/chevron-left.svg new file mode 100644 index 00000000..03c9c8f4 --- /dev/null +++ b/images/svg/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chevron-right.svg b/images/svg/chevron-right.svg new file mode 100644 index 00000000..b84c11a9 --- /dev/null +++ b/images/svg/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/chevron-up.svg b/images/svg/chevron-up.svg new file mode 100644 index 00000000..a04a1ac1 --- /dev/null +++ b/images/svg/chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/child-combatant.svg b/images/svg/child-combatant.svg new file mode 100644 index 00000000..68597276 --- /dev/null +++ b/images/svg/child-combatant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/child-dress.svg b/images/svg/child-dress.svg new file mode 100644 index 00000000..caaa14a1 --- /dev/null +++ b/images/svg/child-dress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/child-reaching.svg b/images/svg/child-reaching.svg new file mode 100644 index 00000000..6ee9c6c3 --- /dev/null +++ b/images/svg/child-reaching.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/child.svg b/images/svg/child.svg new file mode 100644 index 00000000..0774f518 --- /dev/null +++ b/images/svg/child.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/children.svg b/images/svg/children.svg new file mode 100644 index 00000000..e9aa5b41 --- /dev/null +++ b/images/svg/children.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/church.svg b/images/svg/church.svg new file mode 100644 index 00000000..035f767e --- /dev/null +++ b/images/svg/church.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-arrow-down.svg b/images/svg/circle-arrow-down.svg new file mode 100644 index 00000000..849db9f5 --- /dev/null +++ b/images/svg/circle-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-arrow-left.svg b/images/svg/circle-arrow-left.svg new file mode 100644 index 00000000..c5c6b7fb --- /dev/null +++ b/images/svg/circle-arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-arrow-right.svg b/images/svg/circle-arrow-right.svg new file mode 100644 index 00000000..f0a48252 --- /dev/null +++ b/images/svg/circle-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-arrow-up.svg b/images/svg/circle-arrow-up.svg new file mode 100644 index 00000000..79093ab1 --- /dev/null +++ b/images/svg/circle-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-check.svg b/images/svg/circle-check.svg new file mode 100644 index 00000000..314fe353 --- /dev/null +++ b/images/svg/circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-chevron-down.svg b/images/svg/circle-chevron-down.svg new file mode 100644 index 00000000..0db0b309 --- /dev/null +++ b/images/svg/circle-chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-chevron-left.svg b/images/svg/circle-chevron-left.svg new file mode 100644 index 00000000..5fa769d5 --- /dev/null +++ b/images/svg/circle-chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-chevron-right.svg b/images/svg/circle-chevron-right.svg new file mode 100644 index 00000000..1524f733 --- /dev/null +++ b/images/svg/circle-chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-chevron-up.svg b/images/svg/circle-chevron-up.svg new file mode 100644 index 00000000..be9712df --- /dev/null +++ b/images/svg/circle-chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-dollar-to-slot.svg b/images/svg/circle-dollar-to-slot.svg new file mode 100644 index 00000000..cd57f57b --- /dev/null +++ b/images/svg/circle-dollar-to-slot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-dot.svg b/images/svg/circle-dot.svg new file mode 100644 index 00000000..55739988 --- /dev/null +++ b/images/svg/circle-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-down.svg b/images/svg/circle-down.svg new file mode 100644 index 00000000..ff3d49ef --- /dev/null +++ b/images/svg/circle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-exclamation.svg b/images/svg/circle-exclamation.svg new file mode 100644 index 00000000..90da5089 --- /dev/null +++ b/images/svg/circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-h.svg b/images/svg/circle-h.svg new file mode 100644 index 00000000..fcfaae91 --- /dev/null +++ b/images/svg/circle-h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-half-stroke.svg b/images/svg/circle-half-stroke.svg new file mode 100644 index 00000000..cb8dec09 --- /dev/null +++ b/images/svg/circle-half-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-info.svg b/images/svg/circle-info.svg new file mode 100644 index 00000000..1ba5b9e1 --- /dev/null +++ b/images/svg/circle-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-left.svg b/images/svg/circle-left.svg new file mode 100644 index 00000000..1404694b --- /dev/null +++ b/images/svg/circle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-minus.svg b/images/svg/circle-minus.svg new file mode 100644 index 00000000..232ae467 --- /dev/null +++ b/images/svg/circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-nodes.svg b/images/svg/circle-nodes.svg new file mode 100644 index 00000000..2408bbad --- /dev/null +++ b/images/svg/circle-nodes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-notch.svg b/images/svg/circle-notch.svg new file mode 100644 index 00000000..13b6ae2f --- /dev/null +++ b/images/svg/circle-notch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-pause.svg b/images/svg/circle-pause.svg new file mode 100644 index 00000000..18288d66 --- /dev/null +++ b/images/svg/circle-pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-play.svg b/images/svg/circle-play.svg new file mode 100644 index 00000000..420186f6 --- /dev/null +++ b/images/svg/circle-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-plus.svg b/images/svg/circle-plus.svg new file mode 100644 index 00000000..474d644f --- /dev/null +++ b/images/svg/circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-question.svg b/images/svg/circle-question.svg new file mode 100644 index 00000000..38792cee --- /dev/null +++ b/images/svg/circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-radiation.svg b/images/svg/circle-radiation.svg new file mode 100644 index 00000000..9e6252b4 --- /dev/null +++ b/images/svg/circle-radiation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-right.svg b/images/svg/circle-right.svg new file mode 100644 index 00000000..1dce8cb7 --- /dev/null +++ b/images/svg/circle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-stop.svg b/images/svg/circle-stop.svg new file mode 100644 index 00000000..c5d568ab --- /dev/null +++ b/images/svg/circle-stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-up.svg b/images/svg/circle-up.svg new file mode 100644 index 00000000..254d5de9 --- /dev/null +++ b/images/svg/circle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-user.svg b/images/svg/circle-user.svg new file mode 100644 index 00000000..a6804c88 --- /dev/null +++ b/images/svg/circle-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle-xmark.svg b/images/svg/circle-xmark.svg new file mode 100644 index 00000000..9b7df148 --- /dev/null +++ b/images/svg/circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/circle.svg b/images/svg/circle.svg new file mode 100644 index 00000000..49bc41ba --- /dev/null +++ b/images/svg/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/city.svg b/images/svg/city.svg new file mode 100644 index 00000000..6af22f93 --- /dev/null +++ b/images/svg/city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clapperboard.svg b/images/svg/clapperboard.svg new file mode 100644 index 00000000..8ed37781 --- /dev/null +++ b/images/svg/clapperboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clipboard-check.svg b/images/svg/clipboard-check.svg new file mode 100644 index 00000000..1fb1c5dd --- /dev/null +++ b/images/svg/clipboard-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clipboard-list.svg b/images/svg/clipboard-list.svg new file mode 100644 index 00000000..b3118ad9 --- /dev/null +++ b/images/svg/clipboard-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clipboard-question.svg b/images/svg/clipboard-question.svg new file mode 100644 index 00000000..1826da70 --- /dev/null +++ b/images/svg/clipboard-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clipboard-user.svg b/images/svg/clipboard-user.svg new file mode 100644 index 00000000..2efcb746 --- /dev/null +++ b/images/svg/clipboard-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clipboard.svg b/images/svg/clipboard.svg new file mode 100644 index 00000000..0c370c8d --- /dev/null +++ b/images/svg/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clock-rotate-left.svg b/images/svg/clock-rotate-left.svg new file mode 100644 index 00000000..87adb7a8 --- /dev/null +++ b/images/svg/clock-rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clock.svg b/images/svg/clock.svg new file mode 100644 index 00000000..b77d9909 --- /dev/null +++ b/images/svg/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clone.svg b/images/svg/clone.svg new file mode 100644 index 00000000..8ff5fe0d --- /dev/null +++ b/images/svg/clone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/closed-captioning.svg b/images/svg/closed-captioning.svg new file mode 100644 index 00000000..71d68042 --- /dev/null +++ b/images/svg/closed-captioning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-arrow-down.svg b/images/svg/cloud-arrow-down.svg new file mode 100644 index 00000000..583b6213 --- /dev/null +++ b/images/svg/cloud-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-arrow-up.svg b/images/svg/cloud-arrow-up.svg new file mode 100644 index 00000000..4097f639 --- /dev/null +++ b/images/svg/cloud-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-bolt.svg b/images/svg/cloud-bolt.svg new file mode 100644 index 00000000..9c9bea91 --- /dev/null +++ b/images/svg/cloud-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-meatball.svg b/images/svg/cloud-meatball.svg new file mode 100644 index 00000000..b7b868a2 --- /dev/null +++ b/images/svg/cloud-meatball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-moon-rain.svg b/images/svg/cloud-moon-rain.svg new file mode 100644 index 00000000..a3d93e4a --- /dev/null +++ b/images/svg/cloud-moon-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-moon.svg b/images/svg/cloud-moon.svg new file mode 100644 index 00000000..20603e97 --- /dev/null +++ b/images/svg/cloud-moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-rain.svg b/images/svg/cloud-rain.svg new file mode 100644 index 00000000..b65f8019 --- /dev/null +++ b/images/svg/cloud-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-showers-heavy.svg b/images/svg/cloud-showers-heavy.svg new file mode 100644 index 00000000..6d4b5523 --- /dev/null +++ b/images/svg/cloud-showers-heavy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-showers-water.svg b/images/svg/cloud-showers-water.svg new file mode 100644 index 00000000..011c2577 --- /dev/null +++ b/images/svg/cloud-showers-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-sun-rain.svg b/images/svg/cloud-sun-rain.svg new file mode 100644 index 00000000..b61d8fb1 --- /dev/null +++ b/images/svg/cloud-sun-rain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud-sun.svg b/images/svg/cloud-sun.svg new file mode 100644 index 00000000..b0eeaf6a --- /dev/null +++ b/images/svg/cloud-sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cloud.svg b/images/svg/cloud.svg new file mode 100644 index 00000000..f3e1fc5c --- /dev/null +++ b/images/svg/cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/clover.svg b/images/svg/clover.svg new file mode 100644 index 00000000..0204738d --- /dev/null +++ b/images/svg/clover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code-branch.svg b/images/svg/code-branch.svg new file mode 100644 index 00000000..bf052604 --- /dev/null +++ b/images/svg/code-branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code-commit.svg b/images/svg/code-commit.svg new file mode 100644 index 00000000..5070ab75 --- /dev/null +++ b/images/svg/code-commit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code-compare.svg b/images/svg/code-compare.svg new file mode 100644 index 00000000..1e3f24f2 --- /dev/null +++ b/images/svg/code-compare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code-fork.svg b/images/svg/code-fork.svg new file mode 100644 index 00000000..6c67d785 --- /dev/null +++ b/images/svg/code-fork.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code-merge.svg b/images/svg/code-merge.svg new file mode 100644 index 00000000..d60e209c --- /dev/null +++ b/images/svg/code-merge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code-pull-request.svg b/images/svg/code-pull-request.svg new file mode 100644 index 00000000..4ed7aa67 --- /dev/null +++ b/images/svg/code-pull-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/code.svg b/images/svg/code.svg new file mode 100644 index 00000000..310938e5 --- /dev/null +++ b/images/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/coins.svg b/images/svg/coins.svg new file mode 100644 index 00000000..6b2900f0 --- /dev/null +++ b/images/svg/coins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/colon-sign.svg b/images/svg/colon-sign.svg new file mode 100644 index 00000000..782f8188 --- /dev/null +++ b/images/svg/colon-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comment-dollar.svg b/images/svg/comment-dollar.svg new file mode 100644 index 00000000..b6b28057 --- /dev/null +++ b/images/svg/comment-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comment-dots.svg b/images/svg/comment-dots.svg new file mode 100644 index 00000000..f73361d0 --- /dev/null +++ b/images/svg/comment-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comment-medical.svg b/images/svg/comment-medical.svg new file mode 100644 index 00000000..add55179 --- /dev/null +++ b/images/svg/comment-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comment-slash.svg b/images/svg/comment-slash.svg new file mode 100644 index 00000000..c851a6d8 --- /dev/null +++ b/images/svg/comment-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comment-sms.svg b/images/svg/comment-sms.svg new file mode 100644 index 00000000..5ad74920 --- /dev/null +++ b/images/svg/comment-sms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comment.svg b/images/svg/comment.svg new file mode 100644 index 00000000..15291259 --- /dev/null +++ b/images/svg/comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comments-dollar.svg b/images/svg/comments-dollar.svg new file mode 100644 index 00000000..6564ed70 --- /dev/null +++ b/images/svg/comments-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/comments.svg b/images/svg/comments.svg new file mode 100644 index 00000000..c29ab592 --- /dev/null +++ b/images/svg/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/compact-disc.svg b/images/svg/compact-disc.svg new file mode 100644 index 00000000..402f65ff --- /dev/null +++ b/images/svg/compact-disc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/compass-drafting.svg b/images/svg/compass-drafting.svg new file mode 100644 index 00000000..6e58f71b --- /dev/null +++ b/images/svg/compass-drafting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/compass.svg b/images/svg/compass.svg new file mode 100644 index 00000000..158f752a --- /dev/null +++ b/images/svg/compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/compress.svg b/images/svg/compress.svg new file mode 100644 index 00000000..91384be7 --- /dev/null +++ b/images/svg/compress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/computer-mouse.svg b/images/svg/computer-mouse.svg new file mode 100644 index 00000000..42ec284a --- /dev/null +++ b/images/svg/computer-mouse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/computer.svg b/images/svg/computer.svg new file mode 100644 index 00000000..ea5268cb --- /dev/null +++ b/images/svg/computer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cookie-bite.svg b/images/svg/cookie-bite.svg new file mode 100644 index 00000000..fc3f8c55 --- /dev/null +++ b/images/svg/cookie-bite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cookie.svg b/images/svg/cookie.svg new file mode 100644 index 00000000..339f79c3 --- /dev/null +++ b/images/svg/cookie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/copy.svg b/images/svg/copy.svg new file mode 100644 index 00000000..af80f252 --- /dev/null +++ b/images/svg/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/copyright.svg b/images/svg/copyright.svg new file mode 100644 index 00000000..64b8dcd1 --- /dev/null +++ b/images/svg/copyright.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/couch.svg b/images/svg/couch.svg new file mode 100644 index 00000000..85bef3d3 --- /dev/null +++ b/images/svg/couch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cow.svg b/images/svg/cow.svg new file mode 100644 index 00000000..49596891 --- /dev/null +++ b/images/svg/cow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/credit-card.svg b/images/svg/credit-card.svg new file mode 100644 index 00000000..56cc35ea --- /dev/null +++ b/images/svg/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/crop-simple.svg b/images/svg/crop-simple.svg new file mode 100644 index 00000000..2d34496a --- /dev/null +++ b/images/svg/crop-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/crop.svg b/images/svg/crop.svg new file mode 100644 index 00000000..ebe23640 --- /dev/null +++ b/images/svg/crop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cross.svg b/images/svg/cross.svg new file mode 100644 index 00000000..2f13d85f --- /dev/null +++ b/images/svg/cross.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/crosshairs.svg b/images/svg/crosshairs.svg new file mode 100644 index 00000000..0b1d83d1 --- /dev/null +++ b/images/svg/crosshairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/crow.svg b/images/svg/crow.svg new file mode 100644 index 00000000..030b21b5 --- /dev/null +++ b/images/svg/crow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/crown.svg b/images/svg/crown.svg new file mode 100644 index 00000000..52dd069c --- /dev/null +++ b/images/svg/crown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/crutch.svg b/images/svg/crutch.svg new file mode 100644 index 00000000..bab1b4a7 --- /dev/null +++ b/images/svg/crutch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cruzeiro-sign.svg b/images/svg/cruzeiro-sign.svg new file mode 100644 index 00000000..87d89d43 --- /dev/null +++ b/images/svg/cruzeiro-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cube.svg b/images/svg/cube.svg new file mode 100644 index 00000000..47719cb6 --- /dev/null +++ b/images/svg/cube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cubes-stacked.svg b/images/svg/cubes-stacked.svg new file mode 100644 index 00000000..eec01412 --- /dev/null +++ b/images/svg/cubes-stacked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/cubes.svg b/images/svg/cubes.svg new file mode 100644 index 00000000..dbed1b81 --- /dev/null +++ b/images/svg/cubes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/d.svg b/images/svg/d.svg new file mode 100644 index 00000000..1e907732 --- /dev/null +++ b/images/svg/d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/database.svg b/images/svg/database.svg new file mode 100644 index 00000000..b5218e50 --- /dev/null +++ b/images/svg/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/delete-left.svg b/images/svg/delete-left.svg new file mode 100644 index 00000000..c9bab49c --- /dev/null +++ b/images/svg/delete-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/democrat.svg b/images/svg/democrat.svg new file mode 100644 index 00000000..a691c9c4 --- /dev/null +++ b/images/svg/democrat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/desktop.svg b/images/svg/desktop.svg new file mode 100644 index 00000000..106cda5c --- /dev/null +++ b/images/svg/desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dharmachakra.svg b/images/svg/dharmachakra.svg new file mode 100644 index 00000000..f7a675e1 --- /dev/null +++ b/images/svg/dharmachakra.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/diagram-next.svg b/images/svg/diagram-next.svg new file mode 100644 index 00000000..36b06897 --- /dev/null +++ b/images/svg/diagram-next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/diagram-predecessor.svg b/images/svg/diagram-predecessor.svg new file mode 100644 index 00000000..4d96ce4b --- /dev/null +++ b/images/svg/diagram-predecessor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/diagram-project.svg b/images/svg/diagram-project.svg new file mode 100644 index 00000000..584377f6 --- /dev/null +++ b/images/svg/diagram-project.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/diagram-successor.svg b/images/svg/diagram-successor.svg new file mode 100644 index 00000000..96e8b07b --- /dev/null +++ b/images/svg/diagram-successor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/diamond-turn-right.svg b/images/svg/diamond-turn-right.svg new file mode 100644 index 00000000..646af159 --- /dev/null +++ b/images/svg/diamond-turn-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/diamond.svg b/images/svg/diamond.svg new file mode 100644 index 00000000..561f4d58 --- /dev/null +++ b/images/svg/diamond.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-d20.svg b/images/svg/dice-d20.svg new file mode 100644 index 00000000..5d7137f5 --- /dev/null +++ b/images/svg/dice-d20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-d6.svg b/images/svg/dice-d6.svg new file mode 100644 index 00000000..3d9d1038 --- /dev/null +++ b/images/svg/dice-d6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-five.svg b/images/svg/dice-five.svg new file mode 100644 index 00000000..25c59610 --- /dev/null +++ b/images/svg/dice-five.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-four.svg b/images/svg/dice-four.svg new file mode 100644 index 00000000..9a79d51f --- /dev/null +++ b/images/svg/dice-four.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-one.svg b/images/svg/dice-one.svg new file mode 100644 index 00000000..0672a92a --- /dev/null +++ b/images/svg/dice-one.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-six.svg b/images/svg/dice-six.svg new file mode 100644 index 00000000..88db807d --- /dev/null +++ b/images/svg/dice-six.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-three.svg b/images/svg/dice-three.svg new file mode 100644 index 00000000..3112f5d2 --- /dev/null +++ b/images/svg/dice-three.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice-two.svg b/images/svg/dice-two.svg new file mode 100644 index 00000000..542e544a --- /dev/null +++ b/images/svg/dice-two.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dice.svg b/images/svg/dice.svg new file mode 100644 index 00000000..deb83f6e --- /dev/null +++ b/images/svg/dice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/disease.svg b/images/svg/disease.svg new file mode 100644 index 00000000..2aaeb12f --- /dev/null +++ b/images/svg/disease.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/display.svg b/images/svg/display.svg new file mode 100644 index 00000000..557a6bcd --- /dev/null +++ b/images/svg/display.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/divide.svg b/images/svg/divide.svg new file mode 100644 index 00000000..6c91b5fb --- /dev/null +++ b/images/svg/divide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dna.svg b/images/svg/dna.svg new file mode 100644 index 00000000..4aae63e6 --- /dev/null +++ b/images/svg/dna.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dog.svg b/images/svg/dog.svg new file mode 100644 index 00000000..2b432731 --- /dev/null +++ b/images/svg/dog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dollar-sign.svg b/images/svg/dollar-sign.svg new file mode 100644 index 00000000..794cecac --- /dev/null +++ b/images/svg/dollar-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dolly.svg b/images/svg/dolly.svg new file mode 100644 index 00000000..19898855 --- /dev/null +++ b/images/svg/dolly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dong-sign.svg b/images/svg/dong-sign.svg new file mode 100644 index 00000000..70fc0858 --- /dev/null +++ b/images/svg/dong-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/door-closed.svg b/images/svg/door-closed.svg new file mode 100644 index 00000000..720e862e --- /dev/null +++ b/images/svg/door-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/door-open.svg b/images/svg/door-open.svg new file mode 100644 index 00000000..0ca9fc7d --- /dev/null +++ b/images/svg/door-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dove.svg b/images/svg/dove.svg new file mode 100644 index 00000000..9747e864 --- /dev/null +++ b/images/svg/dove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/down-left-and-up-right-to-center.svg b/images/svg/down-left-and-up-right-to-center.svg new file mode 100644 index 00000000..d7a168e6 --- /dev/null +++ b/images/svg/down-left-and-up-right-to-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/down-long.svg b/images/svg/down-long.svg new file mode 100644 index 00000000..24a6abea --- /dev/null +++ b/images/svg/down-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/download.svg b/images/svg/download.svg new file mode 100644 index 00000000..6ed49b54 --- /dev/null +++ b/images/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dragon.svg b/images/svg/dragon.svg new file mode 100644 index 00000000..dc49d43e --- /dev/null +++ b/images/svg/dragon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/draw-polygon.svg b/images/svg/draw-polygon.svg new file mode 100644 index 00000000..73e5ced3 --- /dev/null +++ b/images/svg/draw-polygon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/droplet-slash.svg b/images/svg/droplet-slash.svg new file mode 100644 index 00000000..15aa08ce --- /dev/null +++ b/images/svg/droplet-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/droplet.svg b/images/svg/droplet.svg new file mode 100644 index 00000000..252d1e8b --- /dev/null +++ b/images/svg/droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/drum-steelpan.svg b/images/svg/drum-steelpan.svg new file mode 100644 index 00000000..e1cff26f --- /dev/null +++ b/images/svg/drum-steelpan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/drum.svg b/images/svg/drum.svg new file mode 100644 index 00000000..71b6c653 --- /dev/null +++ b/images/svg/drum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/drumstick-bite.svg b/images/svg/drumstick-bite.svg new file mode 100644 index 00000000..a10699c1 --- /dev/null +++ b/images/svg/drumstick-bite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dumbbell.svg b/images/svg/dumbbell.svg new file mode 100644 index 00000000..18c7e6c4 --- /dev/null +++ b/images/svg/dumbbell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dumpster-fire.svg b/images/svg/dumpster-fire.svg new file mode 100644 index 00000000..2cc82a19 --- /dev/null +++ b/images/svg/dumpster-fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dumpster.svg b/images/svg/dumpster.svg new file mode 100644 index 00000000..ca7775c6 --- /dev/null +++ b/images/svg/dumpster.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/dungeon.svg b/images/svg/dungeon.svg new file mode 100644 index 00000000..7182d988 --- /dev/null +++ b/images/svg/dungeon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/e.svg b/images/svg/e.svg new file mode 100644 index 00000000..6007e523 --- /dev/null +++ b/images/svg/e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ear-deaf.svg b/images/svg/ear-deaf.svg new file mode 100644 index 00000000..b63c7517 --- /dev/null +++ b/images/svg/ear-deaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ear-listen.svg b/images/svg/ear-listen.svg new file mode 100644 index 00000000..4bdfc300 --- /dev/null +++ b/images/svg/ear-listen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/earth-africa.svg b/images/svg/earth-africa.svg new file mode 100644 index 00000000..8a3baf80 --- /dev/null +++ b/images/svg/earth-africa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/earth-americas.svg b/images/svg/earth-americas.svg new file mode 100644 index 00000000..1f69c191 --- /dev/null +++ b/images/svg/earth-americas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/earth-asia.svg b/images/svg/earth-asia.svg new file mode 100644 index 00000000..2b38eda8 --- /dev/null +++ b/images/svg/earth-asia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/earth-europe.svg b/images/svg/earth-europe.svg new file mode 100644 index 00000000..ac911e0c --- /dev/null +++ b/images/svg/earth-europe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/earth-oceania.svg b/images/svg/earth-oceania.svg new file mode 100644 index 00000000..14219bc2 --- /dev/null +++ b/images/svg/earth-oceania.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/egg.svg b/images/svg/egg.svg new file mode 100644 index 00000000..24206449 --- /dev/null +++ b/images/svg/egg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/eject.svg b/images/svg/eject.svg new file mode 100644 index 00000000..62b70e52 --- /dev/null +++ b/images/svg/eject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/elevator.svg b/images/svg/elevator.svg new file mode 100644 index 00000000..83738c7b --- /dev/null +++ b/images/svg/elevator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ellipsis-vertical.svg b/images/svg/ellipsis-vertical.svg new file mode 100644 index 00000000..311fe25a --- /dev/null +++ b/images/svg/ellipsis-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ellipsis.svg b/images/svg/ellipsis.svg new file mode 100644 index 00000000..4d1dadbc --- /dev/null +++ b/images/svg/ellipsis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/envelope-circle-check.svg b/images/svg/envelope-circle-check.svg new file mode 100644 index 00000000..94c4d8e6 --- /dev/null +++ b/images/svg/envelope-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/envelope-open-text.svg b/images/svg/envelope-open-text.svg new file mode 100644 index 00000000..9a384491 --- /dev/null +++ b/images/svg/envelope-open-text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/envelope-open.svg b/images/svg/envelope-open.svg new file mode 100644 index 00000000..cb7a36fe --- /dev/null +++ b/images/svg/envelope-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/envelope.svg b/images/svg/envelope.svg new file mode 100644 index 00000000..b19c1c3d --- /dev/null +++ b/images/svg/envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/envelopes-bulk.svg b/images/svg/envelopes-bulk.svg new file mode 100644 index 00000000..7a9d8a44 --- /dev/null +++ b/images/svg/envelopes-bulk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/equals.svg b/images/svg/equals.svg new file mode 100644 index 00000000..3ff8fa49 --- /dev/null +++ b/images/svg/equals.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/eraser.svg b/images/svg/eraser.svg new file mode 100644 index 00000000..92dbb408 --- /dev/null +++ b/images/svg/eraser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ethernet.svg b/images/svg/ethernet.svg new file mode 100644 index 00000000..7d3ab6f5 --- /dev/null +++ b/images/svg/ethernet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/euro-sign.svg b/images/svg/euro-sign.svg new file mode 100644 index 00000000..5a38dfb2 --- /dev/null +++ b/images/svg/euro-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/exclamation.svg b/images/svg/exclamation.svg new file mode 100644 index 00000000..70c036eb --- /dev/null +++ b/images/svg/exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/expand.svg b/images/svg/expand.svg new file mode 100644 index 00000000..3401de1a --- /dev/null +++ b/images/svg/expand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/explosion.svg b/images/svg/explosion.svg new file mode 100644 index 00000000..68032d19 --- /dev/null +++ b/images/svg/explosion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/eye-dropper.svg b/images/svg/eye-dropper.svg new file mode 100644 index 00000000..17db77d0 --- /dev/null +++ b/images/svg/eye-dropper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/eye-low-vision.svg b/images/svg/eye-low-vision.svg new file mode 100644 index 00000000..d7757613 --- /dev/null +++ b/images/svg/eye-low-vision.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/eye-slash.svg b/images/svg/eye-slash.svg new file mode 100644 index 00000000..42db7748 --- /dev/null +++ b/images/svg/eye-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/eye.svg b/images/svg/eye.svg new file mode 100644 index 00000000..56291fbe --- /dev/null +++ b/images/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/f.svg b/images/svg/f.svg new file mode 100644 index 00000000..77987333 --- /dev/null +++ b/images/svg/f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-angry.svg b/images/svg/face-angry.svg new file mode 100644 index 00000000..0252b825 --- /dev/null +++ b/images/svg/face-angry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-dizzy.svg b/images/svg/face-dizzy.svg new file mode 100644 index 00000000..2348800f --- /dev/null +++ b/images/svg/face-dizzy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-flushed.svg b/images/svg/face-flushed.svg new file mode 100644 index 00000000..12a4605c --- /dev/null +++ b/images/svg/face-flushed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-frown-open.svg b/images/svg/face-frown-open.svg new file mode 100644 index 00000000..0d654cdc --- /dev/null +++ b/images/svg/face-frown-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-frown.svg b/images/svg/face-frown.svg new file mode 100644 index 00000000..a08c6c50 --- /dev/null +++ b/images/svg/face-frown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grimace.svg b/images/svg/face-grimace.svg new file mode 100644 index 00000000..bd3f0b8e --- /dev/null +++ b/images/svg/face-grimace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-beam-sweat.svg b/images/svg/face-grin-beam-sweat.svg new file mode 100644 index 00000000..c5fb8a31 --- /dev/null +++ b/images/svg/face-grin-beam-sweat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-beam.svg b/images/svg/face-grin-beam.svg new file mode 100644 index 00000000..dbc3e27f --- /dev/null +++ b/images/svg/face-grin-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-hearts.svg b/images/svg/face-grin-hearts.svg new file mode 100644 index 00000000..00315f37 --- /dev/null +++ b/images/svg/face-grin-hearts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-squint-tears.svg b/images/svg/face-grin-squint-tears.svg new file mode 100644 index 00000000..2fbf173c --- /dev/null +++ b/images/svg/face-grin-squint-tears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-squint.svg b/images/svg/face-grin-squint.svg new file mode 100644 index 00000000..a1e4a316 --- /dev/null +++ b/images/svg/face-grin-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-stars.svg b/images/svg/face-grin-stars.svg new file mode 100644 index 00000000..45072128 --- /dev/null +++ b/images/svg/face-grin-stars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-tears.svg b/images/svg/face-grin-tears.svg new file mode 100644 index 00000000..ea4411a6 --- /dev/null +++ b/images/svg/face-grin-tears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-tongue-squint.svg b/images/svg/face-grin-tongue-squint.svg new file mode 100644 index 00000000..32e12545 --- /dev/null +++ b/images/svg/face-grin-tongue-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-tongue-wink.svg b/images/svg/face-grin-tongue-wink.svg new file mode 100644 index 00000000..2c279f06 --- /dev/null +++ b/images/svg/face-grin-tongue-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-tongue.svg b/images/svg/face-grin-tongue.svg new file mode 100644 index 00000000..9360dcbb --- /dev/null +++ b/images/svg/face-grin-tongue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-wide.svg b/images/svg/face-grin-wide.svg new file mode 100644 index 00000000..f3b72f9c --- /dev/null +++ b/images/svg/face-grin-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin-wink.svg b/images/svg/face-grin-wink.svg new file mode 100644 index 00000000..7c361573 --- /dev/null +++ b/images/svg/face-grin-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-grin.svg b/images/svg/face-grin.svg new file mode 100644 index 00000000..f3aa1bc0 --- /dev/null +++ b/images/svg/face-grin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-kiss-beam.svg b/images/svg/face-kiss-beam.svg new file mode 100644 index 00000000..168c13bc --- /dev/null +++ b/images/svg/face-kiss-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-kiss-wink-heart.svg b/images/svg/face-kiss-wink-heart.svg new file mode 100644 index 00000000..7312e5b4 --- /dev/null +++ b/images/svg/face-kiss-wink-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-kiss.svg b/images/svg/face-kiss.svg new file mode 100644 index 00000000..2e262a3c --- /dev/null +++ b/images/svg/face-kiss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-laugh-beam.svg b/images/svg/face-laugh-beam.svg new file mode 100644 index 00000000..29bb4152 --- /dev/null +++ b/images/svg/face-laugh-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-laugh-squint.svg b/images/svg/face-laugh-squint.svg new file mode 100644 index 00000000..2c1d4b65 --- /dev/null +++ b/images/svg/face-laugh-squint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-laugh-wink.svg b/images/svg/face-laugh-wink.svg new file mode 100644 index 00000000..30d84bbd --- /dev/null +++ b/images/svg/face-laugh-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-laugh.svg b/images/svg/face-laugh.svg new file mode 100644 index 00000000..0f57dc39 --- /dev/null +++ b/images/svg/face-laugh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-meh-blank.svg b/images/svg/face-meh-blank.svg new file mode 100644 index 00000000..0a555652 --- /dev/null +++ b/images/svg/face-meh-blank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-meh.svg b/images/svg/face-meh.svg new file mode 100644 index 00000000..83228510 --- /dev/null +++ b/images/svg/face-meh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-rolling-eyes.svg b/images/svg/face-rolling-eyes.svg new file mode 100644 index 00000000..2d6343ba --- /dev/null +++ b/images/svg/face-rolling-eyes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-sad-cry.svg b/images/svg/face-sad-cry.svg new file mode 100644 index 00000000..41d21b64 --- /dev/null +++ b/images/svg/face-sad-cry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-sad-tear.svg b/images/svg/face-sad-tear.svg new file mode 100644 index 00000000..666db399 --- /dev/null +++ b/images/svg/face-sad-tear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-smile-beam.svg b/images/svg/face-smile-beam.svg new file mode 100644 index 00000000..c3c1a539 --- /dev/null +++ b/images/svg/face-smile-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-smile-wink.svg b/images/svg/face-smile-wink.svg new file mode 100644 index 00000000..d54209b3 --- /dev/null +++ b/images/svg/face-smile-wink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-smile.svg b/images/svg/face-smile.svg new file mode 100644 index 00000000..1a03a37a --- /dev/null +++ b/images/svg/face-smile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-surprise.svg b/images/svg/face-surprise.svg new file mode 100644 index 00000000..cfbf7fa5 --- /dev/null +++ b/images/svg/face-surprise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/face-tired.svg b/images/svg/face-tired.svg new file mode 100644 index 00000000..28829ed9 --- /dev/null +++ b/images/svg/face-tired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fan.svg b/images/svg/fan.svg new file mode 100644 index 00000000..8f7a549a --- /dev/null +++ b/images/svg/fan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/faucet-drip.svg b/images/svg/faucet-drip.svg new file mode 100644 index 00000000..e3310268 --- /dev/null +++ b/images/svg/faucet-drip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/faucet.svg b/images/svg/faucet.svg new file mode 100644 index 00000000..eb58785f --- /dev/null +++ b/images/svg/faucet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fax.svg b/images/svg/fax.svg new file mode 100644 index 00000000..e53cb784 --- /dev/null +++ b/images/svg/fax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/feather-pointed.svg b/images/svg/feather-pointed.svg new file mode 100644 index 00000000..5cc2ff35 --- /dev/null +++ b/images/svg/feather-pointed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/feather.svg b/images/svg/feather.svg new file mode 100644 index 00000000..7601e22f --- /dev/null +++ b/images/svg/feather.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ferry.svg b/images/svg/ferry.svg new file mode 100644 index 00000000..727acdd4 --- /dev/null +++ b/images/svg/ferry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-arrow-down.svg b/images/svg/file-arrow-down.svg new file mode 100644 index 00000000..06e33b49 --- /dev/null +++ b/images/svg/file-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-arrow-up.svg b/images/svg/file-arrow-up.svg new file mode 100644 index 00000000..7e7e78b9 --- /dev/null +++ b/images/svg/file-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-audio.svg b/images/svg/file-audio.svg new file mode 100644 index 00000000..d0d4ddc0 --- /dev/null +++ b/images/svg/file-audio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-circle-check.svg b/images/svg/file-circle-check.svg new file mode 100644 index 00000000..c3019b99 --- /dev/null +++ b/images/svg/file-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-circle-exclamation.svg b/images/svg/file-circle-exclamation.svg new file mode 100644 index 00000000..688817a2 --- /dev/null +++ b/images/svg/file-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-circle-minus.svg b/images/svg/file-circle-minus.svg new file mode 100644 index 00000000..827678cc --- /dev/null +++ b/images/svg/file-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-circle-plus.svg b/images/svg/file-circle-plus.svg new file mode 100644 index 00000000..131b5a76 --- /dev/null +++ b/images/svg/file-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-circle-question.svg b/images/svg/file-circle-question.svg new file mode 100644 index 00000000..e5415526 --- /dev/null +++ b/images/svg/file-circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-circle-xmark.svg b/images/svg/file-circle-xmark.svg new file mode 100644 index 00000000..b6bbfded --- /dev/null +++ b/images/svg/file-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-code.svg b/images/svg/file-code.svg new file mode 100644 index 00000000..dfe284d7 --- /dev/null +++ b/images/svg/file-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-contract.svg b/images/svg/file-contract.svg new file mode 100644 index 00000000..db77a4a8 --- /dev/null +++ b/images/svg/file-contract.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-csv.svg b/images/svg/file-csv.svg new file mode 100644 index 00000000..abaa6072 --- /dev/null +++ b/images/svg/file-csv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-excel.svg b/images/svg/file-excel.svg new file mode 100644 index 00000000..54cf7f82 --- /dev/null +++ b/images/svg/file-excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-export.svg b/images/svg/file-export.svg new file mode 100644 index 00000000..8f519efa --- /dev/null +++ b/images/svg/file-export.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-image.svg b/images/svg/file-image.svg new file mode 100644 index 00000000..e37fcf54 --- /dev/null +++ b/images/svg/file-image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-import.svg b/images/svg/file-import.svg new file mode 100644 index 00000000..bbb8710e --- /dev/null +++ b/images/svg/file-import.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-invoice-dollar.svg b/images/svg/file-invoice-dollar.svg new file mode 100644 index 00000000..fa2c3516 --- /dev/null +++ b/images/svg/file-invoice-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-invoice.svg b/images/svg/file-invoice.svg new file mode 100644 index 00000000..e620b776 --- /dev/null +++ b/images/svg/file-invoice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-lines.svg b/images/svg/file-lines.svg new file mode 100644 index 00000000..80c79c73 --- /dev/null +++ b/images/svg/file-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-medical.svg b/images/svg/file-medical.svg new file mode 100644 index 00000000..6ded7670 --- /dev/null +++ b/images/svg/file-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-pdf.svg b/images/svg/file-pdf.svg new file mode 100644 index 00000000..9320c270 --- /dev/null +++ b/images/svg/file-pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-pen.svg b/images/svg/file-pen.svg new file mode 100644 index 00000000..5cedb176 --- /dev/null +++ b/images/svg/file-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-powerpoint.svg b/images/svg/file-powerpoint.svg new file mode 100644 index 00000000..1d02fd95 --- /dev/null +++ b/images/svg/file-powerpoint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-prescription.svg b/images/svg/file-prescription.svg new file mode 100644 index 00000000..cf814ea6 --- /dev/null +++ b/images/svg/file-prescription.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-shield.svg b/images/svg/file-shield.svg new file mode 100644 index 00000000..d0817fa8 --- /dev/null +++ b/images/svg/file-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-signature.svg b/images/svg/file-signature.svg new file mode 100644 index 00000000..ac471d77 --- /dev/null +++ b/images/svg/file-signature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-video.svg b/images/svg/file-video.svg new file mode 100644 index 00000000..6bb6a7ce --- /dev/null +++ b/images/svg/file-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-waveform.svg b/images/svg/file-waveform.svg new file mode 100644 index 00000000..163827fa --- /dev/null +++ b/images/svg/file-waveform.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-word.svg b/images/svg/file-word.svg new file mode 100644 index 00000000..dfc72b36 --- /dev/null +++ b/images/svg/file-word.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file-zipper.svg b/images/svg/file-zipper.svg new file mode 100644 index 00000000..49c6d50d --- /dev/null +++ b/images/svg/file-zipper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/file.svg b/images/svg/file.svg new file mode 100644 index 00000000..cfaa4f16 --- /dev/null +++ b/images/svg/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fill-drip.svg b/images/svg/fill-drip.svg new file mode 100644 index 00000000..c374a05e --- /dev/null +++ b/images/svg/fill-drip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fill.svg b/images/svg/fill.svg new file mode 100644 index 00000000..2e9ed99d --- /dev/null +++ b/images/svg/fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/film.svg b/images/svg/film.svg new file mode 100644 index 00000000..ebcda928 --- /dev/null +++ b/images/svg/film.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/filter-circle-dollar.svg b/images/svg/filter-circle-dollar.svg new file mode 100644 index 00000000..c5f3d1ab --- /dev/null +++ b/images/svg/filter-circle-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/filter-circle-xmark.svg b/images/svg/filter-circle-xmark.svg new file mode 100644 index 00000000..4d94ac1a --- /dev/null +++ b/images/svg/filter-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/filter.svg b/images/svg/filter.svg new file mode 100644 index 00000000..068ce222 --- /dev/null +++ b/images/svg/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fingerprint.svg b/images/svg/fingerprint.svg new file mode 100644 index 00000000..978a0c1e --- /dev/null +++ b/images/svg/fingerprint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fire-burner.svg b/images/svg/fire-burner.svg new file mode 100644 index 00000000..5b25ac4c --- /dev/null +++ b/images/svg/fire-burner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fire-extinguisher.svg b/images/svg/fire-extinguisher.svg new file mode 100644 index 00000000..4e9932d5 --- /dev/null +++ b/images/svg/fire-extinguisher.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fire-flame-curved.svg b/images/svg/fire-flame-curved.svg new file mode 100644 index 00000000..d22a13db --- /dev/null +++ b/images/svg/fire-flame-curved.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fire-flame-simple.svg b/images/svg/fire-flame-simple.svg new file mode 100644 index 00000000..76372c6e --- /dev/null +++ b/images/svg/fire-flame-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fire.svg b/images/svg/fire.svg new file mode 100644 index 00000000..b4bc3697 --- /dev/null +++ b/images/svg/fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fish-fins.svg b/images/svg/fish-fins.svg new file mode 100644 index 00000000..6e5de34a --- /dev/null +++ b/images/svg/fish-fins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/fish.svg b/images/svg/fish.svg new file mode 100644 index 00000000..b62a6525 --- /dev/null +++ b/images/svg/fish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/flag-checkered.svg b/images/svg/flag-checkered.svg new file mode 100644 index 00000000..356b2c67 --- /dev/null +++ b/images/svg/flag-checkered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/flag-usa.svg b/images/svg/flag-usa.svg new file mode 100644 index 00000000..56b5b04f --- /dev/null +++ b/images/svg/flag-usa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/flag.svg b/images/svg/flag.svg new file mode 100644 index 00000000..5d9f3a30 --- /dev/null +++ b/images/svg/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/flask-vial.svg b/images/svg/flask-vial.svg new file mode 100644 index 00000000..88f434e1 --- /dev/null +++ b/images/svg/flask-vial.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/flask.svg b/images/svg/flask.svg new file mode 100644 index 00000000..84d7d432 --- /dev/null +++ b/images/svg/flask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/floppy-disk.svg b/images/svg/floppy-disk.svg new file mode 100644 index 00000000..f4e10b05 --- /dev/null +++ b/images/svg/floppy-disk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/florin-sign.svg b/images/svg/florin-sign.svg new file mode 100644 index 00000000..41a657ea --- /dev/null +++ b/images/svg/florin-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/folder-closed.svg b/images/svg/folder-closed.svg new file mode 100644 index 00000000..eafc7d44 --- /dev/null +++ b/images/svg/folder-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/folder-minus.svg b/images/svg/folder-minus.svg new file mode 100644 index 00000000..8a588b98 --- /dev/null +++ b/images/svg/folder-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/folder-open.svg b/images/svg/folder-open.svg new file mode 100644 index 00000000..66414778 --- /dev/null +++ b/images/svg/folder-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/folder-plus.svg b/images/svg/folder-plus.svg new file mode 100644 index 00000000..67be7284 --- /dev/null +++ b/images/svg/folder-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/folder-tree.svg b/images/svg/folder-tree.svg new file mode 100644 index 00000000..ae677ffe --- /dev/null +++ b/images/svg/folder-tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/folder.svg b/images/svg/folder.svg new file mode 100644 index 00000000..6f4d35ae --- /dev/null +++ b/images/svg/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/font-awesome.svg b/images/svg/font-awesome.svg new file mode 100644 index 00000000..c55bf8e7 --- /dev/null +++ b/images/svg/font-awesome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/font.svg b/images/svg/font.svg new file mode 100644 index 00000000..2a330c3e --- /dev/null +++ b/images/svg/font.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/football.svg b/images/svg/football.svg new file mode 100644 index 00000000..86e1db32 --- /dev/null +++ b/images/svg/football.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/forward-fast.svg b/images/svg/forward-fast.svg new file mode 100644 index 00000000..b041409d --- /dev/null +++ b/images/svg/forward-fast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/forward-step.svg b/images/svg/forward-step.svg new file mode 100644 index 00000000..a27b7843 --- /dev/null +++ b/images/svg/forward-step.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/forward.svg b/images/svg/forward.svg new file mode 100644 index 00000000..3890a87a --- /dev/null +++ b/images/svg/forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/franc-sign.svg b/images/svg/franc-sign.svg new file mode 100644 index 00000000..46398af6 --- /dev/null +++ b/images/svg/franc-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/frog.svg b/images/svg/frog.svg new file mode 100644 index 00000000..038c6878 --- /dev/null +++ b/images/svg/frog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/futbol.svg b/images/svg/futbol.svg new file mode 100644 index 00000000..b58d47ab --- /dev/null +++ b/images/svg/futbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/g.svg b/images/svg/g.svg new file mode 100644 index 00000000..d19168c1 --- /dev/null +++ b/images/svg/g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gamepad.svg b/images/svg/gamepad.svg new file mode 100644 index 00000000..bc0fe2eb --- /dev/null +++ b/images/svg/gamepad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gas-pump.svg b/images/svg/gas-pump.svg new file mode 100644 index 00000000..9c800242 --- /dev/null +++ b/images/svg/gas-pump.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gauge-high.svg b/images/svg/gauge-high.svg new file mode 100644 index 00000000..8bb0730f --- /dev/null +++ b/images/svg/gauge-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gauge-simple-high.svg b/images/svg/gauge-simple-high.svg new file mode 100644 index 00000000..c9b1a5c3 --- /dev/null +++ b/images/svg/gauge-simple-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gauge-simple.svg b/images/svg/gauge-simple.svg new file mode 100644 index 00000000..7241b588 --- /dev/null +++ b/images/svg/gauge-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gauge.svg b/images/svg/gauge.svg new file mode 100644 index 00000000..d46e56d0 --- /dev/null +++ b/images/svg/gauge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gavel.svg b/images/svg/gavel.svg new file mode 100644 index 00000000..808135fd --- /dev/null +++ b/images/svg/gavel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gear.svg b/images/svg/gear.svg new file mode 100644 index 00000000..67d3487d --- /dev/null +++ b/images/svg/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gears.svg b/images/svg/gears.svg new file mode 100644 index 00000000..85638c1e --- /dev/null +++ b/images/svg/gears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gem.svg b/images/svg/gem.svg new file mode 100644 index 00000000..4a21edb4 --- /dev/null +++ b/images/svg/gem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/genderless.svg b/images/svg/genderless.svg new file mode 100644 index 00000000..5bc63456 --- /dev/null +++ b/images/svg/genderless.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ghost.svg b/images/svg/ghost.svg new file mode 100644 index 00000000..056e20f3 --- /dev/null +++ b/images/svg/ghost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gift.svg b/images/svg/gift.svg new file mode 100644 index 00000000..a6d60ab9 --- /dev/null +++ b/images/svg/gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gifts.svg b/images/svg/gifts.svg new file mode 100644 index 00000000..6fb107ae --- /dev/null +++ b/images/svg/gifts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/glass-water-droplet.svg b/images/svg/glass-water-droplet.svg new file mode 100644 index 00000000..36a0acdd --- /dev/null +++ b/images/svg/glass-water-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/glass-water.svg b/images/svg/glass-water.svg new file mode 100644 index 00000000..a5d90250 --- /dev/null +++ b/images/svg/glass-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/glasses.svg b/images/svg/glasses.svg new file mode 100644 index 00000000..90d7caa4 --- /dev/null +++ b/images/svg/glasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/globe.svg b/images/svg/globe.svg new file mode 100644 index 00000000..1973a454 --- /dev/null +++ b/images/svg/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/golf-ball-tee.svg b/images/svg/golf-ball-tee.svg new file mode 100644 index 00000000..a61c44c8 --- /dev/null +++ b/images/svg/golf-ball-tee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gopuram.svg b/images/svg/gopuram.svg new file mode 100644 index 00000000..0d535e83 --- /dev/null +++ b/images/svg/gopuram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/graduation-cap.svg b/images/svg/graduation-cap.svg new file mode 100644 index 00000000..d2ae047a --- /dev/null +++ b/images/svg/graduation-cap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/greater-than-equal.svg b/images/svg/greater-than-equal.svg new file mode 100644 index 00000000..ecd44760 --- /dev/null +++ b/images/svg/greater-than-equal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/greater-than.svg b/images/svg/greater-than.svg new file mode 100644 index 00000000..f50b97ab --- /dev/null +++ b/images/svg/greater-than.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/grip-lines-vertical.svg b/images/svg/grip-lines-vertical.svg new file mode 100644 index 00000000..b19b4ed4 --- /dev/null +++ b/images/svg/grip-lines-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/grip-lines.svg b/images/svg/grip-lines.svg new file mode 100644 index 00000000..71470a70 --- /dev/null +++ b/images/svg/grip-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/grip-vertical.svg b/images/svg/grip-vertical.svg new file mode 100644 index 00000000..a8bf5fae --- /dev/null +++ b/images/svg/grip-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/grip.svg b/images/svg/grip.svg new file mode 100644 index 00000000..62930c0e --- /dev/null +++ b/images/svg/grip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/group-arrows-rotate.svg b/images/svg/group-arrows-rotate.svg new file mode 100644 index 00000000..1524f2ac --- /dev/null +++ b/images/svg/group-arrows-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/guarani-sign.svg b/images/svg/guarani-sign.svg new file mode 100644 index 00000000..c000e2be --- /dev/null +++ b/images/svg/guarani-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/guitar.svg b/images/svg/guitar.svg new file mode 100644 index 00000000..94bcc5eb --- /dev/null +++ b/images/svg/guitar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/gun.svg b/images/svg/gun.svg new file mode 100644 index 00000000..9cea28ad --- /dev/null +++ b/images/svg/gun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/h.svg b/images/svg/h.svg new file mode 100644 index 00000000..b8aef211 --- /dev/null +++ b/images/svg/h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hammer.svg b/images/svg/hammer.svg new file mode 100644 index 00000000..935be4de --- /dev/null +++ b/images/svg/hammer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hamsa.svg b/images/svg/hamsa.svg new file mode 100644 index 00000000..68737cba --- /dev/null +++ b/images/svg/hamsa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-back-fist.svg b/images/svg/hand-back-fist.svg new file mode 100644 index 00000000..e9a5aa75 --- /dev/null +++ b/images/svg/hand-back-fist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-dots.svg b/images/svg/hand-dots.svg new file mode 100644 index 00000000..6ca30d7c --- /dev/null +++ b/images/svg/hand-dots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-fist.svg b/images/svg/hand-fist.svg new file mode 100644 index 00000000..03bab11d --- /dev/null +++ b/images/svg/hand-fist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-holding-dollar.svg b/images/svg/hand-holding-dollar.svg new file mode 100644 index 00000000..767cb550 --- /dev/null +++ b/images/svg/hand-holding-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-holding-droplet.svg b/images/svg/hand-holding-droplet.svg new file mode 100644 index 00000000..3a94e9ff --- /dev/null +++ b/images/svg/hand-holding-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-holding-hand.svg b/images/svg/hand-holding-hand.svg new file mode 100644 index 00000000..fb6db297 --- /dev/null +++ b/images/svg/hand-holding-hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-holding-heart.svg b/images/svg/hand-holding-heart.svg new file mode 100644 index 00000000..531fbef2 --- /dev/null +++ b/images/svg/hand-holding-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-holding-medical.svg b/images/svg/hand-holding-medical.svg new file mode 100644 index 00000000..d1cf3d12 --- /dev/null +++ b/images/svg/hand-holding-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-holding.svg b/images/svg/hand-holding.svg new file mode 100644 index 00000000..64d876b7 --- /dev/null +++ b/images/svg/hand-holding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-lizard.svg b/images/svg/hand-lizard.svg new file mode 100644 index 00000000..7e389db2 --- /dev/null +++ b/images/svg/hand-lizard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-middle-finger.svg b/images/svg/hand-middle-finger.svg new file mode 100644 index 00000000..db2172e1 --- /dev/null +++ b/images/svg/hand-middle-finger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-peace.svg b/images/svg/hand-peace.svg new file mode 100644 index 00000000..754bee7e --- /dev/null +++ b/images/svg/hand-peace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-point-down.svg b/images/svg/hand-point-down.svg new file mode 100644 index 00000000..8dd096ef --- /dev/null +++ b/images/svg/hand-point-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-point-left.svg b/images/svg/hand-point-left.svg new file mode 100644 index 00000000..c8de51c0 --- /dev/null +++ b/images/svg/hand-point-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-point-right.svg b/images/svg/hand-point-right.svg new file mode 100644 index 00000000..6273d6c7 --- /dev/null +++ b/images/svg/hand-point-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-point-up.svg b/images/svg/hand-point-up.svg new file mode 100644 index 00000000..e78784b4 --- /dev/null +++ b/images/svg/hand-point-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-pointer.svg b/images/svg/hand-pointer.svg new file mode 100644 index 00000000..1212a53d --- /dev/null +++ b/images/svg/hand-pointer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-scissors.svg b/images/svg/hand-scissors.svg new file mode 100644 index 00000000..e9b8ba46 --- /dev/null +++ b/images/svg/hand-scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-sparkles.svg b/images/svg/hand-sparkles.svg new file mode 100644 index 00000000..7aefe1e4 --- /dev/null +++ b/images/svg/hand-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand-spock.svg b/images/svg/hand-spock.svg new file mode 100644 index 00000000..3f83ab1d --- /dev/null +++ b/images/svg/hand-spock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hand.svg b/images/svg/hand.svg new file mode 100644 index 00000000..9834a4f4 --- /dev/null +++ b/images/svg/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/handcuffs.svg b/images/svg/handcuffs.svg new file mode 100644 index 00000000..702ed475 --- /dev/null +++ b/images/svg/handcuffs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-asl-interpreting.svg b/images/svg/hands-asl-interpreting.svg new file mode 100644 index 00000000..5614cb23 --- /dev/null +++ b/images/svg/hands-asl-interpreting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-bound.svg b/images/svg/hands-bound.svg new file mode 100644 index 00000000..7b062f4b --- /dev/null +++ b/images/svg/hands-bound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-bubbles.svg b/images/svg/hands-bubbles.svg new file mode 100644 index 00000000..b9aac548 --- /dev/null +++ b/images/svg/hands-bubbles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-clapping.svg b/images/svg/hands-clapping.svg new file mode 100644 index 00000000..c5ed232f --- /dev/null +++ b/images/svg/hands-clapping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-holding-child.svg b/images/svg/hands-holding-child.svg new file mode 100644 index 00000000..f06c43d2 --- /dev/null +++ b/images/svg/hands-holding-child.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-holding-circle.svg b/images/svg/hands-holding-circle.svg new file mode 100644 index 00000000..be8f0f79 --- /dev/null +++ b/images/svg/hands-holding-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-holding.svg b/images/svg/hands-holding.svg new file mode 100644 index 00000000..24cbab67 --- /dev/null +++ b/images/svg/hands-holding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands-praying.svg b/images/svg/hands-praying.svg new file mode 100644 index 00000000..71ebe7a3 --- /dev/null +++ b/images/svg/hands-praying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hands.svg b/images/svg/hands.svg new file mode 100644 index 00000000..6ce73f66 --- /dev/null +++ b/images/svg/hands.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/handshake-angle.svg b/images/svg/handshake-angle.svg new file mode 100644 index 00000000..0b621a26 --- /dev/null +++ b/images/svg/handshake-angle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/handshake-simple-slash.svg b/images/svg/handshake-simple-slash.svg new file mode 100644 index 00000000..738bfb44 --- /dev/null +++ b/images/svg/handshake-simple-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/handshake-simple.svg b/images/svg/handshake-simple.svg new file mode 100644 index 00000000..8616b0ea --- /dev/null +++ b/images/svg/handshake-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/handshake-slash.svg b/images/svg/handshake-slash.svg new file mode 100644 index 00000000..3d6361ae --- /dev/null +++ b/images/svg/handshake-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/handshake.svg b/images/svg/handshake.svg new file mode 100644 index 00000000..65c4f12e --- /dev/null +++ b/images/svg/handshake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hanukiah.svg b/images/svg/hanukiah.svg new file mode 100644 index 00000000..20e2392c --- /dev/null +++ b/images/svg/hanukiah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hard-drive.svg b/images/svg/hard-drive.svg new file mode 100644 index 00000000..6ad22373 --- /dev/null +++ b/images/svg/hard-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hashtag.svg b/images/svg/hashtag.svg new file mode 100644 index 00000000..d4b49fde --- /dev/null +++ b/images/svg/hashtag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hat-cowboy-side.svg b/images/svg/hat-cowboy-side.svg new file mode 100644 index 00000000..4441e2c3 --- /dev/null +++ b/images/svg/hat-cowboy-side.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hat-cowboy.svg b/images/svg/hat-cowboy.svg new file mode 100644 index 00000000..df9bac06 --- /dev/null +++ b/images/svg/hat-cowboy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hat-wizard.svg b/images/svg/hat-wizard.svg new file mode 100644 index 00000000..7aebf55a --- /dev/null +++ b/images/svg/hat-wizard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/head-side-cough-slash.svg b/images/svg/head-side-cough-slash.svg new file mode 100644 index 00000000..3414ce3a --- /dev/null +++ b/images/svg/head-side-cough-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/head-side-cough.svg b/images/svg/head-side-cough.svg new file mode 100644 index 00000000..1cadac89 --- /dev/null +++ b/images/svg/head-side-cough.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/head-side-mask.svg b/images/svg/head-side-mask.svg new file mode 100644 index 00000000..52835153 --- /dev/null +++ b/images/svg/head-side-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/head-side-virus.svg b/images/svg/head-side-virus.svg new file mode 100644 index 00000000..561b647b --- /dev/null +++ b/images/svg/head-side-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heading.svg b/images/svg/heading.svg new file mode 100644 index 00000000..6c4a6231 --- /dev/null +++ b/images/svg/heading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/headphones-simple.svg b/images/svg/headphones-simple.svg new file mode 100644 index 00000000..3150ef0f --- /dev/null +++ b/images/svg/headphones-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/headphones.svg b/images/svg/headphones.svg new file mode 100644 index 00000000..4fcc0849 --- /dev/null +++ b/images/svg/headphones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/headset.svg b/images/svg/headset.svg new file mode 100644 index 00000000..bd4b520a --- /dev/null +++ b/images/svg/headset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-circle-bolt.svg b/images/svg/heart-circle-bolt.svg new file mode 100644 index 00000000..d141c21f --- /dev/null +++ b/images/svg/heart-circle-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-circle-check.svg b/images/svg/heart-circle-check.svg new file mode 100644 index 00000000..a24197c7 --- /dev/null +++ b/images/svg/heart-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-circle-exclamation.svg b/images/svg/heart-circle-exclamation.svg new file mode 100644 index 00000000..02b2fe89 --- /dev/null +++ b/images/svg/heart-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-circle-minus.svg b/images/svg/heart-circle-minus.svg new file mode 100644 index 00000000..dad3e239 --- /dev/null +++ b/images/svg/heart-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-circle-plus.svg b/images/svg/heart-circle-plus.svg new file mode 100644 index 00000000..9f6173c0 --- /dev/null +++ b/images/svg/heart-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-circle-xmark.svg b/images/svg/heart-circle-xmark.svg new file mode 100644 index 00000000..188b5ec9 --- /dev/null +++ b/images/svg/heart-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-crack.svg b/images/svg/heart-crack.svg new file mode 100644 index 00000000..e0d3e85a --- /dev/null +++ b/images/svg/heart-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart-pulse.svg b/images/svg/heart-pulse.svg new file mode 100644 index 00000000..c7fb77bd --- /dev/null +++ b/images/svg/heart-pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/heart.svg b/images/svg/heart.svg new file mode 100644 index 00000000..f5061d0e --- /dev/null +++ b/images/svg/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/helicopter-symbol.svg b/images/svg/helicopter-symbol.svg new file mode 100644 index 00000000..ca13db9c --- /dev/null +++ b/images/svg/helicopter-symbol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/helicopter.svg b/images/svg/helicopter.svg new file mode 100644 index 00000000..624e092f --- /dev/null +++ b/images/svg/helicopter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/helmet-safety.svg b/images/svg/helmet-safety.svg new file mode 100644 index 00000000..ea25ddee --- /dev/null +++ b/images/svg/helmet-safety.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/helmet-un.svg b/images/svg/helmet-un.svg new file mode 100644 index 00000000..7dd69518 --- /dev/null +++ b/images/svg/helmet-un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/highlighter.svg b/images/svg/highlighter.svg new file mode 100644 index 00000000..9350104a --- /dev/null +++ b/images/svg/highlighter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hill-avalanche.svg b/images/svg/hill-avalanche.svg new file mode 100644 index 00000000..12520606 --- /dev/null +++ b/images/svg/hill-avalanche.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hill-rockslide.svg b/images/svg/hill-rockslide.svg new file mode 100644 index 00000000..885f2830 --- /dev/null +++ b/images/svg/hill-rockslide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hippo.svg b/images/svg/hippo.svg new file mode 100644 index 00000000..cc74bc03 --- /dev/null +++ b/images/svg/hippo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hockey-puck.svg b/images/svg/hockey-puck.svg new file mode 100644 index 00000000..4caf04b5 --- /dev/null +++ b/images/svg/hockey-puck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/holly-berry.svg b/images/svg/holly-berry.svg new file mode 100644 index 00000000..b1b018de --- /dev/null +++ b/images/svg/holly-berry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/horse-head.svg b/images/svg/horse-head.svg new file mode 100644 index 00000000..0e880fa5 --- /dev/null +++ b/images/svg/horse-head.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/horse.svg b/images/svg/horse.svg new file mode 100644 index 00000000..65284ac5 --- /dev/null +++ b/images/svg/horse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hospital-user.svg b/images/svg/hospital-user.svg new file mode 100644 index 00000000..05446ad7 --- /dev/null +++ b/images/svg/hospital-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hospital.svg b/images/svg/hospital.svg new file mode 100644 index 00000000..67ac0d27 --- /dev/null +++ b/images/svg/hospital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hot-tub-person.svg b/images/svg/hot-tub-person.svg new file mode 100644 index 00000000..d8608d80 --- /dev/null +++ b/images/svg/hot-tub-person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hotdog.svg b/images/svg/hotdog.svg new file mode 100644 index 00000000..b6d8a95f --- /dev/null +++ b/images/svg/hotdog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hotel.svg b/images/svg/hotel.svg new file mode 100644 index 00000000..5d2603d6 --- /dev/null +++ b/images/svg/hotel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hourglass-end.svg b/images/svg/hourglass-end.svg new file mode 100644 index 00000000..a77f6070 --- /dev/null +++ b/images/svg/hourglass-end.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hourglass-half.svg b/images/svg/hourglass-half.svg new file mode 100644 index 00000000..3c176944 --- /dev/null +++ b/images/svg/hourglass-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hourglass-start.svg b/images/svg/hourglass-start.svg new file mode 100644 index 00000000..8cb3bce2 --- /dev/null +++ b/images/svg/hourglass-start.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hourglass.svg b/images/svg/hourglass.svg new file mode 100644 index 00000000..6c4f6b18 --- /dev/null +++ b/images/svg/hourglass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-chimney-crack.svg b/images/svg/house-chimney-crack.svg new file mode 100644 index 00000000..812534e2 --- /dev/null +++ b/images/svg/house-chimney-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-chimney-medical.svg b/images/svg/house-chimney-medical.svg new file mode 100644 index 00000000..476126d2 --- /dev/null +++ b/images/svg/house-chimney-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-chimney-user.svg b/images/svg/house-chimney-user.svg new file mode 100644 index 00000000..2d46885d --- /dev/null +++ b/images/svg/house-chimney-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-chimney-window.svg b/images/svg/house-chimney-window.svg new file mode 100644 index 00000000..2a710633 --- /dev/null +++ b/images/svg/house-chimney-window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-chimney.svg b/images/svg/house-chimney.svg new file mode 100644 index 00000000..85c8e2c9 --- /dev/null +++ b/images/svg/house-chimney.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-circle-check.svg b/images/svg/house-circle-check.svg new file mode 100644 index 00000000..32cfda0c --- /dev/null +++ b/images/svg/house-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-circle-exclamation.svg b/images/svg/house-circle-exclamation.svg new file mode 100644 index 00000000..6757df15 --- /dev/null +++ b/images/svg/house-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-circle-xmark.svg b/images/svg/house-circle-xmark.svg new file mode 100644 index 00000000..20cd390d --- /dev/null +++ b/images/svg/house-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-crack.svg b/images/svg/house-crack.svg new file mode 100644 index 00000000..9e2c759d --- /dev/null +++ b/images/svg/house-crack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-fire.svg b/images/svg/house-fire.svg new file mode 100644 index 00000000..630a8ae8 --- /dev/null +++ b/images/svg/house-fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-flag.svg b/images/svg/house-flag.svg new file mode 100644 index 00000000..ca8e7da3 --- /dev/null +++ b/images/svg/house-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-flood-water-circle-arrow-right.svg b/images/svg/house-flood-water-circle-arrow-right.svg new file mode 100644 index 00000000..2538d884 --- /dev/null +++ b/images/svg/house-flood-water-circle-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-flood-water.svg b/images/svg/house-flood-water.svg new file mode 100644 index 00000000..03c85a64 --- /dev/null +++ b/images/svg/house-flood-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-laptop.svg b/images/svg/house-laptop.svg new file mode 100644 index 00000000..a73125bb --- /dev/null +++ b/images/svg/house-laptop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-lock.svg b/images/svg/house-lock.svg new file mode 100644 index 00000000..ee063418 --- /dev/null +++ b/images/svg/house-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-medical-circle-check.svg b/images/svg/house-medical-circle-check.svg new file mode 100644 index 00000000..6562d65e --- /dev/null +++ b/images/svg/house-medical-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-medical-circle-exclamation.svg b/images/svg/house-medical-circle-exclamation.svg new file mode 100644 index 00000000..0c1c6e5f --- /dev/null +++ b/images/svg/house-medical-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-medical-circle-xmark.svg b/images/svg/house-medical-circle-xmark.svg new file mode 100644 index 00000000..af06de66 --- /dev/null +++ b/images/svg/house-medical-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-medical-flag.svg b/images/svg/house-medical-flag.svg new file mode 100644 index 00000000..0943459a --- /dev/null +++ b/images/svg/house-medical-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-medical.svg b/images/svg/house-medical.svg new file mode 100644 index 00000000..fea8913d --- /dev/null +++ b/images/svg/house-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-signal.svg b/images/svg/house-signal.svg new file mode 100644 index 00000000..097afac0 --- /dev/null +++ b/images/svg/house-signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-tsunami.svg b/images/svg/house-tsunami.svg new file mode 100644 index 00000000..9f016147 --- /dev/null +++ b/images/svg/house-tsunami.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house-user.svg b/images/svg/house-user.svg new file mode 100644 index 00000000..ec316255 --- /dev/null +++ b/images/svg/house-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/house.svg b/images/svg/house.svg new file mode 100644 index 00000000..80427d02 --- /dev/null +++ b/images/svg/house.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hryvnia-sign.svg b/images/svg/hryvnia-sign.svg new file mode 100644 index 00000000..cb462c75 --- /dev/null +++ b/images/svg/hryvnia-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/hurricane.svg b/images/svg/hurricane.svg new file mode 100644 index 00000000..92a7e7cc --- /dev/null +++ b/images/svg/hurricane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/i-cursor.svg b/images/svg/i-cursor.svg new file mode 100644 index 00000000..082ba597 --- /dev/null +++ b/images/svg/i-cursor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/i.svg b/images/svg/i.svg new file mode 100644 index 00000000..3fcd545e --- /dev/null +++ b/images/svg/i.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ice-cream.svg b/images/svg/ice-cream.svg new file mode 100644 index 00000000..16e50abb --- /dev/null +++ b/images/svg/ice-cream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/icicles.svg b/images/svg/icicles.svg new file mode 100644 index 00000000..1f490a3c --- /dev/null +++ b/images/svg/icicles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/icons.svg b/images/svg/icons.svg new file mode 100644 index 00000000..8e614d97 --- /dev/null +++ b/images/svg/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/id-badge.svg b/images/svg/id-badge.svg new file mode 100644 index 00000000..183927a7 --- /dev/null +++ b/images/svg/id-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/id-card-clip.svg b/images/svg/id-card-clip.svg new file mode 100644 index 00000000..4127f1b2 --- /dev/null +++ b/images/svg/id-card-clip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/id-card.svg b/images/svg/id-card.svg new file mode 100644 index 00000000..cbe9b1cc --- /dev/null +++ b/images/svg/id-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/igloo.svg b/images/svg/igloo.svg new file mode 100644 index 00000000..62b6452d --- /dev/null +++ b/images/svg/igloo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/image-portrait.svg b/images/svg/image-portrait.svg new file mode 100644 index 00000000..c153c776 --- /dev/null +++ b/images/svg/image-portrait.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/image.svg b/images/svg/image.svg new file mode 100644 index 00000000..717fb979 --- /dev/null +++ b/images/svg/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/images.svg b/images/svg/images.svg new file mode 100644 index 00000000..2bf09d3a --- /dev/null +++ b/images/svg/images.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/inbox.svg b/images/svg/inbox.svg new file mode 100644 index 00000000..814ca8ed --- /dev/null +++ b/images/svg/inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/indent.svg b/images/svg/indent.svg new file mode 100644 index 00000000..467aaba1 --- /dev/null +++ b/images/svg/indent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/indian-rupee-sign.svg b/images/svg/indian-rupee-sign.svg new file mode 100644 index 00000000..6654fa4e --- /dev/null +++ b/images/svg/indian-rupee-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/industry.svg b/images/svg/industry.svg new file mode 100644 index 00000000..16f56c17 --- /dev/null +++ b/images/svg/industry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/infinity.svg b/images/svg/infinity.svg new file mode 100644 index 00000000..ad7a30ff --- /dev/null +++ b/images/svg/infinity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/info.svg b/images/svg/info.svg new file mode 100644 index 00000000..a908a000 --- /dev/null +++ b/images/svg/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/italic.svg b/images/svg/italic.svg new file mode 100644 index 00000000..059185e5 --- /dev/null +++ b/images/svg/italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/j.svg b/images/svg/j.svg new file mode 100644 index 00000000..cd80e54f --- /dev/null +++ b/images/svg/j.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/jar-wheat.svg b/images/svg/jar-wheat.svg new file mode 100644 index 00000000..b3146ee6 --- /dev/null +++ b/images/svg/jar-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/jar.svg b/images/svg/jar.svg new file mode 100644 index 00000000..9cb936dd --- /dev/null +++ b/images/svg/jar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/jedi.svg b/images/svg/jedi.svg new file mode 100644 index 00000000..3d55e39b --- /dev/null +++ b/images/svg/jedi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/jet-fighter-up.svg b/images/svg/jet-fighter-up.svg new file mode 100644 index 00000000..aa307f32 --- /dev/null +++ b/images/svg/jet-fighter-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/jet-fighter.svg b/images/svg/jet-fighter.svg new file mode 100644 index 00000000..49fd5a44 --- /dev/null +++ b/images/svg/jet-fighter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/joint.svg b/images/svg/joint.svg new file mode 100644 index 00000000..fac6a6b3 --- /dev/null +++ b/images/svg/joint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/jug-detergent.svg b/images/svg/jug-detergent.svg new file mode 100644 index 00000000..9ce632db --- /dev/null +++ b/images/svg/jug-detergent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/k.svg b/images/svg/k.svg new file mode 100644 index 00000000..6b063ed4 --- /dev/null +++ b/images/svg/k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/kaaba.svg b/images/svg/kaaba.svg new file mode 100644 index 00000000..2a11acab --- /dev/null +++ b/images/svg/kaaba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/key.svg b/images/svg/key.svg new file mode 100644 index 00000000..21b42dcb --- /dev/null +++ b/images/svg/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/keyboard.svg b/images/svg/keyboard.svg new file mode 100644 index 00000000..747a4626 --- /dev/null +++ b/images/svg/keyboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/khanda.svg b/images/svg/khanda.svg new file mode 100644 index 00000000..71ad9afc --- /dev/null +++ b/images/svg/khanda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/kip-sign.svg b/images/svg/kip-sign.svg new file mode 100644 index 00000000..e5523efb --- /dev/null +++ b/images/svg/kip-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/kit-medical.svg b/images/svg/kit-medical.svg new file mode 100644 index 00000000..cddbbb96 --- /dev/null +++ b/images/svg/kit-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/kitchen-set.svg b/images/svg/kitchen-set.svg new file mode 100644 index 00000000..397ead2d --- /dev/null +++ b/images/svg/kitchen-set.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/kiwi-bird.svg b/images/svg/kiwi-bird.svg new file mode 100644 index 00000000..585077ed --- /dev/null +++ b/images/svg/kiwi-bird.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/l.svg b/images/svg/l.svg new file mode 100644 index 00000000..d87303e5 --- /dev/null +++ b/images/svg/l.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/land-mine-on.svg b/images/svg/land-mine-on.svg new file mode 100644 index 00000000..f1a6ec5d --- /dev/null +++ b/images/svg/land-mine-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/landmark-dome.svg b/images/svg/landmark-dome.svg new file mode 100644 index 00000000..e1b1d9ed --- /dev/null +++ b/images/svg/landmark-dome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/landmark-flag.svg b/images/svg/landmark-flag.svg new file mode 100644 index 00000000..a39d7d36 --- /dev/null +++ b/images/svg/landmark-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/landmark.svg b/images/svg/landmark.svg new file mode 100644 index 00000000..d6e16bdb --- /dev/null +++ b/images/svg/landmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/language.svg b/images/svg/language.svg new file mode 100644 index 00000000..1fb303a7 --- /dev/null +++ b/images/svg/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/laptop-code.svg b/images/svg/laptop-code.svg new file mode 100644 index 00000000..9175e04c --- /dev/null +++ b/images/svg/laptop-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/laptop-file.svg b/images/svg/laptop-file.svg new file mode 100644 index 00000000..326f7e0c --- /dev/null +++ b/images/svg/laptop-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/laptop-medical.svg b/images/svg/laptop-medical.svg new file mode 100644 index 00000000..62a6b2ca --- /dev/null +++ b/images/svg/laptop-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/laptop.svg b/images/svg/laptop.svg new file mode 100644 index 00000000..70f9c3aa --- /dev/null +++ b/images/svg/laptop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lari-sign.svg b/images/svg/lari-sign.svg new file mode 100644 index 00000000..c70e799c --- /dev/null +++ b/images/svg/lari-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/layer-group.svg b/images/svg/layer-group.svg new file mode 100644 index 00000000..6d6dbf92 --- /dev/null +++ b/images/svg/layer-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/leaf.svg b/images/svg/leaf.svg new file mode 100644 index 00000000..0d29d964 --- /dev/null +++ b/images/svg/leaf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/left-long.svg b/images/svg/left-long.svg new file mode 100644 index 00000000..8cc4a2b1 --- /dev/null +++ b/images/svg/left-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/left-right.svg b/images/svg/left-right.svg new file mode 100644 index 00000000..210288ca --- /dev/null +++ b/images/svg/left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lemon.svg b/images/svg/lemon.svg new file mode 100644 index 00000000..5e6fb852 --- /dev/null +++ b/images/svg/lemon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/less-than-equal.svg b/images/svg/less-than-equal.svg new file mode 100644 index 00000000..914c724c --- /dev/null +++ b/images/svg/less-than-equal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/less-than.svg b/images/svg/less-than.svg new file mode 100644 index 00000000..525ac478 --- /dev/null +++ b/images/svg/less-than.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/life-ring.svg b/images/svg/life-ring.svg new file mode 100644 index 00000000..855e6b23 --- /dev/null +++ b/images/svg/life-ring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lightbulb.svg b/images/svg/lightbulb.svg new file mode 100644 index 00000000..48692771 --- /dev/null +++ b/images/svg/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lines-leaning.svg b/images/svg/lines-leaning.svg new file mode 100644 index 00000000..50d1070d --- /dev/null +++ b/images/svg/lines-leaning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/link-slash.svg b/images/svg/link-slash.svg new file mode 100644 index 00000000..619e197c --- /dev/null +++ b/images/svg/link-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/link.svg b/images/svg/link.svg new file mode 100644 index 00000000..191e7454 --- /dev/null +++ b/images/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lira-sign.svg b/images/svg/lira-sign.svg new file mode 100644 index 00000000..ceec1d82 --- /dev/null +++ b/images/svg/lira-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/list-check.svg b/images/svg/list-check.svg new file mode 100644 index 00000000..72748bd0 --- /dev/null +++ b/images/svg/list-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/list-ol.svg b/images/svg/list-ol.svg new file mode 100644 index 00000000..6454053d --- /dev/null +++ b/images/svg/list-ol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/list-ul.svg b/images/svg/list-ul.svg new file mode 100644 index 00000000..ab55a8eb --- /dev/null +++ b/images/svg/list-ul.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/list.svg b/images/svg/list.svg new file mode 100644 index 00000000..f017952b --- /dev/null +++ b/images/svg/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/litecoin-sign.svg b/images/svg/litecoin-sign.svg new file mode 100644 index 00000000..152003d9 --- /dev/null +++ b/images/svg/litecoin-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/location-arrow.svg b/images/svg/location-arrow.svg new file mode 100644 index 00000000..cbb2a0d8 --- /dev/null +++ b/images/svg/location-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/location-crosshairs.svg b/images/svg/location-crosshairs.svg new file mode 100644 index 00000000..6dee8c9c --- /dev/null +++ b/images/svg/location-crosshairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/location-dot.svg b/images/svg/location-dot.svg new file mode 100644 index 00000000..7965068d --- /dev/null +++ b/images/svg/location-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/location-pin-lock.svg b/images/svg/location-pin-lock.svg new file mode 100644 index 00000000..e83106db --- /dev/null +++ b/images/svg/location-pin-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/location-pin.svg b/images/svg/location-pin.svg new file mode 100644 index 00000000..e5de57b0 --- /dev/null +++ b/images/svg/location-pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lock-open.svg b/images/svg/lock-open.svg new file mode 100644 index 00000000..290a5d2a --- /dev/null +++ b/images/svg/lock-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lock.svg b/images/svg/lock.svg new file mode 100644 index 00000000..4cd929bf --- /dev/null +++ b/images/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/locust.svg b/images/svg/locust.svg new file mode 100644 index 00000000..a5dcf79d --- /dev/null +++ b/images/svg/locust.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lungs-virus.svg b/images/svg/lungs-virus.svg new file mode 100644 index 00000000..0d3f12cf --- /dev/null +++ b/images/svg/lungs-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/lungs.svg b/images/svg/lungs.svg new file mode 100644 index 00000000..53bc8d82 --- /dev/null +++ b/images/svg/lungs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/m.svg b/images/svg/m.svg new file mode 100644 index 00000000..0d8cf668 --- /dev/null +++ b/images/svg/m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnet.svg b/images/svg/magnet.svg new file mode 100644 index 00000000..9a843fc2 --- /dev/null +++ b/images/svg/magnet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass-arrow-right.svg b/images/svg/magnifying-glass-arrow-right.svg new file mode 100644 index 00000000..7989383f --- /dev/null +++ b/images/svg/magnifying-glass-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass-chart.svg b/images/svg/magnifying-glass-chart.svg new file mode 100644 index 00000000..95c53d89 --- /dev/null +++ b/images/svg/magnifying-glass-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass-dollar.svg b/images/svg/magnifying-glass-dollar.svg new file mode 100644 index 00000000..c8a26bd2 --- /dev/null +++ b/images/svg/magnifying-glass-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass-location.svg b/images/svg/magnifying-glass-location.svg new file mode 100644 index 00000000..47922b1e --- /dev/null +++ b/images/svg/magnifying-glass-location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass-minus.svg b/images/svg/magnifying-glass-minus.svg new file mode 100644 index 00000000..228cd636 --- /dev/null +++ b/images/svg/magnifying-glass-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass-plus.svg b/images/svg/magnifying-glass-plus.svg new file mode 100644 index 00000000..08cc747e --- /dev/null +++ b/images/svg/magnifying-glass-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/magnifying-glass.svg b/images/svg/magnifying-glass.svg new file mode 100644 index 00000000..2fabbf44 --- /dev/null +++ b/images/svg/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/manat-sign.svg b/images/svg/manat-sign.svg new file mode 100644 index 00000000..a2bd66f1 --- /dev/null +++ b/images/svg/manat-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/map-location-dot.svg b/images/svg/map-location-dot.svg new file mode 100644 index 00000000..3e95ee07 --- /dev/null +++ b/images/svg/map-location-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/map-location.svg b/images/svg/map-location.svg new file mode 100644 index 00000000..e1ffbbc7 --- /dev/null +++ b/images/svg/map-location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/map-pin.svg b/images/svg/map-pin.svg new file mode 100644 index 00000000..9e40ed41 --- /dev/null +++ b/images/svg/map-pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/map.svg b/images/svg/map.svg new file mode 100644 index 00000000..f29e38fd --- /dev/null +++ b/images/svg/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/marker.svg b/images/svg/marker.svg new file mode 100644 index 00000000..8b378b65 --- /dev/null +++ b/images/svg/marker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars-and-venus-burst.svg b/images/svg/mars-and-venus-burst.svg new file mode 100644 index 00000000..e0b147a1 --- /dev/null +++ b/images/svg/mars-and-venus-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars-and-venus.svg b/images/svg/mars-and-venus.svg new file mode 100644 index 00000000..c7d399bb --- /dev/null +++ b/images/svg/mars-and-venus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars-double.svg b/images/svg/mars-double.svg new file mode 100644 index 00000000..0fe88b77 --- /dev/null +++ b/images/svg/mars-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars-stroke-right.svg b/images/svg/mars-stroke-right.svg new file mode 100644 index 00000000..849eafd5 --- /dev/null +++ b/images/svg/mars-stroke-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars-stroke-up.svg b/images/svg/mars-stroke-up.svg new file mode 100644 index 00000000..69934f3f --- /dev/null +++ b/images/svg/mars-stroke-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars-stroke.svg b/images/svg/mars-stroke.svg new file mode 100644 index 00000000..f744b0d8 --- /dev/null +++ b/images/svg/mars-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mars.svg b/images/svg/mars.svg new file mode 100644 index 00000000..d4629284 --- /dev/null +++ b/images/svg/mars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/martini-glass-citrus.svg b/images/svg/martini-glass-citrus.svg new file mode 100644 index 00000000..7500a574 --- /dev/null +++ b/images/svg/martini-glass-citrus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/martini-glass-empty.svg b/images/svg/martini-glass-empty.svg new file mode 100644 index 00000000..5bbaa33b --- /dev/null +++ b/images/svg/martini-glass-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/martini-glass.svg b/images/svg/martini-glass.svg new file mode 100644 index 00000000..3a67b519 --- /dev/null +++ b/images/svg/martini-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mask-face.svg b/images/svg/mask-face.svg new file mode 100644 index 00000000..d040f95f --- /dev/null +++ b/images/svg/mask-face.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mask-ventilator.svg b/images/svg/mask-ventilator.svg new file mode 100644 index 00000000..227e734b --- /dev/null +++ b/images/svg/mask-ventilator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mask.svg b/images/svg/mask.svg new file mode 100644 index 00000000..75883ddc --- /dev/null +++ b/images/svg/mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/masks-theater.svg b/images/svg/masks-theater.svg new file mode 100644 index 00000000..919abcc0 --- /dev/null +++ b/images/svg/masks-theater.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mattress-pillow.svg b/images/svg/mattress-pillow.svg new file mode 100644 index 00000000..438aa0f9 --- /dev/null +++ b/images/svg/mattress-pillow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/maximize.svg b/images/svg/maximize.svg new file mode 100644 index 00000000..f6e9f67e --- /dev/null +++ b/images/svg/maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/medal.svg b/images/svg/medal.svg new file mode 100644 index 00000000..4a24a4c1 --- /dev/null +++ b/images/svg/medal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/memory.svg b/images/svg/memory.svg new file mode 100644 index 00000000..18833088 --- /dev/null +++ b/images/svg/memory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/menorah.svg b/images/svg/menorah.svg new file mode 100644 index 00000000..94ab8292 --- /dev/null +++ b/images/svg/menorah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mercury.svg b/images/svg/mercury.svg new file mode 100644 index 00000000..b41bcf3b --- /dev/null +++ b/images/svg/mercury.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/message.svg b/images/svg/message.svg new file mode 100644 index 00000000..fd5074e0 --- /dev/null +++ b/images/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/meteor.svg b/images/svg/meteor.svg new file mode 100644 index 00000000..497ab847 --- /dev/null +++ b/images/svg/meteor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/microchip.svg b/images/svg/microchip.svg new file mode 100644 index 00000000..9e5884fa --- /dev/null +++ b/images/svg/microchip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/microphone-lines-slash.svg b/images/svg/microphone-lines-slash.svg new file mode 100644 index 00000000..0b62f350 --- /dev/null +++ b/images/svg/microphone-lines-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/microphone-lines.svg b/images/svg/microphone-lines.svg new file mode 100644 index 00000000..c1a3dc38 --- /dev/null +++ b/images/svg/microphone-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/microphone-slash.svg b/images/svg/microphone-slash.svg new file mode 100644 index 00000000..33331aa4 --- /dev/null +++ b/images/svg/microphone-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/microphone.svg b/images/svg/microphone.svg new file mode 100644 index 00000000..932d6a2d --- /dev/null +++ b/images/svg/microphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/microscope.svg b/images/svg/microscope.svg new file mode 100644 index 00000000..3860c3fd --- /dev/null +++ b/images/svg/microscope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mill-sign.svg b/images/svg/mill-sign.svg new file mode 100644 index 00000000..2e7bcdbe --- /dev/null +++ b/images/svg/mill-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/minimize.svg b/images/svg/minimize.svg new file mode 100644 index 00000000..d5f39a5b --- /dev/null +++ b/images/svg/minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/minus.svg b/images/svg/minus.svg new file mode 100644 index 00000000..c86b6641 --- /dev/null +++ b/images/svg/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mitten.svg b/images/svg/mitten.svg new file mode 100644 index 00000000..d4dd7591 --- /dev/null +++ b/images/svg/mitten.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mobile-button.svg b/images/svg/mobile-button.svg new file mode 100644 index 00000000..ba601d6e --- /dev/null +++ b/images/svg/mobile-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mobile-retro.svg b/images/svg/mobile-retro.svg new file mode 100644 index 00000000..cde4a51a --- /dev/null +++ b/images/svg/mobile-retro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mobile-screen-button.svg b/images/svg/mobile-screen-button.svg new file mode 100644 index 00000000..20162d64 --- /dev/null +++ b/images/svg/mobile-screen-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mobile-screen.svg b/images/svg/mobile-screen.svg new file mode 100644 index 00000000..9aa48803 --- /dev/null +++ b/images/svg/mobile-screen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mobile.svg b/images/svg/mobile.svg new file mode 100644 index 00000000..87dd18d1 --- /dev/null +++ b/images/svg/mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill-1-wave.svg b/images/svg/money-bill-1-wave.svg new file mode 100644 index 00000000..18ab29b0 --- /dev/null +++ b/images/svg/money-bill-1-wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill-1.svg b/images/svg/money-bill-1.svg new file mode 100644 index 00000000..46d840f8 --- /dev/null +++ b/images/svg/money-bill-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill-transfer.svg b/images/svg/money-bill-transfer.svg new file mode 100644 index 00000000..99b8d72f --- /dev/null +++ b/images/svg/money-bill-transfer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill-trend-up.svg b/images/svg/money-bill-trend-up.svg new file mode 100644 index 00000000..63989e8b --- /dev/null +++ b/images/svg/money-bill-trend-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill-wave.svg b/images/svg/money-bill-wave.svg new file mode 100644 index 00000000..3f20b545 --- /dev/null +++ b/images/svg/money-bill-wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill-wheat.svg b/images/svg/money-bill-wheat.svg new file mode 100644 index 00000000..d99d8b22 --- /dev/null +++ b/images/svg/money-bill-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bill.svg b/images/svg/money-bill.svg new file mode 100644 index 00000000..56a616d3 --- /dev/null +++ b/images/svg/money-bill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-bills.svg b/images/svg/money-bills.svg new file mode 100644 index 00000000..6392ce77 --- /dev/null +++ b/images/svg/money-bills.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-check-dollar.svg b/images/svg/money-check-dollar.svg new file mode 100644 index 00000000..b7f44a94 --- /dev/null +++ b/images/svg/money-check-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/money-check.svg b/images/svg/money-check.svg new file mode 100644 index 00000000..1df5ac4e --- /dev/null +++ b/images/svg/money-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/monument.svg b/images/svg/monument.svg new file mode 100644 index 00000000..116829d9 --- /dev/null +++ b/images/svg/monument.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/moon.svg b/images/svg/moon.svg new file mode 100644 index 00000000..dd835670 --- /dev/null +++ b/images/svg/moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mortar-pestle.svg b/images/svg/mortar-pestle.svg new file mode 100644 index 00000000..5984587b --- /dev/null +++ b/images/svg/mortar-pestle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mosque.svg b/images/svg/mosque.svg new file mode 100644 index 00000000..d12bf67f --- /dev/null +++ b/images/svg/mosque.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mosquito-net.svg b/images/svg/mosquito-net.svg new file mode 100644 index 00000000..12f312c4 --- /dev/null +++ b/images/svg/mosquito-net.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mosquito.svg b/images/svg/mosquito.svg new file mode 100644 index 00000000..75eddecf --- /dev/null +++ b/images/svg/mosquito.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/motorcycle.svg b/images/svg/motorcycle.svg new file mode 100644 index 00000000..b884dd31 --- /dev/null +++ b/images/svg/motorcycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mound.svg b/images/svg/mound.svg new file mode 100644 index 00000000..93675376 --- /dev/null +++ b/images/svg/mound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mountain-city.svg b/images/svg/mountain-city.svg new file mode 100644 index 00000000..1d49095b --- /dev/null +++ b/images/svg/mountain-city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mountain-sun.svg b/images/svg/mountain-sun.svg new file mode 100644 index 00000000..eff94f73 --- /dev/null +++ b/images/svg/mountain-sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mountain.svg b/images/svg/mountain.svg new file mode 100644 index 00000000..cf890d26 --- /dev/null +++ b/images/svg/mountain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mug-hot.svg b/images/svg/mug-hot.svg new file mode 100644 index 00000000..46e82dc3 --- /dev/null +++ b/images/svg/mug-hot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/mug-saucer.svg b/images/svg/mug-saucer.svg new file mode 100644 index 00000000..5d85056c --- /dev/null +++ b/images/svg/mug-saucer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/music.svg b/images/svg/music.svg new file mode 100644 index 00000000..8494c729 --- /dev/null +++ b/images/svg/music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/n.svg b/images/svg/n.svg new file mode 100644 index 00000000..4cf4ba51 --- /dev/null +++ b/images/svg/n.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/naira-sign.svg b/images/svg/naira-sign.svg new file mode 100644 index 00000000..acb6c41c --- /dev/null +++ b/images/svg/naira-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/network-wired.svg b/images/svg/network-wired.svg new file mode 100644 index 00000000..536ffc54 --- /dev/null +++ b/images/svg/network-wired.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/neuter.svg b/images/svg/neuter.svg new file mode 100644 index 00000000..723162e0 --- /dev/null +++ b/images/svg/neuter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/newspaper.svg b/images/svg/newspaper.svg new file mode 100644 index 00000000..500691f6 --- /dev/null +++ b/images/svg/newspaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/not-equal.svg b/images/svg/not-equal.svg new file mode 100644 index 00000000..79d46bdd --- /dev/null +++ b/images/svg/not-equal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/notdef.svg b/images/svg/notdef.svg new file mode 100644 index 00000000..c34d2d4f --- /dev/null +++ b/images/svg/notdef.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/note-sticky.svg b/images/svg/note-sticky.svg new file mode 100644 index 00000000..655b8cc2 --- /dev/null +++ b/images/svg/note-sticky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/notes-medical.svg b/images/svg/notes-medical.svg new file mode 100644 index 00000000..03cd6083 --- /dev/null +++ b/images/svg/notes-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/o.svg b/images/svg/o.svg new file mode 100644 index 00000000..d6519c59 --- /dev/null +++ b/images/svg/o.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/object-group.svg b/images/svg/object-group.svg new file mode 100644 index 00000000..1f7aae9f --- /dev/null +++ b/images/svg/object-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/object-ungroup.svg b/images/svg/object-ungroup.svg new file mode 100644 index 00000000..2fa3a227 --- /dev/null +++ b/images/svg/object-ungroup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/oil-can.svg b/images/svg/oil-can.svg new file mode 100644 index 00000000..83379141 --- /dev/null +++ b/images/svg/oil-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/oil-well.svg b/images/svg/oil-well.svg new file mode 100644 index 00000000..aeebc39f --- /dev/null +++ b/images/svg/oil-well.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/om.svg b/images/svg/om.svg new file mode 100644 index 00000000..73955d87 --- /dev/null +++ b/images/svg/om.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/otter.svg b/images/svg/otter.svg new file mode 100644 index 00000000..69e45595 --- /dev/null +++ b/images/svg/otter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/outdent.svg b/images/svg/outdent.svg new file mode 100644 index 00000000..1643b148 --- /dev/null +++ b/images/svg/outdent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/p.svg b/images/svg/p.svg new file mode 100644 index 00000000..ba0dd3d2 --- /dev/null +++ b/images/svg/p.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pager.svg b/images/svg/pager.svg new file mode 100644 index 00000000..225d53ae --- /dev/null +++ b/images/svg/pager.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paint-roller.svg b/images/svg/paint-roller.svg new file mode 100644 index 00000000..6060141f --- /dev/null +++ b/images/svg/paint-roller.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paintbrush.svg b/images/svg/paintbrush.svg new file mode 100644 index 00000000..9aa3da6d --- /dev/null +++ b/images/svg/paintbrush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/palette.svg b/images/svg/palette.svg new file mode 100644 index 00000000..097df3c9 --- /dev/null +++ b/images/svg/palette.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pallet.svg b/images/svg/pallet.svg new file mode 100644 index 00000000..46604648 --- /dev/null +++ b/images/svg/pallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/panorama.svg b/images/svg/panorama.svg new file mode 100644 index 00000000..b3e66752 --- /dev/null +++ b/images/svg/panorama.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paper-plane.svg b/images/svg/paper-plane.svg new file mode 100644 index 00000000..a65f11bb --- /dev/null +++ b/images/svg/paper-plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paperclip.svg b/images/svg/paperclip.svg new file mode 100644 index 00000000..c62fea6d --- /dev/null +++ b/images/svg/paperclip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/parachute-box.svg b/images/svg/parachute-box.svg new file mode 100644 index 00000000..89d18559 --- /dev/null +++ b/images/svg/parachute-box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paragraph.svg b/images/svg/paragraph.svg new file mode 100644 index 00000000..6936a6ed --- /dev/null +++ b/images/svg/paragraph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/passport.svg b/images/svg/passport.svg new file mode 100644 index 00000000..6034e068 --- /dev/null +++ b/images/svg/passport.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paste.svg b/images/svg/paste.svg new file mode 100644 index 00000000..29fcd20f --- /dev/null +++ b/images/svg/paste.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pause.svg b/images/svg/pause.svg new file mode 100644 index 00000000..7c89e05b --- /dev/null +++ b/images/svg/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/paw.svg b/images/svg/paw.svg new file mode 100644 index 00000000..b0bc5165 --- /dev/null +++ b/images/svg/paw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/peace.svg b/images/svg/peace.svg new file mode 100644 index 00000000..45a6d3cf --- /dev/null +++ b/images/svg/peace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pen-clip.svg b/images/svg/pen-clip.svg new file mode 100644 index 00000000..9b12138e --- /dev/null +++ b/images/svg/pen-clip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pen-fancy.svg b/images/svg/pen-fancy.svg new file mode 100644 index 00000000..c0433e2e --- /dev/null +++ b/images/svg/pen-fancy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pen-nib.svg b/images/svg/pen-nib.svg new file mode 100644 index 00000000..c9be37a3 --- /dev/null +++ b/images/svg/pen-nib.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pen-ruler.svg b/images/svg/pen-ruler.svg new file mode 100644 index 00000000..2827a82f --- /dev/null +++ b/images/svg/pen-ruler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pen-to-square.svg b/images/svg/pen-to-square.svg new file mode 100644 index 00000000..d7b0f971 --- /dev/null +++ b/images/svg/pen-to-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pen.svg b/images/svg/pen.svg new file mode 100644 index 00000000..4455241d --- /dev/null +++ b/images/svg/pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pencil.svg b/images/svg/pencil.svg new file mode 100644 index 00000000..8f4531d9 --- /dev/null +++ b/images/svg/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-arrows.svg b/images/svg/people-arrows.svg new file mode 100644 index 00000000..fd7bf2c9 --- /dev/null +++ b/images/svg/people-arrows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-carry-box.svg b/images/svg/people-carry-box.svg new file mode 100644 index 00000000..de21f160 --- /dev/null +++ b/images/svg/people-carry-box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-group.svg b/images/svg/people-group.svg new file mode 100644 index 00000000..565c4b0c --- /dev/null +++ b/images/svg/people-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-line.svg b/images/svg/people-line.svg new file mode 100644 index 00000000..3f7a0287 --- /dev/null +++ b/images/svg/people-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-pulling.svg b/images/svg/people-pulling.svg new file mode 100644 index 00000000..7beb23be --- /dev/null +++ b/images/svg/people-pulling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-robbery.svg b/images/svg/people-robbery.svg new file mode 100644 index 00000000..61491d1a --- /dev/null +++ b/images/svg/people-robbery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/people-roof.svg b/images/svg/people-roof.svg new file mode 100644 index 00000000..b3348e96 --- /dev/null +++ b/images/svg/people-roof.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pepper-hot.svg b/images/svg/pepper-hot.svg new file mode 100644 index 00000000..7abbaf8d --- /dev/null +++ b/images/svg/pepper-hot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/percent.svg b/images/svg/percent.svg new file mode 100644 index 00000000..50355978 --- /dev/null +++ b/images/svg/percent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-arrow-down-to-line.svg b/images/svg/person-arrow-down-to-line.svg new file mode 100644 index 00000000..be15203f --- /dev/null +++ b/images/svg/person-arrow-down-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-arrow-up-from-line.svg b/images/svg/person-arrow-up-from-line.svg new file mode 100644 index 00000000..759bc066 --- /dev/null +++ b/images/svg/person-arrow-up-from-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-biking.svg b/images/svg/person-biking.svg new file mode 100644 index 00000000..c358593f --- /dev/null +++ b/images/svg/person-biking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-booth.svg b/images/svg/person-booth.svg new file mode 100644 index 00000000..f2854c8c --- /dev/null +++ b/images/svg/person-booth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-breastfeeding.svg b/images/svg/person-breastfeeding.svg new file mode 100644 index 00000000..8c7b06ca --- /dev/null +++ b/images/svg/person-breastfeeding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-burst.svg b/images/svg/person-burst.svg new file mode 100644 index 00000000..d9e7bfcd --- /dev/null +++ b/images/svg/person-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-cane.svg b/images/svg/person-cane.svg new file mode 100644 index 00000000..0fb1f5c6 --- /dev/null +++ b/images/svg/person-cane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-chalkboard.svg b/images/svg/person-chalkboard.svg new file mode 100644 index 00000000..69b801e1 --- /dev/null +++ b/images/svg/person-chalkboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-circle-check.svg b/images/svg/person-circle-check.svg new file mode 100644 index 00000000..c712e93a --- /dev/null +++ b/images/svg/person-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-circle-exclamation.svg b/images/svg/person-circle-exclamation.svg new file mode 100644 index 00000000..23ba0f5e --- /dev/null +++ b/images/svg/person-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-circle-minus.svg b/images/svg/person-circle-minus.svg new file mode 100644 index 00000000..315d4441 --- /dev/null +++ b/images/svg/person-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-circle-plus.svg b/images/svg/person-circle-plus.svg new file mode 100644 index 00000000..1d97c76f --- /dev/null +++ b/images/svg/person-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-circle-question.svg b/images/svg/person-circle-question.svg new file mode 100644 index 00000000..32e8169a --- /dev/null +++ b/images/svg/person-circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-circle-xmark.svg b/images/svg/person-circle-xmark.svg new file mode 100644 index 00000000..1e2b16ca --- /dev/null +++ b/images/svg/person-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-digging.svg b/images/svg/person-digging.svg new file mode 100644 index 00000000..6959541d --- /dev/null +++ b/images/svg/person-digging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-dots-from-line.svg b/images/svg/person-dots-from-line.svg new file mode 100644 index 00000000..6458a3e2 --- /dev/null +++ b/images/svg/person-dots-from-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-dress-burst.svg b/images/svg/person-dress-burst.svg new file mode 100644 index 00000000..8a42edc3 --- /dev/null +++ b/images/svg/person-dress-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-dress.svg b/images/svg/person-dress.svg new file mode 100644 index 00000000..c19f9088 --- /dev/null +++ b/images/svg/person-dress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-drowning.svg b/images/svg/person-drowning.svg new file mode 100644 index 00000000..675f4234 --- /dev/null +++ b/images/svg/person-drowning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-falling-burst.svg b/images/svg/person-falling-burst.svg new file mode 100644 index 00000000..6841f7bd --- /dev/null +++ b/images/svg/person-falling-burst.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-falling.svg b/images/svg/person-falling.svg new file mode 100644 index 00000000..f5af7826 --- /dev/null +++ b/images/svg/person-falling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-half-dress.svg b/images/svg/person-half-dress.svg new file mode 100644 index 00000000..6cc2a652 --- /dev/null +++ b/images/svg/person-half-dress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-harassing.svg b/images/svg/person-harassing.svg new file mode 100644 index 00000000..2d0466d5 --- /dev/null +++ b/images/svg/person-harassing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-hiking.svg b/images/svg/person-hiking.svg new file mode 100644 index 00000000..d9406217 --- /dev/null +++ b/images/svg/person-hiking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-military-pointing.svg b/images/svg/person-military-pointing.svg new file mode 100644 index 00000000..305afdac --- /dev/null +++ b/images/svg/person-military-pointing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-military-rifle.svg b/images/svg/person-military-rifle.svg new file mode 100644 index 00000000..5c96e2c4 --- /dev/null +++ b/images/svg/person-military-rifle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-military-to-person.svg b/images/svg/person-military-to-person.svg new file mode 100644 index 00000000..e618382a --- /dev/null +++ b/images/svg/person-military-to-person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-praying.svg b/images/svg/person-praying.svg new file mode 100644 index 00000000..8e113074 --- /dev/null +++ b/images/svg/person-praying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-pregnant.svg b/images/svg/person-pregnant.svg new file mode 100644 index 00000000..cabb090e --- /dev/null +++ b/images/svg/person-pregnant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-rays.svg b/images/svg/person-rays.svg new file mode 100644 index 00000000..0d5c4f81 --- /dev/null +++ b/images/svg/person-rays.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-rifle.svg b/images/svg/person-rifle.svg new file mode 100644 index 00000000..341dcc03 --- /dev/null +++ b/images/svg/person-rifle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-running.svg b/images/svg/person-running.svg new file mode 100644 index 00000000..d0d21eb9 --- /dev/null +++ b/images/svg/person-running.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-shelter.svg b/images/svg/person-shelter.svg new file mode 100644 index 00000000..0a3ca4df --- /dev/null +++ b/images/svg/person-shelter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-skating.svg b/images/svg/person-skating.svg new file mode 100644 index 00000000..3d694d04 --- /dev/null +++ b/images/svg/person-skating.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-skiing-nordic.svg b/images/svg/person-skiing-nordic.svg new file mode 100644 index 00000000..06d44a0b --- /dev/null +++ b/images/svg/person-skiing-nordic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-skiing.svg b/images/svg/person-skiing.svg new file mode 100644 index 00000000..38ba8555 --- /dev/null +++ b/images/svg/person-skiing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-snowboarding.svg b/images/svg/person-snowboarding.svg new file mode 100644 index 00000000..0572dc2c --- /dev/null +++ b/images/svg/person-snowboarding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-swimming.svg b/images/svg/person-swimming.svg new file mode 100644 index 00000000..1443a968 --- /dev/null +++ b/images/svg/person-swimming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-through-window.svg b/images/svg/person-through-window.svg new file mode 100644 index 00000000..6becf704 --- /dev/null +++ b/images/svg/person-through-window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-walking-arrow-loop-left.svg b/images/svg/person-walking-arrow-loop-left.svg new file mode 100644 index 00000000..e122bf2a --- /dev/null +++ b/images/svg/person-walking-arrow-loop-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-walking-arrow-right.svg b/images/svg/person-walking-arrow-right.svg new file mode 100644 index 00000000..34b38553 --- /dev/null +++ b/images/svg/person-walking-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-walking-dashed-line-arrow-right.svg b/images/svg/person-walking-dashed-line-arrow-right.svg new file mode 100644 index 00000000..63531a40 --- /dev/null +++ b/images/svg/person-walking-dashed-line-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-walking-luggage.svg b/images/svg/person-walking-luggage.svg new file mode 100644 index 00000000..f328e24b --- /dev/null +++ b/images/svg/person-walking-luggage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-walking-with-cane.svg b/images/svg/person-walking-with-cane.svg new file mode 100644 index 00000000..62873885 --- /dev/null +++ b/images/svg/person-walking-with-cane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person-walking.svg b/images/svg/person-walking.svg new file mode 100644 index 00000000..8a121b19 --- /dev/null +++ b/images/svg/person-walking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/person.svg b/images/svg/person.svg new file mode 100644 index 00000000..9fd7f260 --- /dev/null +++ b/images/svg/person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/peseta-sign.svg b/images/svg/peseta-sign.svg new file mode 100644 index 00000000..dcfd889f --- /dev/null +++ b/images/svg/peseta-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/peso-sign.svg b/images/svg/peso-sign.svg new file mode 100644 index 00000000..b5a751e8 --- /dev/null +++ b/images/svg/peso-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/phone-flip.svg b/images/svg/phone-flip.svg new file mode 100644 index 00000000..48d05a8f --- /dev/null +++ b/images/svg/phone-flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/phone-slash.svg b/images/svg/phone-slash.svg new file mode 100644 index 00000000..b9dea46b --- /dev/null +++ b/images/svg/phone-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/phone-volume.svg b/images/svg/phone-volume.svg new file mode 100644 index 00000000..8487764d --- /dev/null +++ b/images/svg/phone-volume.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/phone.svg b/images/svg/phone.svg new file mode 100644 index 00000000..3249580f --- /dev/null +++ b/images/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/photo-film.svg b/images/svg/photo-film.svg new file mode 100644 index 00000000..cc440af0 --- /dev/null +++ b/images/svg/photo-film.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/piggy-bank.svg b/images/svg/piggy-bank.svg new file mode 100644 index 00000000..350a7469 --- /dev/null +++ b/images/svg/piggy-bank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pills.svg b/images/svg/pills.svg new file mode 100644 index 00000000..a504b889 --- /dev/null +++ b/images/svg/pills.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pizza-slice.svg b/images/svg/pizza-slice.svg new file mode 100644 index 00000000..b0da95ae --- /dev/null +++ b/images/svg/pizza-slice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/place-of-worship.svg b/images/svg/place-of-worship.svg new file mode 100644 index 00000000..79fc7c6c --- /dev/null +++ b/images/svg/place-of-worship.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-arrival.svg b/images/svg/plane-arrival.svg new file mode 100644 index 00000000..03c812db --- /dev/null +++ b/images/svg/plane-arrival.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-circle-check.svg b/images/svg/plane-circle-check.svg new file mode 100644 index 00000000..8ef685cb --- /dev/null +++ b/images/svg/plane-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-circle-exclamation.svg b/images/svg/plane-circle-exclamation.svg new file mode 100644 index 00000000..faa3b332 --- /dev/null +++ b/images/svg/plane-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-circle-xmark.svg b/images/svg/plane-circle-xmark.svg new file mode 100644 index 00000000..46e39826 --- /dev/null +++ b/images/svg/plane-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-departure.svg b/images/svg/plane-departure.svg new file mode 100644 index 00000000..ea25b1f1 --- /dev/null +++ b/images/svg/plane-departure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-lock.svg b/images/svg/plane-lock.svg new file mode 100644 index 00000000..d162c6e7 --- /dev/null +++ b/images/svg/plane-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-slash.svg b/images/svg/plane-slash.svg new file mode 100644 index 00000000..a15044b8 --- /dev/null +++ b/images/svg/plane-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane-up.svg b/images/svg/plane-up.svg new file mode 100644 index 00000000..b05e5224 --- /dev/null +++ b/images/svg/plane-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plane.svg b/images/svg/plane.svg new file mode 100644 index 00000000..839351f3 --- /dev/null +++ b/images/svg/plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plant-wilt.svg b/images/svg/plant-wilt.svg new file mode 100644 index 00000000..ae679fdd --- /dev/null +++ b/images/svg/plant-wilt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plate-wheat.svg b/images/svg/plate-wheat.svg new file mode 100644 index 00000000..75a7010f --- /dev/null +++ b/images/svg/plate-wheat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/play.svg b/images/svg/play.svg new file mode 100644 index 00000000..1ca693a4 --- /dev/null +++ b/images/svg/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug-circle-bolt.svg b/images/svg/plug-circle-bolt.svg new file mode 100644 index 00000000..bb3f61a9 --- /dev/null +++ b/images/svg/plug-circle-bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug-circle-check.svg b/images/svg/plug-circle-check.svg new file mode 100644 index 00000000..52c4a048 --- /dev/null +++ b/images/svg/plug-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug-circle-exclamation.svg b/images/svg/plug-circle-exclamation.svg new file mode 100644 index 00000000..232d491a --- /dev/null +++ b/images/svg/plug-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug-circle-minus.svg b/images/svg/plug-circle-minus.svg new file mode 100644 index 00000000..cf3db994 --- /dev/null +++ b/images/svg/plug-circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug-circle-plus.svg b/images/svg/plug-circle-plus.svg new file mode 100644 index 00000000..fedd47c8 --- /dev/null +++ b/images/svg/plug-circle-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug-circle-xmark.svg b/images/svg/plug-circle-xmark.svg new file mode 100644 index 00000000..7123e47c --- /dev/null +++ b/images/svg/plug-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plug.svg b/images/svg/plug.svg new file mode 100644 index 00000000..971e24e5 --- /dev/null +++ b/images/svg/plug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plus-minus.svg b/images/svg/plus-minus.svg new file mode 100644 index 00000000..6972c0ab --- /dev/null +++ b/images/svg/plus-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/plus.svg b/images/svg/plus.svg new file mode 100644 index 00000000..81161a49 --- /dev/null +++ b/images/svg/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/podcast.svg b/images/svg/podcast.svg new file mode 100644 index 00000000..8f2064e5 --- /dev/null +++ b/images/svg/podcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/poo-storm.svg b/images/svg/poo-storm.svg new file mode 100644 index 00000000..e08cefcc --- /dev/null +++ b/images/svg/poo-storm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/poo.svg b/images/svg/poo.svg new file mode 100644 index 00000000..b4b9f171 --- /dev/null +++ b/images/svg/poo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/poop.svg b/images/svg/poop.svg new file mode 100644 index 00000000..df772506 --- /dev/null +++ b/images/svg/poop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/power-off.svg b/images/svg/power-off.svg new file mode 100644 index 00000000..ec8996af --- /dev/null +++ b/images/svg/power-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/prescription-bottle-medical.svg b/images/svg/prescription-bottle-medical.svg new file mode 100644 index 00000000..9a889353 --- /dev/null +++ b/images/svg/prescription-bottle-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/prescription-bottle.svg b/images/svg/prescription-bottle.svg new file mode 100644 index 00000000..32a2abb8 --- /dev/null +++ b/images/svg/prescription-bottle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/prescription.svg b/images/svg/prescription.svg new file mode 100644 index 00000000..a9a35066 --- /dev/null +++ b/images/svg/prescription.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/print.svg b/images/svg/print.svg new file mode 100644 index 00000000..ea1592db --- /dev/null +++ b/images/svg/print.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pump-medical.svg b/images/svg/pump-medical.svg new file mode 100644 index 00000000..e61277fb --- /dev/null +++ b/images/svg/pump-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/pump-soap.svg b/images/svg/pump-soap.svg new file mode 100644 index 00000000..8f2a8254 --- /dev/null +++ b/images/svg/pump-soap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/puzzle-piece.svg b/images/svg/puzzle-piece.svg new file mode 100644 index 00000000..a5ac4443 --- /dev/null +++ b/images/svg/puzzle-piece.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/q.svg b/images/svg/q.svg new file mode 100644 index 00000000..72deffa0 --- /dev/null +++ b/images/svg/q.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/qrcode.svg b/images/svg/qrcode.svg new file mode 100644 index 00000000..a1af51ff --- /dev/null +++ b/images/svg/qrcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/question.svg b/images/svg/question.svg new file mode 100644 index 00000000..d5071ebf --- /dev/null +++ b/images/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/quote-left.svg b/images/svg/quote-left.svg new file mode 100644 index 00000000..eabc13d4 --- /dev/null +++ b/images/svg/quote-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/quote-right.svg b/images/svg/quote-right.svg new file mode 100644 index 00000000..28f5e791 --- /dev/null +++ b/images/svg/quote-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/r.svg b/images/svg/r.svg new file mode 100644 index 00000000..8b7a0d4c --- /dev/null +++ b/images/svg/r.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/radiation.svg b/images/svg/radiation.svg new file mode 100644 index 00000000..9139f6e1 --- /dev/null +++ b/images/svg/radiation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/radio.svg b/images/svg/radio.svg new file mode 100644 index 00000000..24bc8f01 --- /dev/null +++ b/images/svg/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rainbow.svg b/images/svg/rainbow.svg new file mode 100644 index 00000000..b4a4e0df --- /dev/null +++ b/images/svg/rainbow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ranking-star.svg b/images/svg/ranking-star.svg new file mode 100644 index 00000000..45b7f5fc --- /dev/null +++ b/images/svg/ranking-star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/receipt.svg b/images/svg/receipt.svg new file mode 100644 index 00000000..5e6526b9 --- /dev/null +++ b/images/svg/receipt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/record-vinyl.svg b/images/svg/record-vinyl.svg new file mode 100644 index 00000000..1f9f2289 --- /dev/null +++ b/images/svg/record-vinyl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rectangle-ad.svg b/images/svg/rectangle-ad.svg new file mode 100644 index 00000000..0118ee36 --- /dev/null +++ b/images/svg/rectangle-ad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rectangle-list.svg b/images/svg/rectangle-list.svg new file mode 100644 index 00000000..1df9aac0 --- /dev/null +++ b/images/svg/rectangle-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rectangle-xmark.svg b/images/svg/rectangle-xmark.svg new file mode 100644 index 00000000..ae615187 --- /dev/null +++ b/images/svg/rectangle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/recycle.svg b/images/svg/recycle.svg new file mode 100644 index 00000000..33b6bf83 --- /dev/null +++ b/images/svg/recycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/registered.svg b/images/svg/registered.svg new file mode 100644 index 00000000..e84c46ee --- /dev/null +++ b/images/svg/registered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/repeat.svg b/images/svg/repeat.svg new file mode 100644 index 00000000..7216870b --- /dev/null +++ b/images/svg/repeat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/reply-all.svg b/images/svg/reply-all.svg new file mode 100644 index 00000000..fd365835 --- /dev/null +++ b/images/svg/reply-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/reply.svg b/images/svg/reply.svg new file mode 100644 index 00000000..ec848761 --- /dev/null +++ b/images/svg/reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/republican.svg b/images/svg/republican.svg new file mode 100644 index 00000000..9d7aec31 --- /dev/null +++ b/images/svg/republican.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/restroom.svg b/images/svg/restroom.svg new file mode 100644 index 00000000..2bfbbb04 --- /dev/null +++ b/images/svg/restroom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/retweet.svg b/images/svg/retweet.svg new file mode 100644 index 00000000..73821087 --- /dev/null +++ b/images/svg/retweet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ribbon.svg b/images/svg/ribbon.svg new file mode 100644 index 00000000..9b305dfd --- /dev/null +++ b/images/svg/ribbon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/right-from-bracket.svg b/images/svg/right-from-bracket.svg new file mode 100644 index 00000000..43de96d8 --- /dev/null +++ b/images/svg/right-from-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/right-left.svg b/images/svg/right-left.svg new file mode 100644 index 00000000..587782a3 --- /dev/null +++ b/images/svg/right-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/right-long.svg b/images/svg/right-long.svg new file mode 100644 index 00000000..84cf844f --- /dev/null +++ b/images/svg/right-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/right-to-bracket.svg b/images/svg/right-to-bracket.svg new file mode 100644 index 00000000..b4923bb4 --- /dev/null +++ b/images/svg/right-to-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ring.svg b/images/svg/ring.svg new file mode 100644 index 00000000..24ae9510 --- /dev/null +++ b/images/svg/ring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-barrier.svg b/images/svg/road-barrier.svg new file mode 100644 index 00000000..8d01eb8c --- /dev/null +++ b/images/svg/road-barrier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-bridge.svg b/images/svg/road-bridge.svg new file mode 100644 index 00000000..4f9defca --- /dev/null +++ b/images/svg/road-bridge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-circle-check.svg b/images/svg/road-circle-check.svg new file mode 100644 index 00000000..3e41c8be --- /dev/null +++ b/images/svg/road-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-circle-exclamation.svg b/images/svg/road-circle-exclamation.svg new file mode 100644 index 00000000..37b781c5 --- /dev/null +++ b/images/svg/road-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-circle-xmark.svg b/images/svg/road-circle-xmark.svg new file mode 100644 index 00000000..08fde91b --- /dev/null +++ b/images/svg/road-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-lock.svg b/images/svg/road-lock.svg new file mode 100644 index 00000000..8751e262 --- /dev/null +++ b/images/svg/road-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road-spikes.svg b/images/svg/road-spikes.svg new file mode 100644 index 00000000..77572e99 --- /dev/null +++ b/images/svg/road-spikes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/road.svg b/images/svg/road.svg new file mode 100644 index 00000000..ea27dc53 --- /dev/null +++ b/images/svg/road.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/robot.svg b/images/svg/robot.svg new file mode 100644 index 00000000..37f6a1d6 --- /dev/null +++ b/images/svg/robot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rocket.svg b/images/svg/rocket.svg new file mode 100644 index 00000000..9c981b9f --- /dev/null +++ b/images/svg/rocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rotate-left.svg b/images/svg/rotate-left.svg new file mode 100644 index 00000000..d2f61b75 --- /dev/null +++ b/images/svg/rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rotate-right.svg b/images/svg/rotate-right.svg new file mode 100644 index 00000000..aac78360 --- /dev/null +++ b/images/svg/rotate-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rotate.svg b/images/svg/rotate.svg new file mode 100644 index 00000000..4c0d5e5f --- /dev/null +++ b/images/svg/rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/route.svg b/images/svg/route.svg new file mode 100644 index 00000000..c2d9385c --- /dev/null +++ b/images/svg/route.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rss.svg b/images/svg/rss.svg new file mode 100644 index 00000000..2617ed71 --- /dev/null +++ b/images/svg/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ruble-sign.svg b/images/svg/ruble-sign.svg new file mode 100644 index 00000000..2ac39dca --- /dev/null +++ b/images/svg/ruble-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rug.svg b/images/svg/rug.svg new file mode 100644 index 00000000..98fb61f3 --- /dev/null +++ b/images/svg/rug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ruler-combined.svg b/images/svg/ruler-combined.svg new file mode 100644 index 00000000..cfa4524e --- /dev/null +++ b/images/svg/ruler-combined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ruler-horizontal.svg b/images/svg/ruler-horizontal.svg new file mode 100644 index 00000000..5f723cba --- /dev/null +++ b/images/svg/ruler-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ruler-vertical.svg b/images/svg/ruler-vertical.svg new file mode 100644 index 00000000..66abee05 --- /dev/null +++ b/images/svg/ruler-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ruler.svg b/images/svg/ruler.svg new file mode 100644 index 00000000..0b7dc9c1 --- /dev/null +++ b/images/svg/ruler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rupee-sign.svg b/images/svg/rupee-sign.svg new file mode 100644 index 00000000..a63fcb9a --- /dev/null +++ b/images/svg/rupee-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/rupiah-sign.svg b/images/svg/rupiah-sign.svg new file mode 100644 index 00000000..976196ed --- /dev/null +++ b/images/svg/rupiah-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/s.svg b/images/svg/s.svg new file mode 100644 index 00000000..00d98cb4 --- /dev/null +++ b/images/svg/s.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sack-dollar.svg b/images/svg/sack-dollar.svg new file mode 100644 index 00000000..d98d7eeb --- /dev/null +++ b/images/svg/sack-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sack-xmark.svg b/images/svg/sack-xmark.svg new file mode 100644 index 00000000..51b951c5 --- /dev/null +++ b/images/svg/sack-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sailboat.svg b/images/svg/sailboat.svg new file mode 100644 index 00000000..ac90cbe0 --- /dev/null +++ b/images/svg/sailboat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/satellite-dish.svg b/images/svg/satellite-dish.svg new file mode 100644 index 00000000..a2458680 --- /dev/null +++ b/images/svg/satellite-dish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/satellite.svg b/images/svg/satellite.svg new file mode 100644 index 00000000..f0b6a53f --- /dev/null +++ b/images/svg/satellite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/scale-balanced.svg b/images/svg/scale-balanced.svg new file mode 100644 index 00000000..4862cbbe --- /dev/null +++ b/images/svg/scale-balanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/scale-unbalanced-flip.svg b/images/svg/scale-unbalanced-flip.svg new file mode 100644 index 00000000..eb17f14c --- /dev/null +++ b/images/svg/scale-unbalanced-flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/scale-unbalanced.svg b/images/svg/scale-unbalanced.svg new file mode 100644 index 00000000..217d2de4 --- /dev/null +++ b/images/svg/scale-unbalanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/school-circle-check.svg b/images/svg/school-circle-check.svg new file mode 100644 index 00000000..03253e1a --- /dev/null +++ b/images/svg/school-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/school-circle-exclamation.svg b/images/svg/school-circle-exclamation.svg new file mode 100644 index 00000000..5e370645 --- /dev/null +++ b/images/svg/school-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/school-circle-xmark.svg b/images/svg/school-circle-xmark.svg new file mode 100644 index 00000000..b9f2d238 --- /dev/null +++ b/images/svg/school-circle-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/school-flag.svg b/images/svg/school-flag.svg new file mode 100644 index 00000000..975c037c --- /dev/null +++ b/images/svg/school-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/school-lock.svg b/images/svg/school-lock.svg new file mode 100644 index 00000000..e525a85c --- /dev/null +++ b/images/svg/school-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/school.svg b/images/svg/school.svg new file mode 100644 index 00000000..25f576ae --- /dev/null +++ b/images/svg/school.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/scissors.svg b/images/svg/scissors.svg new file mode 100644 index 00000000..612d9b65 --- /dev/null +++ b/images/svg/scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/screwdriver-wrench.svg b/images/svg/screwdriver-wrench.svg new file mode 100644 index 00000000..3a4ab5e6 --- /dev/null +++ b/images/svg/screwdriver-wrench.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/screwdriver.svg b/images/svg/screwdriver.svg new file mode 100644 index 00000000..8287697a --- /dev/null +++ b/images/svg/screwdriver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/scroll-torah.svg b/images/svg/scroll-torah.svg new file mode 100644 index 00000000..d34d5e60 --- /dev/null +++ b/images/svg/scroll-torah.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/scroll.svg b/images/svg/scroll.svg new file mode 100644 index 00000000..d9cc3df6 --- /dev/null +++ b/images/svg/scroll.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sd-card.svg b/images/svg/sd-card.svg new file mode 100644 index 00000000..778ad783 --- /dev/null +++ b/images/svg/sd-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/section.svg b/images/svg/section.svg new file mode 100644 index 00000000..91f76a81 --- /dev/null +++ b/images/svg/section.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/seedling.svg b/images/svg/seedling.svg new file mode 100644 index 00000000..e4c21f14 --- /dev/null +++ b/images/svg/seedling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/server.svg b/images/svg/server.svg new file mode 100644 index 00000000..65412c83 --- /dev/null +++ b/images/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shapes.svg b/images/svg/shapes.svg new file mode 100644 index 00000000..859a7e3b --- /dev/null +++ b/images/svg/shapes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/share-from-square.svg b/images/svg/share-from-square.svg new file mode 100644 index 00000000..d6a06f9c --- /dev/null +++ b/images/svg/share-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/share-nodes.svg b/images/svg/share-nodes.svg new file mode 100644 index 00000000..e98ce353 --- /dev/null +++ b/images/svg/share-nodes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/share.svg b/images/svg/share.svg new file mode 100644 index 00000000..fb608d5d --- /dev/null +++ b/images/svg/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sheet-plastic.svg b/images/svg/sheet-plastic.svg new file mode 100644 index 00000000..95c20018 --- /dev/null +++ b/images/svg/sheet-plastic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shekel-sign.svg b/images/svg/shekel-sign.svg new file mode 100644 index 00000000..63b7bcbe --- /dev/null +++ b/images/svg/shekel-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shield-cat.svg b/images/svg/shield-cat.svg new file mode 100644 index 00000000..0138874b --- /dev/null +++ b/images/svg/shield-cat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shield-dog.svg b/images/svg/shield-dog.svg new file mode 100644 index 00000000..ac2848e7 --- /dev/null +++ b/images/svg/shield-dog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shield-halved.svg b/images/svg/shield-halved.svg new file mode 100644 index 00000000..6aa5edb9 --- /dev/null +++ b/images/svg/shield-halved.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shield-heart.svg b/images/svg/shield-heart.svg new file mode 100644 index 00000000..2296b44e --- /dev/null +++ b/images/svg/shield-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shield-virus.svg b/images/svg/shield-virus.svg new file mode 100644 index 00000000..3d84d342 --- /dev/null +++ b/images/svg/shield-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shield.svg b/images/svg/shield.svg new file mode 100644 index 00000000..98f34d48 --- /dev/null +++ b/images/svg/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ship.svg b/images/svg/ship.svg new file mode 100644 index 00000000..836efe95 --- /dev/null +++ b/images/svg/ship.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shirt.svg b/images/svg/shirt.svg new file mode 100644 index 00000000..602e336c --- /dev/null +++ b/images/svg/shirt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shoe-prints.svg b/images/svg/shoe-prints.svg new file mode 100644 index 00000000..41b6f142 --- /dev/null +++ b/images/svg/shoe-prints.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shop-lock.svg b/images/svg/shop-lock.svg new file mode 100644 index 00000000..69ef09da --- /dev/null +++ b/images/svg/shop-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shop-slash.svg b/images/svg/shop-slash.svg new file mode 100644 index 00000000..70b4efec --- /dev/null +++ b/images/svg/shop-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shop.svg b/images/svg/shop.svg new file mode 100644 index 00000000..c5abc6c4 --- /dev/null +++ b/images/svg/shop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shower.svg b/images/svg/shower.svg new file mode 100644 index 00000000..5aea8d15 --- /dev/null +++ b/images/svg/shower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shrimp.svg b/images/svg/shrimp.svg new file mode 100644 index 00000000..898145d4 --- /dev/null +++ b/images/svg/shrimp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shuffle.svg b/images/svg/shuffle.svg new file mode 100644 index 00000000..24fb3d13 --- /dev/null +++ b/images/svg/shuffle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/shuttle-space.svg b/images/svg/shuttle-space.svg new file mode 100644 index 00000000..5ca99415 --- /dev/null +++ b/images/svg/shuttle-space.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sign-hanging.svg b/images/svg/sign-hanging.svg new file mode 100644 index 00000000..f2098929 --- /dev/null +++ b/images/svg/sign-hanging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/signal.svg b/images/svg/signal.svg new file mode 100644 index 00000000..38816350 --- /dev/null +++ b/images/svg/signal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/signature.svg b/images/svg/signature.svg new file mode 100644 index 00000000..83257a16 --- /dev/null +++ b/images/svg/signature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/signs-post.svg b/images/svg/signs-post.svg new file mode 100644 index 00000000..ef831d5f --- /dev/null +++ b/images/svg/signs-post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sim-card.svg b/images/svg/sim-card.svg new file mode 100644 index 00000000..3e02c63d --- /dev/null +++ b/images/svg/sim-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sink.svg b/images/svg/sink.svg new file mode 100644 index 00000000..87a47fb1 --- /dev/null +++ b/images/svg/sink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sitemap.svg b/images/svg/sitemap.svg new file mode 100644 index 00000000..a8dad10f --- /dev/null +++ b/images/svg/sitemap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/skull-crossbones.svg b/images/svg/skull-crossbones.svg new file mode 100644 index 00000000..36f09467 --- /dev/null +++ b/images/svg/skull-crossbones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/skull.svg b/images/svg/skull.svg new file mode 100644 index 00000000..3451f377 --- /dev/null +++ b/images/svg/skull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/slash.svg b/images/svg/slash.svg new file mode 100644 index 00000000..a0d870d0 --- /dev/null +++ b/images/svg/slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sleigh.svg b/images/svg/sleigh.svg new file mode 100644 index 00000000..57103d58 --- /dev/null +++ b/images/svg/sleigh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sliders.svg b/images/svg/sliders.svg new file mode 100644 index 00000000..8278dc64 --- /dev/null +++ b/images/svg/sliders.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/smog.svg b/images/svg/smog.svg new file mode 100644 index 00000000..d5f6dcdf --- /dev/null +++ b/images/svg/smog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/smoking.svg b/images/svg/smoking.svg new file mode 100644 index 00000000..44fe7262 --- /dev/null +++ b/images/svg/smoking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/snowflake.svg b/images/svg/snowflake.svg new file mode 100644 index 00000000..367ebf34 --- /dev/null +++ b/images/svg/snowflake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/snowman.svg b/images/svg/snowman.svg new file mode 100644 index 00000000..9b0818a7 --- /dev/null +++ b/images/svg/snowman.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/snowplow.svg b/images/svg/snowplow.svg new file mode 100644 index 00000000..d05e58cf --- /dev/null +++ b/images/svg/snowplow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/soap.svg b/images/svg/soap.svg new file mode 100644 index 00000000..71cb2fac --- /dev/null +++ b/images/svg/soap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/socks.svg b/images/svg/socks.svg new file mode 100644 index 00000000..66878507 --- /dev/null +++ b/images/svg/socks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/solar-panel.svg b/images/svg/solar-panel.svg new file mode 100644 index 00000000..16859f5d --- /dev/null +++ b/images/svg/solar-panel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sort-down.svg b/images/svg/sort-down.svg new file mode 100644 index 00000000..0b637b9e --- /dev/null +++ b/images/svg/sort-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sort-up.svg b/images/svg/sort-up.svg new file mode 100644 index 00000000..434e5873 --- /dev/null +++ b/images/svg/sort-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sort.svg b/images/svg/sort.svg new file mode 100644 index 00000000..e772a0ed --- /dev/null +++ b/images/svg/sort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spa.svg b/images/svg/spa.svg new file mode 100644 index 00000000..f5d1213e --- /dev/null +++ b/images/svg/spa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spaghetti-monster-flying.svg b/images/svg/spaghetti-monster-flying.svg new file mode 100644 index 00000000..34ed4915 --- /dev/null +++ b/images/svg/spaghetti-monster-flying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spell-check.svg b/images/svg/spell-check.svg new file mode 100644 index 00000000..1d3bb60c --- /dev/null +++ b/images/svg/spell-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spider.svg b/images/svg/spider.svg new file mode 100644 index 00000000..2ae767a8 --- /dev/null +++ b/images/svg/spider.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spinner.svg b/images/svg/spinner.svg new file mode 100644 index 00000000..1f56c8a4 --- /dev/null +++ b/images/svg/spinner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/splotch.svg b/images/svg/splotch.svg new file mode 100644 index 00000000..ccd44ed1 --- /dev/null +++ b/images/svg/splotch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spoon.svg b/images/svg/spoon.svg new file mode 100644 index 00000000..029d6322 --- /dev/null +++ b/images/svg/spoon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spray-can-sparkles.svg b/images/svg/spray-can-sparkles.svg new file mode 100644 index 00000000..541f592b --- /dev/null +++ b/images/svg/spray-can-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/spray-can.svg b/images/svg/spray-can.svg new file mode 100644 index 00000000..92d22dbe --- /dev/null +++ b/images/svg/spray-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-arrow-up-right.svg b/images/svg/square-arrow-up-right.svg new file mode 100644 index 00000000..8515eb2c --- /dev/null +++ b/images/svg/square-arrow-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-caret-down.svg b/images/svg/square-caret-down.svg new file mode 100644 index 00000000..50d0ac62 --- /dev/null +++ b/images/svg/square-caret-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-caret-left.svg b/images/svg/square-caret-left.svg new file mode 100644 index 00000000..4e02b96b --- /dev/null +++ b/images/svg/square-caret-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-caret-right.svg b/images/svg/square-caret-right.svg new file mode 100644 index 00000000..f34cccf0 --- /dev/null +++ b/images/svg/square-caret-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-caret-up.svg b/images/svg/square-caret-up.svg new file mode 100644 index 00000000..d01085c8 --- /dev/null +++ b/images/svg/square-caret-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-check.svg b/images/svg/square-check.svg new file mode 100644 index 00000000..f4ccd268 --- /dev/null +++ b/images/svg/square-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-envelope.svg b/images/svg/square-envelope.svg new file mode 100644 index 00000000..7520e06a --- /dev/null +++ b/images/svg/square-envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-full.svg b/images/svg/square-full.svg new file mode 100644 index 00000000..23ff9998 --- /dev/null +++ b/images/svg/square-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-h.svg b/images/svg/square-h.svg new file mode 100644 index 00000000..a272fa0e --- /dev/null +++ b/images/svg/square-h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-minus.svg b/images/svg/square-minus.svg new file mode 100644 index 00000000..6c2af9d6 --- /dev/null +++ b/images/svg/square-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-nfi.svg b/images/svg/square-nfi.svg new file mode 100644 index 00000000..3cafc2a2 --- /dev/null +++ b/images/svg/square-nfi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-parking.svg b/images/svg/square-parking.svg new file mode 100644 index 00000000..8ecccc72 --- /dev/null +++ b/images/svg/square-parking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-pen.svg b/images/svg/square-pen.svg new file mode 100644 index 00000000..c9422ea2 --- /dev/null +++ b/images/svg/square-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-person-confined.svg b/images/svg/square-person-confined.svg new file mode 100644 index 00000000..3e6c594d --- /dev/null +++ b/images/svg/square-person-confined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-phone-flip.svg b/images/svg/square-phone-flip.svg new file mode 100644 index 00000000..1c82de03 --- /dev/null +++ b/images/svg/square-phone-flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-phone.svg b/images/svg/square-phone.svg new file mode 100644 index 00000000..e1e79620 --- /dev/null +++ b/images/svg/square-phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-plus.svg b/images/svg/square-plus.svg new file mode 100644 index 00000000..9442f9e6 --- /dev/null +++ b/images/svg/square-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-poll-horizontal.svg b/images/svg/square-poll-horizontal.svg new file mode 100644 index 00000000..1ea204b2 --- /dev/null +++ b/images/svg/square-poll-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-poll-vertical.svg b/images/svg/square-poll-vertical.svg new file mode 100644 index 00000000..ca260b23 --- /dev/null +++ b/images/svg/square-poll-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-root-variable.svg b/images/svg/square-root-variable.svg new file mode 100644 index 00000000..2e072206 --- /dev/null +++ b/images/svg/square-root-variable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-rss.svg b/images/svg/square-rss.svg new file mode 100644 index 00000000..f05b5431 --- /dev/null +++ b/images/svg/square-rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-share-nodes.svg b/images/svg/square-share-nodes.svg new file mode 100644 index 00000000..4fc0532c --- /dev/null +++ b/images/svg/square-share-nodes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-up-right.svg b/images/svg/square-up-right.svg new file mode 100644 index 00000000..98926fa8 --- /dev/null +++ b/images/svg/square-up-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-virus.svg b/images/svg/square-virus.svg new file mode 100644 index 00000000..7c7078b8 --- /dev/null +++ b/images/svg/square-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square-xmark.svg b/images/svg/square-xmark.svg new file mode 100644 index 00000000..f23ccf8b --- /dev/null +++ b/images/svg/square-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/square.svg b/images/svg/square.svg new file mode 100644 index 00000000..b62ce952 --- /dev/null +++ b/images/svg/square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/staff-snake.svg b/images/svg/staff-snake.svg new file mode 100644 index 00000000..242622bc --- /dev/null +++ b/images/svg/staff-snake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stairs.svg b/images/svg/stairs.svg new file mode 100644 index 00000000..e84d36dd --- /dev/null +++ b/images/svg/stairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stamp.svg b/images/svg/stamp.svg new file mode 100644 index 00000000..a1a103bd --- /dev/null +++ b/images/svg/stamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stapler.svg b/images/svg/stapler.svg new file mode 100644 index 00000000..7575c8ed --- /dev/null +++ b/images/svg/stapler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/star-and-crescent.svg b/images/svg/star-and-crescent.svg new file mode 100644 index 00000000..df339e21 --- /dev/null +++ b/images/svg/star-and-crescent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/star-half-stroke.svg b/images/svg/star-half-stroke.svg new file mode 100644 index 00000000..005bf320 --- /dev/null +++ b/images/svg/star-half-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/star-half.svg b/images/svg/star-half.svg new file mode 100644 index 00000000..28352eff --- /dev/null +++ b/images/svg/star-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/star-of-david.svg b/images/svg/star-of-david.svg new file mode 100644 index 00000000..68f0cb7c --- /dev/null +++ b/images/svg/star-of-david.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/star-of-life.svg b/images/svg/star-of-life.svg new file mode 100644 index 00000000..18a94096 --- /dev/null +++ b/images/svg/star-of-life.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/star.svg b/images/svg/star.svg new file mode 100644 index 00000000..bafadf91 --- /dev/null +++ b/images/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sterling-sign.svg b/images/svg/sterling-sign.svg new file mode 100644 index 00000000..cb14730a --- /dev/null +++ b/images/svg/sterling-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stethoscope.svg b/images/svg/stethoscope.svg new file mode 100644 index 00000000..e6858dfa --- /dev/null +++ b/images/svg/stethoscope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stop.svg b/images/svg/stop.svg new file mode 100644 index 00000000..65f1c308 --- /dev/null +++ b/images/svg/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stopwatch-20.svg b/images/svg/stopwatch-20.svg new file mode 100644 index 00000000..085fbb01 --- /dev/null +++ b/images/svg/stopwatch-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stopwatch.svg b/images/svg/stopwatch.svg new file mode 100644 index 00000000..a8e6d236 --- /dev/null +++ b/images/svg/stopwatch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/store-slash.svg b/images/svg/store-slash.svg new file mode 100644 index 00000000..666f6e95 --- /dev/null +++ b/images/svg/store-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/store.svg b/images/svg/store.svg new file mode 100644 index 00000000..afabde3d --- /dev/null +++ b/images/svg/store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/street-view.svg b/images/svg/street-view.svg new file mode 100644 index 00000000..588f1a77 --- /dev/null +++ b/images/svg/street-view.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/strikethrough.svg b/images/svg/strikethrough.svg new file mode 100644 index 00000000..a904eb95 --- /dev/null +++ b/images/svg/strikethrough.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/stroopwafel.svg b/images/svg/stroopwafel.svg new file mode 100644 index 00000000..ea451612 --- /dev/null +++ b/images/svg/stroopwafel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/subscript.svg b/images/svg/subscript.svg new file mode 100644 index 00000000..794eb222 --- /dev/null +++ b/images/svg/subscript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/suitcase-medical.svg b/images/svg/suitcase-medical.svg new file mode 100644 index 00000000..008780de --- /dev/null +++ b/images/svg/suitcase-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/suitcase-rolling.svg b/images/svg/suitcase-rolling.svg new file mode 100644 index 00000000..c5751e30 --- /dev/null +++ b/images/svg/suitcase-rolling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/suitcase.svg b/images/svg/suitcase.svg new file mode 100644 index 00000000..73bed4d4 --- /dev/null +++ b/images/svg/suitcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sun-plant-wilt.svg b/images/svg/sun-plant-wilt.svg new file mode 100644 index 00000000..1cbfe14e --- /dev/null +++ b/images/svg/sun-plant-wilt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/sun.svg b/images/svg/sun.svg new file mode 100644 index 00000000..460c7ef7 --- /dev/null +++ b/images/svg/sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/superscript.svg b/images/svg/superscript.svg new file mode 100644 index 00000000..db2faa24 --- /dev/null +++ b/images/svg/superscript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/swatchbook.svg b/images/svg/swatchbook.svg new file mode 100644 index 00000000..6146c98d --- /dev/null +++ b/images/svg/swatchbook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/synagogue.svg b/images/svg/synagogue.svg new file mode 100644 index 00000000..646fc205 --- /dev/null +++ b/images/svg/synagogue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/syringe.svg b/images/svg/syringe.svg new file mode 100644 index 00000000..4a6c4dac --- /dev/null +++ b/images/svg/syringe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/t.svg b/images/svg/t.svg new file mode 100644 index 00000000..c1f3f0fd --- /dev/null +++ b/images/svg/t.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/table-cells-large.svg b/images/svg/table-cells-large.svg new file mode 100644 index 00000000..82856664 --- /dev/null +++ b/images/svg/table-cells-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/table-cells.svg b/images/svg/table-cells.svg new file mode 100644 index 00000000..490dfea8 --- /dev/null +++ b/images/svg/table-cells.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/table-columns.svg b/images/svg/table-columns.svg new file mode 100644 index 00000000..21d0690e --- /dev/null +++ b/images/svg/table-columns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/table-list.svg b/images/svg/table-list.svg new file mode 100644 index 00000000..a86841d4 --- /dev/null +++ b/images/svg/table-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/table-tennis-paddle-ball.svg b/images/svg/table-tennis-paddle-ball.svg new file mode 100644 index 00000000..a62fef2a --- /dev/null +++ b/images/svg/table-tennis-paddle-ball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/table.svg b/images/svg/table.svg new file mode 100644 index 00000000..51fee564 --- /dev/null +++ b/images/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tablet-button.svg b/images/svg/tablet-button.svg new file mode 100644 index 00000000..39bd977d --- /dev/null +++ b/images/svg/tablet-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tablet-screen-button.svg b/images/svg/tablet-screen-button.svg new file mode 100644 index 00000000..fce563c4 --- /dev/null +++ b/images/svg/tablet-screen-button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tablet.svg b/images/svg/tablet.svg new file mode 100644 index 00000000..f416a9a8 --- /dev/null +++ b/images/svg/tablet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tablets.svg b/images/svg/tablets.svg new file mode 100644 index 00000000..4d841c6e --- /dev/null +++ b/images/svg/tablets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tachograph-digital.svg b/images/svg/tachograph-digital.svg new file mode 100644 index 00000000..819119d5 --- /dev/null +++ b/images/svg/tachograph-digital.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tag.svg b/images/svg/tag.svg new file mode 100644 index 00000000..60a015b3 --- /dev/null +++ b/images/svg/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tags.svg b/images/svg/tags.svg new file mode 100644 index 00000000..011cbd9e --- /dev/null +++ b/images/svg/tags.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tape.svg b/images/svg/tape.svg new file mode 100644 index 00000000..db3855ef --- /dev/null +++ b/images/svg/tape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tarp-droplet.svg b/images/svg/tarp-droplet.svg new file mode 100644 index 00000000..b456249f --- /dev/null +++ b/images/svg/tarp-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tarp.svg b/images/svg/tarp.svg new file mode 100644 index 00000000..dafe587d --- /dev/null +++ b/images/svg/tarp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/taxi.svg b/images/svg/taxi.svg new file mode 100644 index 00000000..ff29f88a --- /dev/null +++ b/images/svg/taxi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/teeth-open.svg b/images/svg/teeth-open.svg new file mode 100644 index 00000000..eff515dd --- /dev/null +++ b/images/svg/teeth-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/teeth.svg b/images/svg/teeth.svg new file mode 100644 index 00000000..43891211 --- /dev/null +++ b/images/svg/teeth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-arrow-down.svg b/images/svg/temperature-arrow-down.svg new file mode 100644 index 00000000..79e71463 --- /dev/null +++ b/images/svg/temperature-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-arrow-up.svg b/images/svg/temperature-arrow-up.svg new file mode 100644 index 00000000..39451e0b --- /dev/null +++ b/images/svg/temperature-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-empty.svg b/images/svg/temperature-empty.svg new file mode 100644 index 00000000..cd7d8323 --- /dev/null +++ b/images/svg/temperature-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-full.svg b/images/svg/temperature-full.svg new file mode 100644 index 00000000..a3c8fdfe --- /dev/null +++ b/images/svg/temperature-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-half.svg b/images/svg/temperature-half.svg new file mode 100644 index 00000000..83f8c65e --- /dev/null +++ b/images/svg/temperature-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-high.svg b/images/svg/temperature-high.svg new file mode 100644 index 00000000..f0e3efff --- /dev/null +++ b/images/svg/temperature-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-low.svg b/images/svg/temperature-low.svg new file mode 100644 index 00000000..4fa21e3a --- /dev/null +++ b/images/svg/temperature-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-quarter.svg b/images/svg/temperature-quarter.svg new file mode 100644 index 00000000..9e1a0450 --- /dev/null +++ b/images/svg/temperature-quarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/temperature-three-quarters.svg b/images/svg/temperature-three-quarters.svg new file mode 100644 index 00000000..0e6d6afa --- /dev/null +++ b/images/svg/temperature-three-quarters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tenge-sign.svg b/images/svg/tenge-sign.svg new file mode 100644 index 00000000..5b6eed1b --- /dev/null +++ b/images/svg/tenge-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tent-arrow-down-to-line.svg b/images/svg/tent-arrow-down-to-line.svg new file mode 100644 index 00000000..4e7f5d89 --- /dev/null +++ b/images/svg/tent-arrow-down-to-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tent-arrow-left-right.svg b/images/svg/tent-arrow-left-right.svg new file mode 100644 index 00000000..349f9f00 --- /dev/null +++ b/images/svg/tent-arrow-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tent-arrow-turn-left.svg b/images/svg/tent-arrow-turn-left.svg new file mode 100644 index 00000000..6a08d67f --- /dev/null +++ b/images/svg/tent-arrow-turn-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tent-arrows-down.svg b/images/svg/tent-arrows-down.svg new file mode 100644 index 00000000..d91047f1 --- /dev/null +++ b/images/svg/tent-arrows-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tent.svg b/images/svg/tent.svg new file mode 100644 index 00000000..bc937042 --- /dev/null +++ b/images/svg/tent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tents.svg b/images/svg/tents.svg new file mode 100644 index 00000000..3d6c546b --- /dev/null +++ b/images/svg/tents.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/terminal.svg b/images/svg/terminal.svg new file mode 100644 index 00000000..24f9ef15 --- /dev/null +++ b/images/svg/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/text-height.svg b/images/svg/text-height.svg new file mode 100644 index 00000000..0eb4e808 --- /dev/null +++ b/images/svg/text-height.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/text-slash.svg b/images/svg/text-slash.svg new file mode 100644 index 00000000..daa75bfd --- /dev/null +++ b/images/svg/text-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/text-width.svg b/images/svg/text-width.svg new file mode 100644 index 00000000..616b4f44 --- /dev/null +++ b/images/svg/text-width.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/thermometer.svg b/images/svg/thermometer.svg new file mode 100644 index 00000000..de02d9ac --- /dev/null +++ b/images/svg/thermometer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/thumbs-down.svg b/images/svg/thumbs-down.svg new file mode 100644 index 00000000..8b501bc7 --- /dev/null +++ b/images/svg/thumbs-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/thumbs-up.svg b/images/svg/thumbs-up.svg new file mode 100644 index 00000000..50123508 --- /dev/null +++ b/images/svg/thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/thumbtack.svg b/images/svg/thumbtack.svg new file mode 100644 index 00000000..b21c9f8a --- /dev/null +++ b/images/svg/thumbtack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ticket-simple.svg b/images/svg/ticket-simple.svg new file mode 100644 index 00000000..6ec3741f --- /dev/null +++ b/images/svg/ticket-simple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/ticket.svg b/images/svg/ticket.svg new file mode 100644 index 00000000..e7e60fcf --- /dev/null +++ b/images/svg/ticket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/timeline.svg b/images/svg/timeline.svg new file mode 100644 index 00000000..84899a7e --- /dev/null +++ b/images/svg/timeline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toggle-off.svg b/images/svg/toggle-off.svg new file mode 100644 index 00000000..cea3da1c --- /dev/null +++ b/images/svg/toggle-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toggle-on.svg b/images/svg/toggle-on.svg new file mode 100644 index 00000000..52eaa85a --- /dev/null +++ b/images/svg/toggle-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toilet-paper-slash.svg b/images/svg/toilet-paper-slash.svg new file mode 100644 index 00000000..7cf6b8df --- /dev/null +++ b/images/svg/toilet-paper-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toilet-paper.svg b/images/svg/toilet-paper.svg new file mode 100644 index 00000000..527064a4 --- /dev/null +++ b/images/svg/toilet-paper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toilet-portable.svg b/images/svg/toilet-portable.svg new file mode 100644 index 00000000..3c303877 --- /dev/null +++ b/images/svg/toilet-portable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toilet.svg b/images/svg/toilet.svg new file mode 100644 index 00000000..30d34fc5 --- /dev/null +++ b/images/svg/toilet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toilets-portable.svg b/images/svg/toilets-portable.svg new file mode 100644 index 00000000..89a75b2d --- /dev/null +++ b/images/svg/toilets-portable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/toolbox.svg b/images/svg/toolbox.svg new file mode 100644 index 00000000..228b4ecb --- /dev/null +++ b/images/svg/toolbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tooth.svg b/images/svg/tooth.svg new file mode 100644 index 00000000..a4b430c1 --- /dev/null +++ b/images/svg/tooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/torii-gate.svg b/images/svg/torii-gate.svg new file mode 100644 index 00000000..86de23b4 --- /dev/null +++ b/images/svg/torii-gate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tornado.svg b/images/svg/tornado.svg new file mode 100644 index 00000000..4535edbf --- /dev/null +++ b/images/svg/tornado.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tower-broadcast.svg b/images/svg/tower-broadcast.svg new file mode 100644 index 00000000..cd794cae --- /dev/null +++ b/images/svg/tower-broadcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tower-cell.svg b/images/svg/tower-cell.svg new file mode 100644 index 00000000..6399e9b9 --- /dev/null +++ b/images/svg/tower-cell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tower-observation.svg b/images/svg/tower-observation.svg new file mode 100644 index 00000000..a2beda23 --- /dev/null +++ b/images/svg/tower-observation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tractor.svg b/images/svg/tractor.svg new file mode 100644 index 00000000..b6021163 --- /dev/null +++ b/images/svg/tractor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trademark.svg b/images/svg/trademark.svg new file mode 100644 index 00000000..ab53efe1 --- /dev/null +++ b/images/svg/trademark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/traffic-light.svg b/images/svg/traffic-light.svg new file mode 100644 index 00000000..8a39eaf7 --- /dev/null +++ b/images/svg/traffic-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trailer.svg b/images/svg/trailer.svg new file mode 100644 index 00000000..f038042a --- /dev/null +++ b/images/svg/trailer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/train-subway.svg b/images/svg/train-subway.svg new file mode 100644 index 00000000..04302078 --- /dev/null +++ b/images/svg/train-subway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/train-tram.svg b/images/svg/train-tram.svg new file mode 100644 index 00000000..43b76982 --- /dev/null +++ b/images/svg/train-tram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/train.svg b/images/svg/train.svg new file mode 100644 index 00000000..7f759a00 --- /dev/null +++ b/images/svg/train.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/transgender.svg b/images/svg/transgender.svg new file mode 100644 index 00000000..2506e94f --- /dev/null +++ b/images/svg/transgender.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trash-arrow-up.svg b/images/svg/trash-arrow-up.svg new file mode 100644 index 00000000..73699026 --- /dev/null +++ b/images/svg/trash-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trash-can-arrow-up.svg b/images/svg/trash-can-arrow-up.svg new file mode 100644 index 00000000..a636fb78 --- /dev/null +++ b/images/svg/trash-can-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trash-can.svg b/images/svg/trash-can.svg new file mode 100644 index 00000000..aca58857 --- /dev/null +++ b/images/svg/trash-can.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trash.svg b/images/svg/trash.svg new file mode 100644 index 00000000..a46a4ac9 --- /dev/null +++ b/images/svg/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tree-city.svg b/images/svg/tree-city.svg new file mode 100644 index 00000000..ab2f5ae5 --- /dev/null +++ b/images/svg/tree-city.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tree.svg b/images/svg/tree.svg new file mode 100644 index 00000000..e9b393d8 --- /dev/null +++ b/images/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/triangle-exclamation.svg b/images/svg/triangle-exclamation.svg new file mode 100644 index 00000000..cdebe7c1 --- /dev/null +++ b/images/svg/triangle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trophy.svg b/images/svg/trophy.svg new file mode 100644 index 00000000..5148017b --- /dev/null +++ b/images/svg/trophy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trowel-bricks.svg b/images/svg/trowel-bricks.svg new file mode 100644 index 00000000..bc0fc8c0 --- /dev/null +++ b/images/svg/trowel-bricks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/trowel.svg b/images/svg/trowel.svg new file mode 100644 index 00000000..20e49747 --- /dev/null +++ b/images/svg/trowel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-arrow-right.svg b/images/svg/truck-arrow-right.svg new file mode 100644 index 00000000..f52a7b98 --- /dev/null +++ b/images/svg/truck-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-droplet.svg b/images/svg/truck-droplet.svg new file mode 100644 index 00000000..77d9dce5 --- /dev/null +++ b/images/svg/truck-droplet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-fast.svg b/images/svg/truck-fast.svg new file mode 100644 index 00000000..aa3ce706 --- /dev/null +++ b/images/svg/truck-fast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-field-un.svg b/images/svg/truck-field-un.svg new file mode 100644 index 00000000..e081dc0c --- /dev/null +++ b/images/svg/truck-field-un.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-field.svg b/images/svg/truck-field.svg new file mode 100644 index 00000000..a0a372fe --- /dev/null +++ b/images/svg/truck-field.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-front.svg b/images/svg/truck-front.svg new file mode 100644 index 00000000..b8a60f25 --- /dev/null +++ b/images/svg/truck-front.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-medical.svg b/images/svg/truck-medical.svg new file mode 100644 index 00000000..d552ae3e --- /dev/null +++ b/images/svg/truck-medical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-monster.svg b/images/svg/truck-monster.svg new file mode 100644 index 00000000..c8d90a84 --- /dev/null +++ b/images/svg/truck-monster.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-moving.svg b/images/svg/truck-moving.svg new file mode 100644 index 00000000..17e5a29e --- /dev/null +++ b/images/svg/truck-moving.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-pickup.svg b/images/svg/truck-pickup.svg new file mode 100644 index 00000000..1f51c4cf --- /dev/null +++ b/images/svg/truck-pickup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-plane.svg b/images/svg/truck-plane.svg new file mode 100644 index 00000000..d9a7d57b --- /dev/null +++ b/images/svg/truck-plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck-ramp-box.svg b/images/svg/truck-ramp-box.svg new file mode 100644 index 00000000..6d3905d2 --- /dev/null +++ b/images/svg/truck-ramp-box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/truck.svg b/images/svg/truck.svg new file mode 100644 index 00000000..d952ec40 --- /dev/null +++ b/images/svg/truck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tty.svg b/images/svg/tty.svg new file mode 100644 index 00000000..62db3701 --- /dev/null +++ b/images/svg/tty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/turkish-lira-sign.svg b/images/svg/turkish-lira-sign.svg new file mode 100644 index 00000000..87826c90 --- /dev/null +++ b/images/svg/turkish-lira-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/turn-down.svg b/images/svg/turn-down.svg new file mode 100644 index 00000000..d3df917b --- /dev/null +++ b/images/svg/turn-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/turn-up.svg b/images/svg/turn-up.svg new file mode 100644 index 00000000..ea63bc8c --- /dev/null +++ b/images/svg/turn-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/tv.svg b/images/svg/tv.svg new file mode 100644 index 00000000..aabb11cb --- /dev/null +++ b/images/svg/tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/u.svg b/images/svg/u.svg new file mode 100644 index 00000000..78181946 --- /dev/null +++ b/images/svg/u.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/umbrella-beach.svg b/images/svg/umbrella-beach.svg new file mode 100644 index 00000000..f3ac8b25 --- /dev/null +++ b/images/svg/umbrella-beach.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/umbrella.svg b/images/svg/umbrella.svg new file mode 100644 index 00000000..33387b2b --- /dev/null +++ b/images/svg/umbrella.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/underline.svg b/images/svg/underline.svg new file mode 100644 index 00000000..24830dcb --- /dev/null +++ b/images/svg/underline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/universal-access.svg b/images/svg/universal-access.svg new file mode 100644 index 00000000..69f53aef --- /dev/null +++ b/images/svg/universal-access.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/unlock-keyhole.svg b/images/svg/unlock-keyhole.svg new file mode 100644 index 00000000..6c53e5a2 --- /dev/null +++ b/images/svg/unlock-keyhole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/unlock.svg b/images/svg/unlock.svg new file mode 100644 index 00000000..98c5cf56 --- /dev/null +++ b/images/svg/unlock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/up-down-left-right.svg b/images/svg/up-down-left-right.svg new file mode 100644 index 00000000..f549bd6c --- /dev/null +++ b/images/svg/up-down-left-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/up-down.svg b/images/svg/up-down.svg new file mode 100644 index 00000000..837cba5b --- /dev/null +++ b/images/svg/up-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/up-long.svg b/images/svg/up-long.svg new file mode 100644 index 00000000..355593d1 --- /dev/null +++ b/images/svg/up-long.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/up-right-and-down-left-from-center.svg b/images/svg/up-right-and-down-left-from-center.svg new file mode 100644 index 00000000..62a91a14 --- /dev/null +++ b/images/svg/up-right-and-down-left-from-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/up-right-from-square.svg b/images/svg/up-right-from-square.svg new file mode 100644 index 00000000..cd184482 --- /dev/null +++ b/images/svg/up-right-from-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/upload.svg b/images/svg/upload.svg new file mode 100644 index 00000000..d5624d7f --- /dev/null +++ b/images/svg/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-astronaut.svg b/images/svg/user-astronaut.svg new file mode 100644 index 00000000..48b2d4ec --- /dev/null +++ b/images/svg/user-astronaut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-check.svg b/images/svg/user-check.svg new file mode 100644 index 00000000..902e4800 --- /dev/null +++ b/images/svg/user-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-clock.svg b/images/svg/user-clock.svg new file mode 100644 index 00000000..877d4156 --- /dev/null +++ b/images/svg/user-clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-doctor.svg b/images/svg/user-doctor.svg new file mode 100644 index 00000000..20f99d2d --- /dev/null +++ b/images/svg/user-doctor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-gear.svg b/images/svg/user-gear.svg new file mode 100644 index 00000000..11dd7124 --- /dev/null +++ b/images/svg/user-gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-graduate.svg b/images/svg/user-graduate.svg new file mode 100644 index 00000000..76822f25 --- /dev/null +++ b/images/svg/user-graduate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-group.svg b/images/svg/user-group.svg new file mode 100644 index 00000000..f105e428 --- /dev/null +++ b/images/svg/user-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-injured.svg b/images/svg/user-injured.svg new file mode 100644 index 00000000..91ad0189 --- /dev/null +++ b/images/svg/user-injured.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-large-slash.svg b/images/svg/user-large-slash.svg new file mode 100644 index 00000000..47f99d78 --- /dev/null +++ b/images/svg/user-large-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-large.svg b/images/svg/user-large.svg new file mode 100644 index 00000000..51e585fd --- /dev/null +++ b/images/svg/user-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-lock.svg b/images/svg/user-lock.svg new file mode 100644 index 00000000..bdc89bc7 --- /dev/null +++ b/images/svg/user-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-minus.svg b/images/svg/user-minus.svg new file mode 100644 index 00000000..f4de7a9a --- /dev/null +++ b/images/svg/user-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-ninja.svg b/images/svg/user-ninja.svg new file mode 100644 index 00000000..d07d15c2 --- /dev/null +++ b/images/svg/user-ninja.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-nurse.svg b/images/svg/user-nurse.svg new file mode 100644 index 00000000..16f47087 --- /dev/null +++ b/images/svg/user-nurse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-pen.svg b/images/svg/user-pen.svg new file mode 100644 index 00000000..5a9b97f2 --- /dev/null +++ b/images/svg/user-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-plus.svg b/images/svg/user-plus.svg new file mode 100644 index 00000000..f77aca76 --- /dev/null +++ b/images/svg/user-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-secret.svg b/images/svg/user-secret.svg new file mode 100644 index 00000000..6ee02a0c --- /dev/null +++ b/images/svg/user-secret.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-shield.svg b/images/svg/user-shield.svg new file mode 100644 index 00000000..2b25981a --- /dev/null +++ b/images/svg/user-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-slash.svg b/images/svg/user-slash.svg new file mode 100644 index 00000000..70b6b93b --- /dev/null +++ b/images/svg/user-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-tag.svg b/images/svg/user-tag.svg new file mode 100644 index 00000000..237dba03 --- /dev/null +++ b/images/svg/user-tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-tie.svg b/images/svg/user-tie.svg new file mode 100644 index 00000000..6c6f00f1 --- /dev/null +++ b/images/svg/user-tie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user-xmark.svg b/images/svg/user-xmark.svg new file mode 100644 index 00000000..132fa816 --- /dev/null +++ b/images/svg/user-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/user.svg b/images/svg/user.svg new file mode 100644 index 00000000..e2600e96 --- /dev/null +++ b/images/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-between-lines.svg b/images/svg/users-between-lines.svg new file mode 100644 index 00000000..ae149f6d --- /dev/null +++ b/images/svg/users-between-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-gear.svg b/images/svg/users-gear.svg new file mode 100644 index 00000000..f011ba31 --- /dev/null +++ b/images/svg/users-gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-line.svg b/images/svg/users-line.svg new file mode 100644 index 00000000..6cb21f29 --- /dev/null +++ b/images/svg/users-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-rays.svg b/images/svg/users-rays.svg new file mode 100644 index 00000000..746b4227 --- /dev/null +++ b/images/svg/users-rays.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-rectangle.svg b/images/svg/users-rectangle.svg new file mode 100644 index 00000000..e8a32e62 --- /dev/null +++ b/images/svg/users-rectangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-slash.svg b/images/svg/users-slash.svg new file mode 100644 index 00000000..18bd59a6 --- /dev/null +++ b/images/svg/users-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users-viewfinder.svg b/images/svg/users-viewfinder.svg new file mode 100644 index 00000000..5c837e37 --- /dev/null +++ b/images/svg/users-viewfinder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/users.svg b/images/svg/users.svg new file mode 100644 index 00000000..0f171bf6 --- /dev/null +++ b/images/svg/users.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/utensils.svg b/images/svg/utensils.svg new file mode 100644 index 00000000..7a02efc9 --- /dev/null +++ b/images/svg/utensils.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/v.svg b/images/svg/v.svg new file mode 100644 index 00000000..defb1779 --- /dev/null +++ b/images/svg/v.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/van-shuttle.svg b/images/svg/van-shuttle.svg new file mode 100644 index 00000000..a993f252 --- /dev/null +++ b/images/svg/van-shuttle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vault.svg b/images/svg/vault.svg new file mode 100644 index 00000000..8a16fbcc --- /dev/null +++ b/images/svg/vault.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vector-square.svg b/images/svg/vector-square.svg new file mode 100644 index 00000000..0bb51603 --- /dev/null +++ b/images/svg/vector-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/venus-double.svg b/images/svg/venus-double.svg new file mode 100644 index 00000000..7c9fcbb4 --- /dev/null +++ b/images/svg/venus-double.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/venus-mars.svg b/images/svg/venus-mars.svg new file mode 100644 index 00000000..a43acb4c --- /dev/null +++ b/images/svg/venus-mars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/venus.svg b/images/svg/venus.svg new file mode 100644 index 00000000..b691b5cd --- /dev/null +++ b/images/svg/venus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vest-patches.svg b/images/svg/vest-patches.svg new file mode 100644 index 00000000..4011001c --- /dev/null +++ b/images/svg/vest-patches.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vest.svg b/images/svg/vest.svg new file mode 100644 index 00000000..c3b00433 --- /dev/null +++ b/images/svg/vest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vial-circle-check.svg b/images/svg/vial-circle-check.svg new file mode 100644 index 00000000..1d71ed3a --- /dev/null +++ b/images/svg/vial-circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vial-virus.svg b/images/svg/vial-virus.svg new file mode 100644 index 00000000..275945c0 --- /dev/null +++ b/images/svg/vial-virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vial.svg b/images/svg/vial.svg new file mode 100644 index 00000000..53fa61f9 --- /dev/null +++ b/images/svg/vial.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vials.svg b/images/svg/vials.svg new file mode 100644 index 00000000..d3b4c322 --- /dev/null +++ b/images/svg/vials.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/video-slash.svg b/images/svg/video-slash.svg new file mode 100644 index 00000000..f7eeaf3e --- /dev/null +++ b/images/svg/video-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/video.svg b/images/svg/video.svg new file mode 100644 index 00000000..c7eb17d2 --- /dev/null +++ b/images/svg/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vihara.svg b/images/svg/vihara.svg new file mode 100644 index 00000000..3a0dbc97 --- /dev/null +++ b/images/svg/vihara.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/virus-covid-slash.svg b/images/svg/virus-covid-slash.svg new file mode 100644 index 00000000..f64228d0 --- /dev/null +++ b/images/svg/virus-covid-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/virus-covid.svg b/images/svg/virus-covid.svg new file mode 100644 index 00000000..096f8a5c --- /dev/null +++ b/images/svg/virus-covid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/virus-slash.svg b/images/svg/virus-slash.svg new file mode 100644 index 00000000..7850bc2d --- /dev/null +++ b/images/svg/virus-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/virus.svg b/images/svg/virus.svg new file mode 100644 index 00000000..3d9f8dbd --- /dev/null +++ b/images/svg/virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/viruses.svg b/images/svg/viruses.svg new file mode 100644 index 00000000..7ae2ac9e --- /dev/null +++ b/images/svg/viruses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/voicemail.svg b/images/svg/voicemail.svg new file mode 100644 index 00000000..d89e8e07 --- /dev/null +++ b/images/svg/voicemail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/volcano.svg b/images/svg/volcano.svg new file mode 100644 index 00000000..f8a50b37 --- /dev/null +++ b/images/svg/volcano.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/volleyball.svg b/images/svg/volleyball.svg new file mode 100644 index 00000000..49f2190a --- /dev/null +++ b/images/svg/volleyball.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/volume-high.svg b/images/svg/volume-high.svg new file mode 100644 index 00000000..251a03b6 --- /dev/null +++ b/images/svg/volume-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/volume-low.svg b/images/svg/volume-low.svg new file mode 100644 index 00000000..2ed6dd67 --- /dev/null +++ b/images/svg/volume-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/volume-off.svg b/images/svg/volume-off.svg new file mode 100644 index 00000000..8cdd81e0 --- /dev/null +++ b/images/svg/volume-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/volume-xmark.svg b/images/svg/volume-xmark.svg new file mode 100644 index 00000000..f61a0fc2 --- /dev/null +++ b/images/svg/volume-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/vr-cardboard.svg b/images/svg/vr-cardboard.svg new file mode 100644 index 00000000..5a68f637 --- /dev/null +++ b/images/svg/vr-cardboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/w.svg b/images/svg/w.svg new file mode 100644 index 00000000..dac7c03f --- /dev/null +++ b/images/svg/w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/walkie-talkie.svg b/images/svg/walkie-talkie.svg new file mode 100644 index 00000000..9c7b3c72 --- /dev/null +++ b/images/svg/walkie-talkie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wallet.svg b/images/svg/wallet.svg new file mode 100644 index 00000000..13ff1cf8 --- /dev/null +++ b/images/svg/wallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wand-magic-sparkles.svg b/images/svg/wand-magic-sparkles.svg new file mode 100644 index 00000000..5725d4ac --- /dev/null +++ b/images/svg/wand-magic-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wand-magic.svg b/images/svg/wand-magic.svg new file mode 100644 index 00000000..f707bb92 --- /dev/null +++ b/images/svg/wand-magic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wand-sparkles.svg b/images/svg/wand-sparkles.svg new file mode 100644 index 00000000..13dbb692 --- /dev/null +++ b/images/svg/wand-sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/warehouse.svg b/images/svg/warehouse.svg new file mode 100644 index 00000000..25a051fe --- /dev/null +++ b/images/svg/warehouse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/water-ladder.svg b/images/svg/water-ladder.svg new file mode 100644 index 00000000..271c1529 --- /dev/null +++ b/images/svg/water-ladder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/water.svg b/images/svg/water.svg new file mode 100644 index 00000000..d9a4bbb0 --- /dev/null +++ b/images/svg/water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wave-square.svg b/images/svg/wave-square.svg new file mode 100644 index 00000000..b09fd59b --- /dev/null +++ b/images/svg/wave-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/weight-hanging.svg b/images/svg/weight-hanging.svg new file mode 100644 index 00000000..a7a22efd --- /dev/null +++ b/images/svg/weight-hanging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/weight-scale.svg b/images/svg/weight-scale.svg new file mode 100644 index 00000000..902d95ed --- /dev/null +++ b/images/svg/weight-scale.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wheat-awn-circle-exclamation.svg b/images/svg/wheat-awn-circle-exclamation.svg new file mode 100644 index 00000000..42279507 --- /dev/null +++ b/images/svg/wheat-awn-circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wheat-awn.svg b/images/svg/wheat-awn.svg new file mode 100644 index 00000000..168b6a46 --- /dev/null +++ b/images/svg/wheat-awn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wheelchair-move.svg b/images/svg/wheelchair-move.svg new file mode 100644 index 00000000..fef98904 --- /dev/null +++ b/images/svg/wheelchair-move.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wheelchair.svg b/images/svg/wheelchair.svg new file mode 100644 index 00000000..d4933654 --- /dev/null +++ b/images/svg/wheelchair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/whiskey-glass.svg b/images/svg/whiskey-glass.svg new file mode 100644 index 00000000..19b32fc2 --- /dev/null +++ b/images/svg/whiskey-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wifi.svg b/images/svg/wifi.svg new file mode 100644 index 00000000..9e78a32e --- /dev/null +++ b/images/svg/wifi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wind.svg b/images/svg/wind.svg new file mode 100644 index 00000000..de69a7a7 --- /dev/null +++ b/images/svg/wind.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/window-maximize.svg b/images/svg/window-maximize.svg new file mode 100644 index 00000000..56e82ce0 --- /dev/null +++ b/images/svg/window-maximize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/window-minimize.svg b/images/svg/window-minimize.svg new file mode 100644 index 00000000..a1069d11 --- /dev/null +++ b/images/svg/window-minimize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/window-restore.svg b/images/svg/window-restore.svg new file mode 100644 index 00000000..1c13002f --- /dev/null +++ b/images/svg/window-restore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wine-bottle.svg b/images/svg/wine-bottle.svg new file mode 100644 index 00000000..2941b451 --- /dev/null +++ b/images/svg/wine-bottle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wine-glass-empty.svg b/images/svg/wine-glass-empty.svg new file mode 100644 index 00000000..58c3d5f7 --- /dev/null +++ b/images/svg/wine-glass-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wine-glass.svg b/images/svg/wine-glass.svg new file mode 100644 index 00000000..df3cfe27 --- /dev/null +++ b/images/svg/wine-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/won-sign.svg b/images/svg/won-sign.svg new file mode 100644 index 00000000..6a839944 --- /dev/null +++ b/images/svg/won-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/worm.svg b/images/svg/worm.svg new file mode 100644 index 00000000..2922c61b --- /dev/null +++ b/images/svg/worm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/wrench.svg b/images/svg/wrench.svg new file mode 100644 index 00000000..9bafb70d --- /dev/null +++ b/images/svg/wrench.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/x-ray.svg b/images/svg/x-ray.svg new file mode 100644 index 00000000..f68f5892 --- /dev/null +++ b/images/svg/x-ray.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/x.svg b/images/svg/x.svg new file mode 100644 index 00000000..345bfff7 --- /dev/null +++ b/images/svg/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/xmark.svg b/images/svg/xmark.svg new file mode 100644 index 00000000..c2b304e2 --- /dev/null +++ b/images/svg/xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/xmarks-lines.svg b/images/svg/xmarks-lines.svg new file mode 100644 index 00000000..30286732 --- /dev/null +++ b/images/svg/xmarks-lines.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/y.svg b/images/svg/y.svg new file mode 100644 index 00000000..0c488e55 --- /dev/null +++ b/images/svg/y.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/yen-sign.svg b/images/svg/yen-sign.svg new file mode 100644 index 00000000..a49fac19 --- /dev/null +++ b/images/svg/yen-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/yin-yang.svg b/images/svg/yin-yang.svg new file mode 100644 index 00000000..805f453f --- /dev/null +++ b/images/svg/yin-yang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/svg/z.svg b/images/svg/z.svg new file mode 100644 index 00000000..857f4840 --- /dev/null +++ b/images/svg/z.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/cdlgconnsettingscanal.cpp b/src/cdlgconnsettingscanal.cpp index 0dc95b61..e8cf4058 100644 --- a/src/cdlgconnsettingscanal.cpp +++ b/src/cdlgconnsettingscanal.cpp @@ -39,11 +39,11 @@ #include "canalconfigwizard.h" #include "vscphelper.h" -#include -#include -#include -#include #include +#include +#include +#include +#include #include @@ -56,16 +56,16 @@ // CTor // -CDlgConnSettingsCanal::CDlgConnSettingsCanal(QWidget *parent) : - QDialog(parent), - ui(new Ui::CDlgConnSettingsCanal) +CDlgConnSettingsCanal::CDlgConnSettingsCanal(QWidget* parent) + : QDialog(parent) + , ui(new Ui::CDlgConnSettingsCanal) { - ui->setupUi(this); + ui->setupUi(this); - connect(ui->btnTest, SIGNAL(clicked()), this, SLOT(testDriver())); - connect(ui->btnSetPath, SIGNAL(clicked()), this, SLOT(setDriverPath())); - connect(ui->btnWizard, SIGNAL(clicked()), this, SLOT(wizard())); - connect(ui->btnFilterWizard, SIGNAL(clicked()), this, SLOT(filterwizard())); + connect(ui->btnTest, SIGNAL(clicked()), this, SLOT(testDriver())); + connect(ui->btnSetPath, SIGNAL(clicked()), this, SLOT(setDriverPath())); + connect(ui->btnWizard, SIGNAL(clicked()), this, SLOT(wizard())); + connect(ui->btnFilterWizard, SIGNAL(clicked()), this, SLOT(filterwizard())); } /////////////////////////////////////////////////////////////////////////////// @@ -74,828 +74,817 @@ CDlgConnSettingsCanal::CDlgConnSettingsCanal(QWidget *parent) : CDlgConnSettingsCanal::~CDlgConnSettingsCanal() { - delete ui; + delete ui; } /////////////////////////////////////////////////////////////////////////////// // setInitialFocus // -void CDlgConnSettingsCanal::setInitialFocus(void) +void +CDlgConnSettingsCanal::setInitialFocus(void) { - ui->editDescription->setFocus(); + ui->editDescription->setFocus(); } - // Getters / Setters - /////////////////////////////////////////////////////////////////////////////// // getName // -QString CDlgConnSettingsCanal::getName(void) +QString +CDlgConnSettingsCanal::getName(void) { - return (ui->editDescription->text()); + return (ui->editDescription->text()); } /////////////////////////////////////////////////////////////////////////////// // setName // -void CDlgConnSettingsCanal::setName(const QString& str) +void +CDlgConnSettingsCanal::setName(const QString& str) { - ui->editDescription->setText(str); + ui->editDescription->setText(str); } /////////////////////////////////////////////////////////////////////////////// // getPath // -QString CDlgConnSettingsCanal::getPath(void) +QString +CDlgConnSettingsCanal::getPath(void) { - return (ui->editPath->text()); + return (ui->editPath->text()); } /////////////////////////////////////////////////////////////////////////////// // setPath // -void CDlgConnSettingsCanal::setPath(const QString& str) +void +CDlgConnSettingsCanal::setPath(const QString& str) { - ui->editPath->setText(str); + ui->editPath->setText(str); } /////////////////////////////////////////////////////////////////////////////// // getConfig // -QString CDlgConnSettingsCanal::getConfig(void) +QString +CDlgConnSettingsCanal::getConfig(void) { - return (ui->editConfig->text()); + return (ui->editConfig->text()); } /////////////////////////////////////////////////////////////////////////////// // setConfig // -void CDlgConnSettingsCanal::setConfig(const QString& str) +void +CDlgConnSettingsCanal::setConfig(const QString& str) { - ui->editConfig->setText(str); + ui->editConfig->setText(str); } /////////////////////////////////////////////////////////////////////////////// // getFlags // -uint32_t CDlgConnSettingsCanal::getFlags(void) +uint32_t +CDlgConnSettingsCanal::getFlags(void) { - return vscp_readStringValue(ui->editFlags->text().toStdString()); + return vscp_readStringValue(ui->editFlags->text().toStdString()); } /////////////////////////////////////////////////////////////////////////////// // getFlagsStr // -std::string CDlgConnSettingsCanal::getFlagsStr(void) +std::string +CDlgConnSettingsCanal::getFlagsStr(void) { - return ui->editFlags->text().toStdString(); + return ui->editFlags->text().toStdString(); } /////////////////////////////////////////////////////////////////////////////// // setFlags // -void CDlgConnSettingsCanal::setFlags(uint32_t flags) +void +CDlgConnSettingsCanal::setFlags(uint32_t flags) { - std::string str = vscp_str_format("0x%lX", (unsigned long)flags); - ui->editFlags->setText(str.c_str()); + std::string str = vscp_str_format("0x%lX", (unsigned long)flags); + ui->editFlags->setText(str.c_str()); } /////////////////////////////////////////////////////////////////////////////// // getDataRate // -uint32_t CDlgConnSettingsCanal::getDataRate(void) +uint32_t +CDlgConnSettingsCanal::getDataRate(void) { - return vscp_readStringValue(ui->editDataRate->text().toStdString()); + return vscp_readStringValue(ui->editDataRate->text().toStdString()); } /////////////////////////////////////////////////////////////////////////////// // setDataRate // -void CDlgConnSettingsCanal::setDataRate(uint32_t datarate) +void +CDlgConnSettingsCanal::setDataRate(uint32_t datarate) { - std::string str = vscp_str_format("%lu", (unsigned long)datarate); - ui->editDataRate->setText(str.c_str()); + std::string str = vscp_str_format("%lu", (unsigned long)datarate); + ui->editDataRate->setText(str.c_str()); } - /////////////////////////////////////////////////////////////////////////////// // getJson // -QJsonObject CDlgConnSettingsCanal::getJson(void) +QJsonObject +CDlgConnSettingsCanal::getJson(void) { - m_jsonConfig["type"] = static_cast(CVscpClient::connType::CANAL); - m_jsonConfig["name"] = getName(); - m_jsonConfig["path"] = getPath(); - m_jsonConfig["config"] = getConfig(); - m_jsonConfig["flags"] = (int)getFlags(); - m_jsonConfig["datarate"] = (int)getDataRate(); - return m_jsonConfig; + m_jsonConfig["type"] = static_cast(CVscpClient::connType::CANAL); + m_jsonConfig["name"] = getName(); + m_jsonConfig["path"] = getPath(); + m_jsonConfig["config"] = getConfig(); + m_jsonConfig["flags"] = (int)getFlags(); + m_jsonConfig["datarate"] = (int)getDataRate(); + return m_jsonConfig; } - /////////////////////////////////////////////////////////////////////////////// // setJson // -void CDlgConnSettingsCanal::setJson(const QJsonObject *pobj) -{ - m_jsonConfig = *pobj; - - if (!m_jsonConfig["name"].isNull()) setName(m_jsonConfig["name"].toString()); - if (!m_jsonConfig["path"].isNull()) setPath(m_jsonConfig["path"].toString()); - if (!m_jsonConfig["config"].isNull()) setConfig(m_jsonConfig["config"].toString()); - if (!m_jsonConfig["flags"].isNull()) setFlags(uint32_t(m_jsonConfig["flags"].toInt())); - if (!m_jsonConfig["datarate"].isNull()) setDataRate(m_jsonConfig["datarate"].toInt()); +void +CDlgConnSettingsCanal::setJson(const QJsonObject* pobj) +{ + m_jsonConfig = *pobj; + + if (!m_jsonConfig["name"].isNull()) + setName(m_jsonConfig["name"].toString()); + if (!m_jsonConfig["path"].isNull()) + setPath(m_jsonConfig["path"].toString()); + if (!m_jsonConfig["config"].isNull()) + setConfig(m_jsonConfig["config"].toString()); + if (!m_jsonConfig["flags"].isNull()) + setFlags(uint32_t(m_jsonConfig["flags"].toInt())); + if (!m_jsonConfig["datarate"].isNull()) + setDataRate(m_jsonConfig["datarate"].toInt()); } /////////////////////////////////////////////////////////////////////////////// // testDriver // -void CDlgConnSettingsCanal::testDriver() +void +CDlgConnSettingsCanal::testDriver() { - std::string path = ui->editPath->text().toStdString(); - - if (!((QFileInfo::exists(path.c_str()) && QFileInfo(path.c_str()).isFile()) || QFileInfo(path.c_str()).isSymLink())) { - int ret = QMessageBox::warning(this, tr("vscpworks+"), - tr("The driver does not exist."), - QMessageBox::Ok ); - } - - // Save set path - std::string save_path = m_vscpClient.m_canalif.getPath(); - - // Set new path - m_vscpClient.m_canalif.setPath(path); - - int rv; - if (CANAL_ERROR_SUCCESS != (rv = m_vscpClient.m_canalif.init())) { - std::string str = vscp_str_format("The driver did not load properly. rv=%d", rv); - QMessageBox::warning(this, - tr("vscpworks+"), - str.c_str(), - QMessageBox::Ok ); - } - else { - uint32_t dllversion = m_vscpClient.m_canalif.CanalGetDllVersion(); - const char *pVendor = m_vscpClient.m_canalif.CanalGetVendorString(); - std::string strGenerationOne = m_vscpClient.m_canalif.isGenerationOne() ? - "Generation 1 driver (wizard will not work)" : "Generation 2 driver"; - std::string str = vscp_str_format("The driver is OK. \n\nVersion = %d.%d.%d.%d\n%s\n\n%s", - (dllversion >> 24) & 0xff, - (dllversion >> 16) & 0xff, - (dllversion >> 8) & 0xff, - dllversion & 0xff, - pVendor, - strGenerationOne.c_str()); - - QMessageBox::information(this, - tr("vscpworks+"), - str.c_str(), - QMessageBox::Ok ); - } - - // Release the driver - m_vscpClient.m_canalif.releaseDriver(); - - // Restore old path - m_vscpClient.m_canalif.setPath(save_path); + std::string path = ui->editPath->text().toStdString(); + + if (!((QFileInfo::exists(path.c_str()) && QFileInfo(path.c_str()).isFile()) || QFileInfo(path.c_str()).isSymLink())) { + int ret = QMessageBox::warning(this, tr("vscpworks+"), tr("The driver does not exist."), QMessageBox::Ok); + } + + // Save set path + std::string save_path = m_vscpClient.m_canalif.getPath(); + + // Set new path + m_vscpClient.m_canalif.setPath(path); + + int rv; + if (CANAL_ERROR_SUCCESS != (rv = m_vscpClient.m_canalif.init())) { + std::string str = vscp_str_format("The driver did not load properly. rv=%d", rv); + QMessageBox::warning(this, + tr("vscpworks+"), + str.c_str(), + QMessageBox::Ok); + } + else { + uint32_t dllversion = m_vscpClient.m_canalif.CanalGetDllVersion(); + const char* pVendor = m_vscpClient.m_canalif.CanalGetVendorString(); + std::string strGenerationOne = m_vscpClient.m_canalif.isGenerationOne() ? "Generation 1 driver (wizard will not work)" : "Generation 2 driver"; + std::string str = vscp_str_format("The driver is OK. \n\nVersion = %d.%d.%d.%d\n%s\n\n%s", + (dllversion >> 24) & 0xff, + (dllversion >> 16) & 0xff, + (dllversion >> 8) & 0xff, + dllversion & 0xff, + pVendor, + strGenerationOne.c_str()); + + QMessageBox::information(this, + tr("vscpworks+"), + str.c_str(), + QMessageBox::Ok); + } + + // Release the driver + m_vscpClient.m_canalif.releaseDriver(); + + // Restore old path + m_vscpClient.m_canalif.setPath(save_path); } /////////////////////////////////////////////////////////////////////////////// // setDriverPath // -void CDlgConnSettingsCanal::setDriverPath() +void +CDlgConnSettingsCanal::setDriverPath() { #ifdef WIN32 - std::string filename = - QFileDialog::getOpenFileName(this, - tr("Set path to CANAL driver"), - "/var/lib/vscp/drivers/level1", - tr("Drivers (*.so)")).toStdString(); + std::string filename = + QFileDialog::getOpenFileName(this, + tr("Set path to CANAL driver"), + "/var/lib/vscp/drivers/level1", + tr("Drivers (*.so)")) + .toStdString(); #else - std::string filename = - QFileDialog::getOpenFileName(this, - tr("Set path to CANAL driver"), - "/var/lib/vscp/drivers/level1", - tr("Drivers (*.so);;All (*)")).toStdString(); -#endif - ui->editPath->setText(filename.c_str()); + std::string filename = + QFileDialog::getOpenFileName(this, + tr("Set path to CANAL driver"), + "/var/lib/vscp/drivers/level1", + tr("Drivers (*.so);;All (*)")) + .toStdString(); +#endif + ui->editPath->setText(filename.c_str()); } /////////////////////////////////////////////////////////////////////////////// // wizard // -void CDlgConnSettingsCanal::wizard() +void +CDlgConnSettingsCanal::wizard() { - /////////////////////////////////////////////////////////////////////////// - // Get XML config data - /////////////////////////////////////////////////////////////////////////// - - std::string path = ui->editPath->text().toStdString(); - std::string config = getConfig().toStdString(); - uint32_t flags = getFlags(); - - // Get config items - std::deque m_configItems; - vscp_split(m_configItems, getConfig().toStdString(), ";"); - - // Save set path - QString save_path = m_vscpClient.m_canalif.getPath().c_str(); - - // Set new path - m_vscpClient.m_canalif.setPath(path); - - int rv; - if (CANAL_ERROR_SUCCESS != (rv = m_vscpClient.m_canalif.init())) { - std::string str = vscp_str_format("The driver did not load properly. rv=%d", rv); - QMessageBox::warning(this, - tr("vscpworks+"), - str.c_str(), - QMessageBox::Ok ); - // Release the driver - m_vscpClient.m_canalif.releaseDriver(); - - // Reset old path - m_vscpClient.m_canalif.setPath(save_path.toStdString()); - - return; - } + /////////////////////////////////////////////////////////////////////////// + // Get XML config data + /////////////////////////////////////////////////////////////////////////// + + std::string path = ui->editPath->text().toStdString(); + std::string config = getConfig().toStdString(); + uint32_t flags = getFlags(); + + // Get config items + std::deque m_configItems; + vscp_split(m_configItems, getConfig().toStdString(), ";"); + + // Save set path + QString save_path = m_vscpClient.m_canalif.getPath().c_str(); + + // Set new path + m_vscpClient.m_canalif.setPath(path); + + int rv; + if (CANAL_ERROR_SUCCESS != (rv = m_vscpClient.m_canalif.init())) { + std::string str = vscp_str_format("The driver did not load properly. rv=%d", rv); + QMessageBox::warning(this, + tr("vscpworks+"), + str.c_str(), + QMessageBox::Ok); + // Release the driver + m_vscpClient.m_canalif.releaseDriver(); - if (m_vscpClient.m_canalif.isGenerationOne()) { - QMessageBox::warning(this, - tr("vscpworks+"), - tr("Driver is a generation one driver that does not have any configuration data embedded"), - QMessageBox::Ok ); - // Release the driver - m_vscpClient.m_canalif.releaseDriver(); + // Reset old path + m_vscpClient.m_canalif.setPath(save_path.toStdString()); - // Reset old path - m_vscpClient.m_canalif.setPath(save_path.toStdString()); + return; + } - return; - } + if (m_vscpClient.m_canalif.isGenerationOne()) { + QMessageBox::warning(this, + tr("vscpworks+"), + tr("Driver is a generation one driver that does not have any configuration data embedded"), + QMessageBox::Ok); + // Release the driver + m_vscpClient.m_canalif.releaseDriver(); + + // Reset old path + m_vscpClient.m_canalif.setPath(save_path.toStdString()); - const char *p = m_vscpClient.m_canalif.CanalGetDriverInfo(); - qDebug() << "Driver XML info \n" << p; + return; + } - std::string xml; - canalXmlConfig xmlcfg; + const char* p = m_vscpClient.m_canalif.CanalGetDriverInfo(); + qDebug() << "Driver XML info \n" + << p; - if ( NULL != p ) { - xml.assign(p); - - if (!xmlcfg.parseXML(xml)) { - QMessageBox::warning(this, - tr("vscpworks+"), - tr("Failed to parse XML file"), - QMessageBox::Ok ); - } + std::string xml; + canalXmlConfig xmlcfg; + + if (NULL != p) { + xml.assign(p); + + if (!xmlcfg.parseXML(xml)) { + QMessageBox::warning(this, + tr("vscpworks+"), + tr("Failed to parse XML file"), + QMessageBox::Ok); } - else { - QMessageBox::warning(this, - tr("vscpworks+"), - tr("Sorry, no configuration information available"), - QMessageBox::Ok ); + } + else { + QMessageBox::warning(this, + tr("vscpworks+"), + tr("Sorry, no configuration information available"), + QMessageBox::Ok); + } + + // Release the driver + m_vscpClient.m_canalif.releaseDriver(); + + // Reset old path + m_vscpClient.m_canalif.setPath(save_path.toStdString()); + + /////////////////////////////////////////////////////////////////////////// + // Set up wizard steps + /////////////////////////////////////////////////////////////////////////// + + CanalConfigWizard wizard(this); + // wizard.setWizardStyle(QWizard::MacStyle); + + // ************************************************************************ + // Intro page + // ************************************************************************ + QString lbl = tr("This wizard will help to generate and fill in the " + "configuration string \nand the flag bits for the. " + "the driver.\n\n"); + lbl += vscp_str_format("Driver is a level %d driver\n", (int)xmlcfg.getLevel() + 1).c_str(); + lbl += xmlcfg.getBlocking() ? "Driver is blocking.\n" : "Driver is not blocking.\n"; + + wizard.addPage(new IntroPage(nullptr, xmlcfg.getDescription().c_str(), lbl, xmlcfg.getInfoUrl().c_str())); + + // For test use + if (0) { + wizard.addPage(new ConfigStringPage(this, wizardStepBase::wizardType::STRING, "cfg1", "String value", "Configuration pos 1", "This is a string test")); + wizard.addPage(new ConfigStringPage(this, wizardStepBase::wizardType::STRING, "cfg2", "String value", "Configuration pos 2", "This is a string test")); + wizard.addPage(new ConfigStringPage(this, wizardStepBase::wizardType::STRING, "cfg3", "String value", "Configuration pos 3", "This is a string test")); + wizard.addPage(new ConfigBoolPage(this, "cfg4", "Boolean value", "Bool config", "This is a bool test")); + std::list list; + list.push_back(std::string("Ettan")); + list.push_back(std::string("Tvåan")); + list.push_back(std::string("Trean")); + list.push_back(std::string("Fyran")); + list.push_back(std::string("Femman")); + wizard.addPage(new ConfigChoicePage(this, "cfg5", list, "Choose one", "Choice config", "This is a choice test")); + wizard.addPage(new ConfigChoicePage(this, "cfg6", list, "Choose one", "Choice config", "This is a choice test")); + } + + int cfgidx = 0; + std::list::iterator itcfg; + for (itcfg = xmlcfg.m_stepsWizardItems.begin(); itcfg != xmlcfg.m_stepsWizardItems.end(); ++itcfg) { + + std::string idstr = vscp_str_format("config%d", cfgidx); // id for wizard field + std::string idtxt = vscp_str_format("Config pos %d", cfgidx + 1); // Text in head of wizard + cfgidx++; + + std::string dlgcfgval; // Set to current config value for this pos + bool bUIseDlgCfgVal = false; // Set to tru of there is a value already set for this pos + if (m_configItems.size()) { + dlgcfgval = m_configItems.front(); + m_configItems.pop_front(); + bUIseDlgCfgVal = true; } - // Release the driver - m_vscpClient.m_canalif.releaseDriver(); + switch ((*itcfg)->m_type) { - // Reset old path - m_vscpClient.m_canalif.setPath(save_path.toStdString()); + case wizardStepBase::wizardType::NONE: + break; - /////////////////////////////////////////////////////////////////////////// - // Set up wizard steps - /////////////////////////////////////////////////////////////////////////// - - CanalConfigWizard wizard(this); - //wizard.setWizardStyle(QWizard::MacStyle); - - // ************************************************************************ - // Intro page - // ************************************************************************ - QString lbl = tr("This wizard will help to generate and fill in the " - "configuration string \nand the flag bits for the. " - "the driver.\n\n"); - lbl += vscp_str_format("Driver is a level %d driver\n",(int)xmlcfg.getLevel()+1).c_str(); - lbl += xmlcfg.getBlocking() ? "Driver is blocking.\n" : "Driver is not blocking.\n"; - - wizard.addPage(new IntroPage(nullptr, xmlcfg.getDescription().c_str(), lbl, xmlcfg.getInfoUrl().c_str())); - - // For test use - if (0) { - wizard.addPage(new ConfigStringPage(this, wizardStepBase::wizardType::STRING, "cfg1", "String value", "Configuration pos 1", "This is a string test")); - wizard.addPage(new ConfigStringPage(this, wizardStepBase::wizardType::STRING, "cfg2", "String value", "Configuration pos 2", "This is a string test")); - wizard.addPage(new ConfigStringPage(this, wizardStepBase::wizardType::STRING, "cfg3", "String value", "Configuration pos 3", "This is a string test")); - wizard.addPage(new ConfigBoolPage(this, "cfg4", "Boolean value", "Bool config", "This is a bool test")); - std::list list; - list.push_back(std::string("Ettan")); - list.push_back(std::string("Tvåan")); - list.push_back(std::string("Trean")); - list.push_back(std::string("Fyran")); - list.push_back(std::string("Femman")); - wizard.addPage(new ConfigChoicePage(this, "cfg5", list, "Choose one", "Choice config", "This is a choice test")); - wizard.addPage(new ConfigChoicePage(this, "cfg6", list, "Choose one", "Choice config", "This is a choice test")); - } + case wizardStepBase::wizardType::STRING: { + wizardStepString* item = (wizardStepString*)(*itcfg); - int cfgidx = 0; - std::list::iterator itcfg; - for (itcfg = xmlcfg.m_stepsWizardItems.begin(); itcfg != xmlcfg.m_stepsWizardItems.end(); ++itcfg){ - - std::string idstr = vscp_str_format("config%d", cfgidx); // id for wizard field - std::string idtxt = vscp_str_format("Config pos %d", cfgidx + 1); // Text in head of wizard - cfgidx++; - - std::string dlgcfgval; // Set to current config value for this pos - bool bUIseDlgCfgVal = false; // Set to tru of there is a value already set for this pos - if (m_configItems.size()) { - dlgcfgval = m_configItems.front(); - m_configItems.pop_front(); - bUIseDlgCfgVal = true; + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; } - - switch ((*itcfg)->m_type) { - - case wizardStepBase::wizardType::NONE: - break; - - case wizardStepBase::wizardType::STRING: - { - wizardStepString *item = (wizardStepString *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::STRING, - idstr.c_str(), - "String value", - idtxt.c_str(), - item->getDescription().c_str(), - bUIseDlgCfgVal ? dlgcfgval.c_str() : item->getValue().c_str(), - item->getInfoUrl().c_str())); - // Set default value - wizard.setField(QString::fromUtf8(idstr.c_str()).remove('*'), - bUIseDlgCfgVal ? dlgcfgval.c_str() : item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::BOOL: - { - wizardStepBool *item = (wizardStepBool *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigBoolPage(this, - idstr.c_str(), - "Bool value", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::INT32: - { - wizardStepInt32 *item = (wizardStepInt32 *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::INT32, - idstr.c_str(), - "Int32 valuee", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::UINT32: - { - wizardStepUInt32 *item = (wizardStepUInt32 *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::UINT32, - idstr.c_str(), - "Uint32 value", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::INT64: - { - wizardStepInt64 *item = (wizardStepInt64 *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::INT64, - idstr.c_str(), - "Int64 value", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::UINT64: - { - wizardStepUInt64 *item = (wizardStepUInt64 *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::UINT64, - idstr.c_str(), - "Uint64 value", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::FLOAT: - { - wizardStepFloat *item = (wizardStepFloat *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::FLOAT, - idstr.c_str(), - "Floating point value", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::CHOICE: - { - std::list choicelist; - wizardStepChoice *item = (wizardStepChoice *)(*itcfg); - - std::string description = item->getDescription(); - if (item->isOptional()) { - description += " "; - description += "(optional)"; - } - else { - idstr += "*"; - } - - std::vector::iterator it; - for (it = item->m_choices.begin(); it != item->m_choices.end(); ++it){ - wizardChoiceItem *itemChoice = (wizardChoiceItem *)(*it); - choicelist.push_back(itemChoice->getDescription()); - } - - wizard.addPage(new ConfigChoicePage(this, - idstr.c_str(), - choicelist, - "Choices", - idtxt.c_str(), - item->getDescription().c_str(), - 0, - item->getInfoUrl().c_str())); - } - break; - - default: - // we do nothing - break; + else { + idstr += "*"; } - } + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::STRING, + idstr.c_str(), + "String value", + idtxt.c_str(), + item->getDescription().c_str(), + bUIseDlgCfgVal ? dlgcfgval.c_str() : item->getValue().c_str(), + item->getInfoUrl().c_str())); + // Set default value + wizard.setField(QString::fromUtf8(idstr.c_str()).remove('*'), + bUIseDlgCfgVal ? dlgcfgval.c_str() : item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::BOOL: { + wizardStepBool* item = (wizardStepBool*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; + } - // ************************************************************************ - // Flags - // ************************************************************************ + wizard.addPage(new ConfigBoolPage(this, + idstr.c_str(), + "Bool value", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::INT32: { + wizardStepInt32* item = (wizardStepInt32*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; + } - int flagidx = 0; - std::list::iterator itflg; - for (itflg = xmlcfg.m_stepsWizardFlags.begin(); itflg != xmlcfg.m_stepsWizardFlags.end(); ++itflg){ - - std::string idstr = vscp_str_format("flag%d", flagidx); // id for wizard flag field - flagidx++; - - bool bFlagValue = false; - std::string strFlags = getFlagsStr(); - uint32_t cfgflags = vscp_readStringValue(strFlags); - vscp_trim(strFlags); - if (strFlags.length()) { - bFlagValue = true; + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::INT32, + idstr.c_str(), + "Int32 valuee", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::UINT32: { + wizardStepUInt32* item = (wizardStepUInt32*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; } - - switch ((*itflg)->m_type) { - - case wizardStepBase::wizardType::NONE: - break; - - case wizardStepBase::wizardType::BOOL: - { - std::string idtxt; - wizardFlagBitBool *item = (wizardFlagBitBool *)(*itflg); - - std::string description = item->getDescription(); - - uint8_t width; - if ((width = item->getWidth()) > 1) { - idtxt = vscp_str_format("Flag bit %d-%d", item->getPos(), item->getPos() + width - 1); - } - else { - idtxt = vscp_str_format("Flag bit %d", item->getPos()); - } - - wizard.addPage(new ConfigBoolPage(this, - idstr.c_str(), - item->getDescription().c_str(), - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::UINT32: - { - std::string idtxt; - - wizardFlagBitNumber *item = (wizardFlagBitNumber *)(*itflg); - - std::string description = item->getDescription(); - - uint8_t width; - if ((width = item->getWidth()) > 1) { - idtxt = vscp_str_format("Flag bit %d-%d", item->getPos(), item->getPos() + width - 1); - } - else { - idtxt = vscp_str_format("Flag bit %d", item->getPos()); - } - //idstr += "*"; - - wizard.addPage(new ConfigStringPage(this, - wizardStepBase::wizardType::UINT32, - idstr.c_str(), - "Uint32 value", - idtxt.c_str(), - item->getDescription().c_str(), - item->getValue().c_str(), - item->getInfoUrl().c_str(), - item->getWidth())); - wizard.setField(idstr.c_str(), item->getValue().c_str()); - } - break; - - case wizardStepBase::wizardType::CHOICE: - { - std::string idtxt; - - std::list choicelist; - wizardFlagBitChoice *item = (wizardFlagBitChoice *)(*itflg); - - std::string description = item->getDescription(); - - uint8_t width; - if ((width = item->getWidth()) > 1) { - idtxt = vscp_str_format("Flag bit %d-%d", item->getPos(), item->getPos() + width - 1); - } - else { - idtxt = vscp_str_format("Flag bit %d", item->getPos()); - } - - std::vector::iterator it; - for (it = item->m_choices.begin(); it != item->m_choices.end(); ++it){ - wizardBitChoice *itemChoice = (wizardBitChoice *)(*it); - choicelist.push_back(itemChoice->getDescription()); - } - - wizard.addPage(new ConfigChoicePage(this, - idstr.c_str(), - choicelist, - "Choices", - idtxt.c_str(), - item->getDescription().c_str(), - 0, - item->getInfoUrl().c_str())); - } - break; - - default: - // we do nothing - break; + + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::UINT32, + idstr.c_str(), + "Uint32 value", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::INT64: { + wizardStepInt64* item = (wizardStepInt64*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; } + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::INT64, + idstr.c_str(), + "Int64 value", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::UINT64: { + wizardStepUInt64* item = (wizardStepUInt64*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; + } + + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::UINT64, + idstr.c_str(), + "Uint64 value", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::FLOAT: { + wizardStepFloat* item = (wizardStepFloat*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; + } + + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::FLOAT, + idstr.c_str(), + "Floating point value", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::CHOICE: { + std::list choicelist; + wizardStepChoice* item = (wizardStepChoice*)(*itcfg); + + std::string description = item->getDescription(); + if (item->isOptional()) { + description += " "; + description += "(optional)"; + } + else { + idstr += "*"; + } + + std::vector::iterator it; + for (it = item->m_choices.begin(); it != item->m_choices.end(); ++it) { + wizardChoiceItem* itemChoice = (wizardChoiceItem*)(*it); + choicelist.push_back(itemChoice->getDescription()); + } + + wizard.addPage(new ConfigChoicePage(this, + idstr.c_str(), + choicelist, + "Choices", + idtxt.c_str(), + item->getDescription().c_str(), + 0, + item->getInfoUrl().c_str())); + } break; + + default: + // we do nothing + break; } + } + + // ************************************************************************ + // Flags + // ************************************************************************ + int flagidx = 0; + std::list::iterator itflg; + for (itflg = xmlcfg.m_stepsWizardFlags.begin(); itflg != xmlcfg.m_stepsWizardFlags.end(); ++itflg) { + + std::string idstr = vscp_str_format("flag%d", flagidx); // id for wizard flag field + flagidx++; + + bool bFlagValue = false; + std::string strFlags = getFlagsStr(); + uint32_t cfgflags = vscp_readStringValue(strFlags); + vscp_trim(strFlags); + if (strFlags.length()) { + bFlagValue = true; + } - // ************************************************************************ - // Last page - // ************************************************************************ - wizard.addPage(new ConclusionPage); - - // ************************************************************************ - // go, go, go... - // ************************************************************************ - if (wizard.exec()) { - - uint32_t flags = 0; - std::string strConfig; - - // Finish - OK - - int cfgidx = 0; - std::list configStrings; - std::list::iterator itcfg; - for (itcfg = xmlcfg.m_stepsWizardItems.begin(); itcfg != xmlcfg.m_stepsWizardItems.end(); ++itcfg){ - - std::string idstr = vscp_str_format("config%d", cfgidx); // id for wizard field - cfgidx++; - - // Set the value - std::string newValue = wizard.field(idstr.c_str()).toString().toStdString(); - (*itcfg)->setValue(newValue); - - qDebug() << "C: " << wizard.field(idstr.c_str()).toString(); - qDebug() << "R: " << (*itcfg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()).c_str(); - - // If optional and no value set we are done - qDebug() << " O: " << (*itcfg)->isOptional(); - if (!newValue.length() && (*itcfg)->isOptional()) { - break; - } - - if (strConfig.length()) strConfig += ";"; - strConfig += (*itcfg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()); + switch ((*itflg)->m_type) { + + case wizardStepBase::wizardType::NONE: + break; + + case wizardStepBase::wizardType::BOOL: { + std::string idtxt; + wizardFlagBitBool* item = (wizardFlagBitBool*)(*itflg); + + std::string description = item->getDescription(); + + uint8_t width; + if ((width = item->getWidth()) > 1) { + idtxt = vscp_str_format("Flag bit %d-%d", item->getPos(), item->getPos() + width - 1); } + else { + idtxt = vscp_str_format("Flag bit %d", item->getPos()); + } + + wizard.addPage(new ConfigBoolPage(this, + idstr.c_str(), + item->getDescription().c_str(), + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::UINT32: { + std::string idtxt; - int flagidx = 0; - std::list::iterator itflg; - for (itflg = xmlcfg.m_stepsWizardFlags.begin(); itflg != xmlcfg.m_stepsWizardFlags.end(); ++itflg){ - - std::string idstr = vscp_str_format("flag%d", flagidx); // id for wizard flag field - flagidx++; + wizardFlagBitNumber* item = (wizardFlagBitNumber*)(*itflg); + + std::string description = item->getDescription(); + + uint8_t width; + if ((width = item->getWidth()) > 1) { + idtxt = vscp_str_format("Flag bit %d-%d", item->getPos(), item->getPos() + width - 1); + } + else { + idtxt = vscp_str_format("Flag bit %d", item->getPos()); + } + // idstr += "*"; + + wizard.addPage(new ConfigStringPage(this, + wizardStepBase::wizardType::UINT32, + idstr.c_str(), + "Uint32 value", + idtxt.c_str(), + item->getDescription().c_str(), + item->getValue().c_str(), + item->getInfoUrl().c_str(), + item->getWidth())); + wizard.setField(idstr.c_str(), item->getValue().c_str()); + } break; + + case wizardStepBase::wizardType::CHOICE: { + std::string idtxt; + + std::list choicelist; + wizardFlagBitChoice* item = (wizardFlagBitChoice*)(*itflg); + + std::string description = item->getDescription(); + + uint8_t width; + if ((width = item->getWidth()) > 1) { + idtxt = vscp_str_format("Flag bit %d-%d", item->getPos(), item->getPos() + width - 1); + } + else { + idtxt = vscp_str_format("Flag bit %d", item->getPos()); + } - qDebug() << "F: " << wizard.field(idstr.c_str()).toString(); - qDebug() << (*itflg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()); - flags += (*itflg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()); + std::vector::iterator it; + for (it = item->m_choices.begin(); it != item->m_choices.end(); ++it) { + wizardBitChoice* itemChoice = (wizardBitChoice*)(*it); + choicelist.push_back(itemChoice->getDescription()); } - qDebug() << "Config str = " << strConfig.c_str(); - setConfig(strConfig.c_str()); + wizard.addPage(new ConfigChoicePage(this, + idstr.c_str(), + choicelist, + "Choices", + idtxt.c_str(), + item->getDescription().c_str(), + 0, + item->getInfoUrl().c_str())); + } break; + + default: + // we do nothing + break; + } + } + + // ************************************************************************ + // Last page + // ************************************************************************ + wizard.addPage(new ConclusionPage); + + // ************************************************************************ + // go, go, go... + // ************************************************************************ + if (wizard.exec()) { + + uint32_t flags = 0; + std::string strConfig; + + // Finish - OK + + int cfgidx = 0; + std::list configStrings; + std::list::iterator itcfg; + for (itcfg = xmlcfg.m_stepsWizardItems.begin(); itcfg != xmlcfg.m_stepsWizardItems.end(); ++itcfg) { - qDebug() << "flags = " << flags; - setFlags(flags); + std::string idstr = vscp_str_format("config%d", cfgidx); // id for wizard field + cfgidx++; + // Set the value + std::string newValue = wizard.field(idstr.c_str()).toString().toStdString(); + (*itcfg)->setValue(newValue); + + qDebug() << "C: " << wizard.field(idstr.c_str()).toString(); + qDebug() << "R: " << (*itcfg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()).c_str(); + + // If optional and no value set we are done + qDebug() << " O: " << (*itcfg)->isOptional(); + if (!newValue.length() && (*itcfg)->isOptional()) { + break; + } + + if (strConfig.length()) + strConfig += ";"; + strConfig += (*itcfg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()); } + int flagidx = 0; + std::list::iterator itflg; + for (itflg = xmlcfg.m_stepsWizardFlags.begin(); itflg != xmlcfg.m_stepsWizardFlags.end(); ++itflg) { + + std::string idstr = vscp_str_format("flag%d", flagidx); // id for wizard flag field + flagidx++; + + qDebug() << "F: " << wizard.field(idstr.c_str()).toString(); + qDebug() << (*itflg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()); + flags += (*itflg)->getRealValue(wizard.field(idstr.c_str()).toString().toStdString()); + } + + qDebug() << "Config str = " << strConfig.c_str(); + setConfig(strConfig.c_str()); + + qDebug() << "flags = " << flags; + setFlags(flags); + } } /////////////////////////////////////////////////////////////////////////////// // filterwizard // -void CDlgConnSettingsCanal::filterwizard() +void +CDlgConnSettingsCanal::filterwizard() { - CDlgLevel1Filter dlg(this); + CDlgLevel1Filter dlg(this); - dlg.disableDescriptionField(); // Description filed is not needed here + dlg.disableDescriptionField(); // Description filed is not needed here - uint32_t canid = vscp_readStringValue(ui->editFilter->text().toStdString()); - uint32_t mask = vscp_readStringValue(ui->editMask->text().toStdString()); + uint32_t canid = vscp_readStringValue(ui->editFilter->text().toStdString()); + uint32_t mask = vscp_readStringValue(ui->editMask->text().toStdString()); - dlg.setVscpPriorityFilter(vscp_getHeadFromCANALid(canid) >> 5); - dlg.setVscpPriorityMask(vscp_getHeadFromCANALid(mask) >> 5); + dlg.setVscpPriorityFilter(vscp_getHeadFromCANALid(canid) >> 5); + dlg.setVscpPriorityMask(vscp_getHeadFromCANALid(mask) >> 5); - if (vscp_getHeadFromCANALid(mask) & VSCP_HEADER_HARD_CODED) { - dlg.setHardcoded(true); - } - else { - dlg.setHardcoded(false); - } + if (vscp_getHeadFromCANALid(mask) & VSCP_HEADER_HARD_CODED) { + dlg.setHardcoded(true); + } + else { + dlg.setHardcoded(false); + } - dlg.setVscpClassFilter(vscp_getVscpClassFromCANALid(canid)); - dlg.setVscpClassMask(vscp_getVscpClassFromCANALid(mask)); + dlg.setVscpClassFilter(vscp_getVscpClassFromCANALid(canid)); + dlg.setVscpClassMask(vscp_getVscpClassFromCANALid(mask)); - dlg.setVscpTypeFilter(vscp_getVscpTypeFromCANALid(canid)); - dlg.setVscpTypeMask(vscp_getVscpTypeFromCANALid(mask)); + dlg.setVscpTypeFilter(vscp_getVscpTypeFromCANALid(canid)); + dlg.setVscpTypeMask(vscp_getVscpTypeFromCANALid(mask)); - dlg.setVscpNodeIdFilter(canid & 0xff); - dlg.setVscpNodeIdMask(mask & 0xff); - - if (QDialog::Accepted == dlg.exec() ) { + dlg.setVscpNodeIdFilter(canid & 0xff); + dlg.setVscpNodeIdMask(mask & 0xff); - vscpworks *pworks = (vscpworks *)QCoreApplication::instance(); + if (QDialog::Accepted == dlg.exec()) { - uint32_t canid = vscp_getCANALidFromData(dlg.getVscpPriorityFilter(), - dlg.getVscpClassFilter(), - dlg.getVscpTypeFilter()); - canid += dlg.getVscpNodeIdFilter(); - if (dlg.getHardcoded()) { - canid |= (1 << 25); - } - - uint32_t mask = vscp_getCANALidFromData(dlg.getVscpPriorityMask(), - dlg.getVscpClassMask(), - dlg.getVscpTypeMask()); - mask += dlg.getVscpNodeIdMask(); - if (dlg.getHardcoded()) { - mask |= (1 << 25); - } + vscpworks* pworks = (vscpworks*)QCoreApplication::instance(); - if (dlg.getInverted()) { - mask = ~mask; - } - - ui->editFilter->setText(pworks->decimalToStringInBase(canid)); - ui->editMask->setText(pworks->decimalToStringInBase(mask)); + uint32_t canid = vscp_getCANALidFromData(dlg.getVscpPriorityFilter(), + dlg.getVscpClassFilter(), + dlg.getVscpTypeFilter()); + canid += dlg.getVscpNodeIdFilter(); + if (dlg.getHardcoded()) { + canid |= (1 << 25); + } + uint32_t mask = vscp_getCANALidFromData(dlg.getVscpPriorityMask(), + dlg.getVscpClassMask(), + dlg.getVscpTypeMask()); + mask += dlg.getVscpNodeIdMask(); + if (dlg.getHardcoded()) { + mask |= (1 << 25); } -} + if (dlg.getInverted()) { + mask = ~mask; + } - + ui->editFilter->setText(pworks->decimalToStringInBase(canid)); + ui->editMask->setText(pworks->decimalToStringInBase(mask)); + } +} diff --git a/src/cdlgdatepicker.cpp b/src/cdlgdatepicker.cpp index e697c7d7..b85cce53 100644 --- a/src/cdlgdatepicker.cpp +++ b/src/cdlgdatepicker.cpp @@ -40,6 +40,7 @@ #include #include +#include #include #include @@ -81,92 +82,28 @@ void CDlgDatePicker::setInitialFocus(void) // ui->editGuid->setFocus(); } -/////////////////////////////////////////////////////////////////////////////// -// setEditMode -// - -void CDlgDatePicker::setEditMode(void) -{ - // ui->editGuid->setReadOnly(true); - // ui->btnSetDummyGuid->setVisible(false); - // ui->editName->setFocus(); -} - -/////////////////////////////////////////////////////////////////////////////// -// setDummyGuid -// - -// void cdlgdatepicker::setDummyGuid(void) -// { -// //ui->editGuid->setText("00:00:00:00:00:00:00:00:00:00:00:00:xx:xx:xx:xx"); -// } - - // ---------------------------------------------------------------------------- // Getters & Setters // ---------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////// -// getGuid -// - -// QString cdlgdatepicker::getGuid(void) -// { -// //return (ui->editGuid->text()); -// } - -/////////////////////////////////////////////////////////////////////////////// -// setGuid +// getDate // -// void cdlgdatepicker::setGuid(const QString& str) -// { -// //ui->editGuid->setText(str); -// } - -/////////////////////////////////////////////////////////////////////////////// -// getName -// - -// QString cdlgdatepicker::getName(void) -// { -// return (ui->editName->text()); -// } - -/////////////////////////////////////////////////////////////////////////////// -// setName -// - -// void cdlgdatepicker::setName(const QString& str) -// { -// ui->editName->setText(str); -// } +QDate CDlgDatePicker::getDate(void) +{ + return ui->calendar->selectedDate(); +} /////////////////////////////////////////////////////////////////////////////// -// getDescription +// setDate // -// QString cdlgdatepicker::getDescription(void) -// { -// #if QT_VERSION >= 0x050E00 -// //return (ui->editDescription->toMarkdown()); -// return (ui->editDescription->toPlainText()); -// #else -// return (ui->editDescription->toPlainText()); -// #endif -// } +void CDlgDatePicker::setDate(const QDate& date) +{ + ui->calendar->setSelectedDate(date); +} -/////////////////////////////////////////////////////////////////////////////// -// setDescription -// -// void cdlgdatepicker::setDescription(const QString& str) -// { -// #if QT_VERSION >= 0x050E00 -// ui->editDescription->setMarkdown(str); -// #else -// ui->editDescription->setText(str); -// #endif -// } diff --git a/src/cdlgdatepicker.h b/src/cdlgdatepicker.h index 47eee292..5f3c59a0 100644 --- a/src/cdlgdatepicker.h +++ b/src/cdlgdatepicker.h @@ -32,52 +32,37 @@ #include #include - +#include namespace Ui { class CDlgDatePicker; } - -class CDlgDatePicker : public QDialog -{ - Q_OBJECT +class CDlgDatePicker : public QDialog { + Q_OBJECT public: - - public: - explicit CDlgDatePicker(QWidget *parent = nullptr); - ~CDlgDatePicker(); - - /*! - Set inital focus to description - */ - void setInitialFocus(void); - - /*! - Set edit mode. - GUID will be READ ONLY - */ - void setEditMode(void); + explicit CDlgDatePicker(QWidget* parent = nullptr); + ~CDlgDatePicker(); - + /*! + Set inital focus to description + */ + void setInitialFocus(void); + // ---------------------------------------------------------------------------- + // Getters & Setters + // ---------------------------------------------------------------------------- - // ---------------------------------------------------------------------------- - // Getters & Setters - // ---------------------------------------------------------------------------- - - - - public slots: + // Date + QDate getDate(void); + void setDate(const QDate& date); +public slots: private: - - Ui::CDlgDatePicker *ui; - + Ui::CDlgDatePicker* ui; }; - #endif // CDLGDATEPICKER_H diff --git a/src/cdlgdatepicker.ui b/src/cdlgdatepicker.ui index d412ae6b..696bd2db 100644 --- a/src/cdlgdatepicker.ui +++ b/src/cdlgdatepicker.ui @@ -29,7 +29,7 @@ QDialogButtonBox::Cancel|QDialogButtonBox::Ok - + 20 diff --git a/src/cdlgeditmap.cpp b/src/cdlgeditmap.cpp new file mode 100644 index 00000000..aaf618dd --- /dev/null +++ b/src/cdlgeditmap.cpp @@ -0,0 +1,363 @@ +// cdlgeditmap.cpp +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +#ifdef WIN32 +#include +#endif + +#include +#include + +#include + +#include "cdlgeditmap.h" +#include "ui_cdlgeditmap.h" + +#include "cdlgmdfdescription.h" +#include "cdlgmdfinfourl.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// CTor +// + +CDlgEditMap::CDlgEditMap(QWidget* parent) + : QDialog(parent) + , ui(new Ui::CDlgEditMap) +{ + ui->setupUi(this); + + vscpworks* pworks = (vscpworks*)QCoreApplication::instance(); + + // QShortcut* shortcut = new QShortcut(QKeySequence(tr("Ctrl+E", "Edit")), ui->editDate); + // connect(shortcut, &QShortcut::activated, this, &CDlgEditMap::editDesc); + + // connect(ui->btnSetDummyGuid, &QPushButton::clicked, this, &cdlgmdfmodule::setDummyGuid); + + connect(ui->btnAddMapItem, &QToolButton::clicked, this, &CDlgEditMap::addMapItem); + connect(ui->btnEditMapItem, &QToolButton::clicked, this, &CDlgEditMap::editMapItem); + connect(ui->btnDupMapItem, &QToolButton::clicked, this, &CDlgEditMap::dupMapItem); + connect(ui->btnDelMapItem, &QToolButton::clicked, this, &CDlgEditMap::deleteMapItem); + + setInitialFocus(); +} + +/////////////////////////////////////////////////////////////////////////////// +// DTor +// + +CDlgEditMap::~CDlgEditMap() +{ + delete ui; +} + +/////////////////////////////////////////////////////////////////////////////// +// initDialogData +// + +void +CDlgEditMap::initDialogData(std::map* pmap, descriptionMap type, const QString* pselstr) +{ + QString str; + + if (nullptr == pmap) { + spdlog::error("MDF module information - Invalid MDF object (initDialogData)"); + return; + } + + m_pMap = pmap; + + fillMapData(pselstr); +} + +/////////////////////////////////////////////////////////////////////////////// +// fillMapData +// + +void +CDlgEditMap::fillMapData(const QString* pselstr) +{ + QString str; + + // Fill in map data + std::map::iterator itMap = m_pMap->begin(); + while (itMap != m_pMap->end()) { + std::string key = itMap->first; // key + std::string value = itMap->second; + str = key.c_str() + tr(" - ") + value.c_str(); + ui->listMap->addItem(str); + itMap++; + } + + // Select row as of MDF frame selection + if ((nullptr != pselstr) && pselstr->length()) { + for (int i = 0; i < ui->listMap->count(); i++) { + QString selstr = ui->listMap->item(i)->text().left(2); + qDebug() << selstr << " - " << *pselstr; + if (selstr == *pselstr) { + ui->listMap->setCurrentRow(i); + ui->listMap->item(i)->setSelected(true); + } + } + } +} + +/////////////////////////////////////////////////////////////////////////////// +// fillInfoUrl +// + +// void +// CDlgEditMap::fillInfoUrl() +// { +// QString str; + +// // Fill in help URL's +// std::map* pmapHelpUrl = m_pmdf->getModuleHelpUrlMap(); +// std::map::iterator itInfo = pmapHelpUrl->begin(); +// while (itInfo != pmapHelpUrl->end()) { +// std::string lang = itInfo->first; // key +// std::string info = itInfo->second; +// str = lang.c_str() + tr(" - ") + info.c_str(); +// ui->listInfo->addItem(str); +// itInfo++; +// } +// } + +/////////////////////////////////////////////////////////////////////////////// +// setInitialFocus +// + +void +CDlgEditMap::setInitialFocus(void) +{ + // ui->editGuid->setFocus(); +} + +// ---------------------------------------------------------------------------- +// Getters & Setters +// ---------------------------------------------------------------------------- + +/////////////////////////////////////////////////////////////////////////////// +// accept +// + +void +CDlgEditMap::accept() +{ + std::string str; + if (nullptr != m_pMap) { + + } + else { + spdlog::error("MDF map information - Invalid map object (accept)"); + } + + QDialog::accept(); +} + +/////////////////////////////////////////////////////////////////////////////// +// addMapItem +// + +void +CDlgEditMap::addMapItem(void) +{ + QString selstr = "en"; // Default language + + CDlgMdfDescription dlg(this); + dlg.initDialogData(m_pMap); + if (QDialog::Accepted == dlg.exec()) { + ui->listMap->clear(); + fillMapData(); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// editMapItem +// + +void +CDlgEditMap::editMapItem(void) +{ + if (-1 != ui->listMap->currentRow()) { + + // Save the row + int idx = ui->listMap->currentRow(); + + QListWidgetItem* pitem = ui->listMap->currentItem(); + QString selstr = pitem->text().split('_').first().left(2); + + CDlgMdfDescription dlg(this); + dlg.initDialogData(m_pMap, &selstr); + if (QDialog::Accepted == dlg.exec()) { + ui->listMap->clear(); + fillMapData(); + ui->listMap->setCurrentRow(idx); + } + } + else { + QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// dupMapItem +// + +void +CDlgEditMap::dupMapItem(void) +{ + if (-1 != ui->listMap->currentRow()) { + CDlgMdfDescription dlg(this); + dlg.initDialogData(m_pMap); + if (QDialog::Accepted == dlg.exec()) { + ui->listMap->clear(); + fillMapData(); + } + } + else { + QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// deleteMapItem +// + +void +CDlgEditMap::deleteMapItem(void) +{ + if (-1 != ui->listMap->currentRow()) { + + // Save the row + int idx = ui->listMap->currentRow(); + + QListWidgetItem* pitem = ui->listMap->currentItem(); + QString selstr = pitem->text().split('_').first().left(2); + + m_pMap->erase(selstr.toStdString()); + ui->listMap->clear(); + fillMapData(); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// addInfo +// + +// void +// CDlgEditMap::addInfo(void) +// { +// QString selstr = "en"; // Default language + +// CDlgMdfInfoUrl dlg(this); +// dlg.initDialogData(m_pmdf->getModuleHelpUrlMap()/*, &selstr*/); +// if (QDialog::Accepted == dlg.exec()) { +// ui->listInfo->clear(); +// fillInfoUrl(); +// } +// } + +/////////////////////////////////////////////////////////////////////////////// +// editInfo +// + +// void +// CDlgEditMap::editInfo(void) +// { +// if (-1 != ui->listInfo->currentRow()) { + +// // Save the row +// int idx = ui->listInfo->currentRow(); + +// QListWidgetItem* pitem = ui->listInfo->currentItem(); +// QString selstr = pitem->text().split('_').first().left(2); + +// CDlgMdfInfoUrl dlg(this); +// dlg.initDialogData(m_pmdf->getModuleHelpUrlMap(), &selstr); +// if (QDialog::Accepted == dlg.exec()) { +// ui->listInfo->clear(); +// fillInfoUrl(); +// ui->listInfo->setCurrentRow(idx); +// } +// } +// else { +// QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); +// } +// } + +/////////////////////////////////////////////////////////////////////////////// +// dupInfo +// + +// void +// CDlgEditMap::dupInfo(void) +// { +// if (-1 != ui->listInfo->currentRow()) { +// CDlgMdfInfoUrl dlg(this); +// dlg.initDialogData(m_pmdf->getModuleHelpUrlMap()); +// if (QDialog::Accepted == dlg.exec()) { +// ui->listInfo->clear(); +// fillInfoUrl(); +// } +// } +// else { +// QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); +// } +// } + +/////////////////////////////////////////////////////////////////////////////// +// deleteInfo +// + +// void +// CDlgEditMap::deleteInfo(void) +// { +// if (-1 != ui->listInfo->currentRow()) { + +// // Save the row +// int idx = ui->listInfo->currentRow(); + +// QListWidgetItem* pitem = ui->listInfo->currentItem(); +// QString selstr = pitem->text().split('_').first().left(2); + +// m_pmdf->getModuleHelpUrlMap()->erase(selstr.toStdString()); +// ui->listInfo->clear(); +// fillInfoUrl(); + +// } +// } \ No newline at end of file diff --git a/src/cdlgeditmap.h b/src/cdlgeditmap.h new file mode 100644 index 00000000..408f31e9 --- /dev/null +++ b/src/cdlgeditmap.h @@ -0,0 +1,97 @@ +// cdlgeditmap.h +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +#ifndef CDLGEDITMAP_H +#define CDLGEDITMAP_H + +#include +#include + +#include + +typedef enum descriptionMap { + map_type_description, + map_type_info_url +} descriptionMap; + +namespace Ui { +class CDlgEditMap; +} + +class CDlgEditMap : public QDialog { + Q_OBJECT + +public: +public: + explicit CDlgEditMap(QWidget* parent = nullptr); + ~CDlgEditMap(); + + /*! + Set inital focus to description + */ + void setInitialFocus(void); + + /*! + Init dialog data + @param pmap Pointer to map + @param pselstr Pointer to ISO639 language string to handle. + Set to nullptr to add new item + */ + void initDialogData(std::map *pmap, descriptionMap type, const QString *pselstr = nullptr); + + /*! + Fill in Info URL items + @param pselstr Pointer to language string or nullptr + */ + void fillMapData(const QString *pselstr = nullptr); + + // ---------------------------------------------------------------------------- + // Getters & Setters + // ---------------------------------------------------------------------------- + + +public slots: + void accept(void); + + // Description buttons + void addMapItem(void); + void editMapItem(void); + void dupMapItem(void); + void deleteMapItem(void); + +private: + Ui::CDlgEditMap* ui; + + // map data + std::map *m_pMap; + + // Initial selstr + QString m_initial_selstr; +}; + +#endif // CDLGEDITMAP_H diff --git a/src/cdlgeditmap.ui b/src/cdlgeditmap.ui new file mode 100644 index 00000000..7621b5b2 --- /dev/null +++ b/src/cdlgeditmap.ui @@ -0,0 +1,181 @@ + + + CDlgEditMap + + + + 0 + 0 + 730 + 325 + + + + Dialog + + + + + 0 + 290 + 721 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok + + + false + + + + + + 9 + 10 + 711 + 251 + + + + + + + + + + + + + + + + Add description item + + + ... + + + + :/add.png:/add.png + + + Ctrl+A + + + + + + + Edit description item + + + ... + + + + :/pencil.svg:/pencil.svg + + + Ctrl+E + + + + + + + Duplicate description item + + + ... + + + + :/images/svg/copy.svg:/images/svg/copy.svg + + + Ctrl+D + + + + + + + Delete Description item + + + ... + + + + :/remove.png:/remove.png + + + Ctrl+X + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + + buttonBox + accepted() + CDlgEditMap + accept() + + + 360 + 305 + + + 364 + 162 + + + + + buttonBox + rejected() + CDlgEditMap + reject() + + + 360 + 305 + + + 364 + 162 + + + + + diff --git a/src/cdlgmdfdescription.cpp b/src/cdlgmdfdescription.cpp new file mode 100644 index 00000000..9903880a --- /dev/null +++ b/src/cdlgmdfdescription.cpp @@ -0,0 +1,195 @@ +// cdlgmdfdescription.cpp +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +#ifdef WIN32 +#include +#endif + +#include +#include + +#include + +#include "cdlgmdfdescription.h" +#include "ui_cdlgmdfdescription.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// CTor +// + +CDlgMdfDescription::CDlgMdfDescription(QWidget* parent) + : QDialog(parent) + , ui(new Ui::CDlgMdfDescription) +{ + ui->setupUi(this); + + vscpworks* pworks = (vscpworks*)QCoreApplication::instance(); + + // https://stackoverflow.com/questions/26307729/get-list-of-languages-in-qt5 + QList allLocales = QLocale::matchingLocales( + QLocale::AnyLanguage, + QLocale::AnyScript, + QLocale::AnyCountry); + + QStringList iso639LanguageCodes; + QStringList iso639Languages; + + for (const QLocale& locale : allLocales) { + iso639Languages << QLocale::languageToString(locale.language()); + iso639LanguageCodes << locale.name().split('_').first().left(2); + } + + iso639LanguageCodes.removeDuplicates(); + iso639LanguageCodes.sort(); + iso639LanguageCodes.removeOne("C"); + + for (auto item = iso639LanguageCodes.begin(), end = iso639LanguageCodes.end(); item != end; ++item) { + // qDebug() << *item; + ui->comboBoxLang->addItem(*item); + } + + connect(ui->btnSetLanguage, &QToolButton::clicked, this, &CDlgMdfDescription::setLang); + + setInitialFocus(); +} + +/////////////////////////////////////////////////////////////////////////////// +// DTor +// + +CDlgMdfDescription::~CDlgMdfDescription() +{ + delete ui; +} + +/////////////////////////////////////////////////////////////////////////////// +// initDialogData +// + +void +CDlgMdfDescription::initDialogData(std::map* pmap, QString* pselstr) +{ + QString str; + + if (nullptr == pmap) { + spdlog::error("MDF module information - Invalid MDF object (initDialogData)"); + return; + } + + // Save the selection string for edit to + if (nullptr != pselstr) { + m_initial_selstr = *pselstr; + } + + // Save the map pbject + m_pMapDesc = pmap; + + QString lang = (nullptr == pselstr) ? "en" : *pselstr; + + if (nullptr != pselstr) { + std::string description = pmap->at(pselstr->toStdString()); + ui->editLanguage->setText(pselstr->toStdString().c_str()); + ui->editDescription->setText(description.c_str()); + } + else { + ui->editLanguage->setText("en"); + } + + int idx = ui->comboBoxLang->findText(lang.toStdString().c_str()); + if (-1 != idx) { + ui->comboBoxLang->setCurrentIndex(idx); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// setInitialFocus +// + +void +CDlgMdfDescription::setInitialFocus(void) +{ + ui->editDescription->setFocus(); +} + +// ---------------------------------------------------------------------------- +// Getters & Setters +// ---------------------------------------------------------------------------- + +/////////////////////////////////////////////////////////////////////////////// +// accept +// + +void +CDlgMdfDescription::accept() +{ + std::string str; + if (nullptr != m_pMapDesc) { + + str = ui->editLanguage->text().trimmed().left(2).toStdString(); + + if (str.length() < 2) { + QMessageBox::warning(this, tr("vscpworks+"), tr("Invalid description object. Language must be set to IOS639 value."), QMessageBox::Ok); + return; + } + + // If selstr has been change in edit mode we have to take + // special care (we remove the old key). + if (m_initial_selstr.length() && (m_initial_selstr != str.c_str())) { + m_pMapDesc->erase(m_initial_selstr.toStdString()); + } + + QString desc = ui->editDescription->toPlainText(); + (*m_pMapDesc)[str] = ui->editDescription->toPlainText().toStdString(); + } + else { + spdlog::error("MDF module information - Invalid MDF description object (accept)"); + QMessageBox::warning(this, tr("vscpworks+"), tr("Invalid description object. Unable to save data."), QMessageBox::Ok); + } + + QDialog::accept(); +} + +/////////////////////////////////////////////////////////////////////////////// +// setLang +// + +void +CDlgMdfDescription::setLang() +{ + ui->editLanguage->setText(ui->comboBoxLang->currentText()); +} \ No newline at end of file diff --git a/src/cdlgmdfdescription.h b/src/cdlgmdfdescription.h new file mode 100644 index 00000000..f361408a --- /dev/null +++ b/src/cdlgmdfdescription.h @@ -0,0 +1,83 @@ +// cdlgmdfdescription.h +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +#ifndef CDLGMDFDESCRIPTION_H +#define CDLGMDFDESCRIPTION_H + +#include +#include + +#include + +namespace Ui { +class CDlgMdfDescription; +} + +class CDlgMdfDescription : public QDialog { + Q_OBJECT + +public: +public: + explicit CDlgMdfDescription(QWidget* parent = nullptr); + ~CDlgMdfDescription(); + + /*! + Set inital focus to description + */ + void setInitialFocus(void); + + /*! + Init dialog data + @param pmap Pointer to description map + @param pselstr Pointer to ISO639 language string to handle. + Set to nullptr to add new item + */ + void initDialogData(std::map *pmap, QString *pselstr = nullptr); + + // ---------------------------------------------------------------------------- + // Getters & Setters + // ---------------------------------------------------------------------------- + + + +public slots: + void accept(void); + void setLang(void); + + +private: + Ui::CDlgMdfDescription* ui; + + // Description map + std::map *m_pMapDesc; + + // Initial selstr + QString m_initial_selstr; +}; + +#endif // CDLGMDFDESCRIPTION_H diff --git a/src/cdlgmdfdescription.ui b/src/cdlgmdfdescription.ui index 17fa561c..e6852bcd 100644 --- a/src/cdlgmdfdescription.ui +++ b/src/cdlgmdfdescription.ui @@ -1,19 +1,23 @@ - CMdfDescription - + CDlgMdfDescription + 0 0 729 - 318 + 305 - Dialog + MDF Description - + + + :/images/png/128x128/page_add.png:/images/png/128x128/page_add.png + + 0 @@ -42,8 +46,8 @@ - - + + Language @@ -52,7 +56,45 @@ - + + + + + + + 100 + 16777215 + + + + + + + + ... + + + + :/images/svg/left-arrow.svg:/images/svg/left-arrow.svg + + + + + + + + 100 + 16777215 + + + + + + + + + + Description @@ -62,15 +104,47 @@ - - - - - + + - - + + + + + + buttonBox + accepted() + CDlgMdfDescription + accept() + + + 355 + 285 + + + 364 + 152 + + + + + buttonBox + rejected() + CDlgMdfDescription + reject() + + + 355 + 285 + + + 364 + 152 + + + + diff --git a/src/cdlgmdfinfourl.cpp b/src/cdlgmdfinfourl.cpp new file mode 100644 index 00000000..9e429131 --- /dev/null +++ b/src/cdlgmdfinfourl.cpp @@ -0,0 +1,191 @@ +// cdlgmdfinfourl.cpp +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +#ifdef WIN32 +#include +#endif + +#include +#include + +#include + +#include "cdlgmdfinfourl.h" +#include "ui_cdlgmdfinfourl.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// CTor +// + +CDlgMdfInfoUrl::CDlgMdfInfoUrl(QWidget* parent) + : QDialog(parent) + , ui(new Ui::CDlgMdfInfoUrl) +{ + ui->setupUi(this); + + vscpworks* pworks = (vscpworks*)QCoreApplication::instance(); + + // https://stackoverflow.com/questions/26307729/get-list-of-languages-in-qt5 + QList allLocales = QLocale::matchingLocales( + QLocale::AnyLanguage, + QLocale::AnyScript, + QLocale::AnyCountry); + + QStringList iso639LanguageCodes; + QStringList iso639Languages; + + for (const QLocale& locale : allLocales) { + iso639Languages << QLocale::languageToString(locale.language()); + iso639LanguageCodes << locale.name().split('_').first().left(2); + } + + iso639LanguageCodes.removeDuplicates(); + iso639LanguageCodes.sort(); + iso639LanguageCodes.removeOne("C"); + + for (auto item = iso639LanguageCodes.begin(), end = iso639LanguageCodes.end(); item != end; ++item) { + // qDebug() << *item; + ui->comboBoxLang->addItem(*item); + } + + connect(ui->btnSetLanguage, &QToolButton::clicked, this, &CDlgMdfInfoUrl::setLang); + + setInitialFocus(); +} + +/////////////////////////////////////////////////////////////////////////////// +// DTor +// + +CDlgMdfInfoUrl::~CDlgMdfInfoUrl() +{ + delete ui; +} + +/////////////////////////////////////////////////////////////////////////////// +// initDialogData +// + +void +CDlgMdfInfoUrl::initDialogData(std::map* pmap, QString* pselstr) +{ + QString str; + + if (nullptr == pmap) { + spdlog::error("MDF module information - Invalid MDF object (initDialogData)"); + return; + } + + // Save the map pbject + m_pMapInfo = pmap; + + QString lang = (nullptr == pselstr) ? "en" : *pselstr; + + if (nullptr != pselstr) { + std::string infourl = pmap->at(pselstr->toStdString()); + ui->editLanguage->setText(pselstr->toStdString().c_str()); + ui->editInfoUrl->setText(infourl.c_str()); + } + else { + ui->editLanguage->setText("en"); + } + + int idx = ui->comboBoxLang->findText(lang.toStdString().c_str()); + if (-1 != idx) { + ui->comboBoxLang->setCurrentIndex(idx); + } +} + + + +/////////////////////////////////////////////////////////////////////////////// +// setInitialFocus +// + +void +CDlgMdfInfoUrl::setInitialFocus(void) +{ + ui->editInfoUrl->setFocus(); +} + +// ---------------------------------------------------------------------------- +// Getters & Setters +// ---------------------------------------------------------------------------- + +/////////////////////////////////////////////////////////////////////////////// +// accept +// + +void +CDlgMdfInfoUrl::accept() +{ + std::string str; + if (nullptr != m_pMapInfo) { + + str = ui->editLanguage->text().trimmed().left(2).toStdString(); + + if (str.length() < 2) { + QMessageBox::warning(this, tr("vscpworks+"), tr("Invalid description object. Language must be set to IOS639 value."), QMessageBox::Ok); + return; + } + + // If selstr has been change in edit mode we have to take + // special care (we remove the old key). + if (m_initial_selstr.length() && (m_initial_selstr != str.c_str())) { + m_pMapInfo->erase(m_initial_selstr.toStdString()); + } + + (*m_pMapInfo)[str] = ui->editInfoUrl->toPlainText().toStdString(); + } + else { + spdlog::error("MDF module information - Invalid MDF Info URL object (accept)"); + QMessageBox::warning(this, tr("vscpworks+"), tr("Invalid Info URL object. Unable to save data."), QMessageBox::Ok); + } + + QDialog::accept(); +} + +/////////////////////////////////////////////////////////////////////////////// +// setLang +// + +void +CDlgMdfInfoUrl::setLang() +{ + ui->editLanguage->setText(ui->comboBoxLang->currentText()); +} diff --git a/src/cdlgmdfinfourl.h b/src/cdlgmdfinfourl.h new file mode 100644 index 00000000..c25c2f33 --- /dev/null +++ b/src/cdlgmdfinfourl.h @@ -0,0 +1,88 @@ +// cdlgmdfinfourl.h +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +#ifndef CDLGMDFINFOURL_H +#define CDLGMDFINFOURL_H + +#include +#include + +#include + +namespace Ui { +class CDlgMdfInfoUrl; +} + +class CDlgMdfInfoUrl : public QDialog { + Q_OBJECT + +public: +public: + explicit CDlgMdfInfoUrl(QWidget* parent = nullptr); + ~CDlgMdfInfoUrl(); + + /*! + Set inital focus to description + */ + void setInitialFocus(void); + + /*! + Init dialog data + @param pmap Pointer to description map + @param pselstr Pointer to ISO639 language string to handle. + Set to nullptr to add new item + */ + void initDialogData(std::map* pmap, QString* pselstr = nullptr); + + // ---------------------------------------------------------------------------- + // Getters & Setters + // ---------------------------------------------------------------------------- + + /*! + Name getter/setters + */ + void setName(const QString& name); + QString getName(void); + +public slots: + void accept(void); + void setLang(void); + +private: + + Ui::CDlgMdfInfoUrl* ui; + + // info URL map + std::map* m_pMapInfo; + + // Initial selstr + QString m_initial_selstr; + +}; + +#endif // CDLGMDFINFOURL_H diff --git a/src/cdlgmdfinfourl.ui b/src/cdlgmdfinfourl.ui new file mode 100644 index 00000000..dfe62bbb --- /dev/null +++ b/src/cdlgmdfinfourl.ui @@ -0,0 +1,169 @@ + + + CDlgMdfInfoUrl + + + + 0 + 0 + 729 + 304 + + + + MDF info URL + + + + + 0 + 270 + 711 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok + + + false + + + + + + 10 + 40 + 701 + 221 + + + + + + + Info URL + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + false + + + + + + + + + + + + + 0 + 0 + + + + + 100 + 16777215 + + + + + + + + ... + + + + :/images/svg/left-arrow.svg:/images/svg/left-arrow.svg + + + + + + + + 100 + 16777215 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Language + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + buttonBox + accepted() + CDlgMdfInfoUrl + accept() + + + 355 + 285 + + + 364 + 151 + + + + + buttonBox + rejected() + CDlgMdfInfoUrl + reject() + + + 355 + 285 + + + 364 + 151 + + + + + diff --git a/src/cdlgmdfmodule.cpp b/src/cdlgmdfmodule.cpp index 962240e0..68aee819 100644 --- a/src/cdlgmdfmodule.cpp +++ b/src/cdlgmdfmodule.cpp @@ -38,8 +38,13 @@ #include "cdlgmdfmodule.h" #include "ui_cdlgmdfmodule.h" -#include +#include "cdlgmdfdescription.h" +#include "cdlgmdfinfourl.h" + +#include #include +#include +#include #include #include @@ -50,17 +55,30 @@ // CTor // -CDlgMdfModule::CDlgMdfModule(QWidget *parent) : - QDialog(parent), - ui(new Ui::CDlgMdfModule) +CDlgMdfModule::CDlgMdfModule(QWidget* parent) + : QDialog(parent) + , ui(new Ui::CDlgMdfModule) { - ui->setupUi(this); + ui->setupUi(this); + + vscpworks* pworks = (vscpworks*)QCoreApplication::instance(); - vscpworks *pworks = (vscpworks *)QCoreApplication::instance(); + QShortcut* shortcut = new QShortcut(QKeySequence(tr("Ctrl+E", "Edit")), ui->editDate); + connect(shortcut, &QShortcut::activated, this, &CDlgMdfModule::editDesc); - //connect(ui->btnSetDummyGuid, &QPushButton::clicked, this, &cdlgmdfmodule::setDummyGuid); - - setInitialFocus(); + // connect(ui->btnSetDummyGuid, &QPushButton::clicked, this, &cdlgmdfmodule::setDummyGuid); + + connect(ui->btnAddDesc, &QToolButton::clicked, this, &CDlgMdfModule::addDesc); + connect(ui->btnEditDesc, &QToolButton::clicked, this, &CDlgMdfModule::editDesc); + connect(ui->btnDupDesc, &QToolButton::clicked, this, &CDlgMdfModule::dupDesc); + connect(ui->btnDelDesc, &QToolButton::clicked, this, &CDlgMdfModule::deleteDesc); + + connect(ui->btnAddInfo, &QToolButton::clicked, this, &CDlgMdfModule::addInfo); + connect(ui->btnEditInfo, &QToolButton::clicked, this, &CDlgMdfModule::editInfo); + connect(ui->btnDupInfo, &QToolButton::clicked, this, &CDlgMdfModule::dupInfo); + connect(ui->btnDelInfo, &QToolButton::clicked, this, &CDlgMdfModule::deleteInfo); + + setInitialFocus(); } /////////////////////////////////////////////////////////////////////////////// @@ -69,16 +87,141 @@ CDlgMdfModule::CDlgMdfModule(QWidget *parent) : CDlgMdfModule::~CDlgMdfModule() { - delete ui; + delete ui; +} + +/////////////////////////////////////////////////////////////////////////////// +// initDialogData +// + +void +CDlgMdfModule::initDialogData(const CMDF_Object* pmdfobj, mdf_module_index index) +{ + QString str; + + if (nullptr == pmdfobj) { + spdlog::error("MDF module information - Invalid MDF object (initDialogData)"); + return; + } + + m_pmdf = (CMDF*)pmdfobj; + + ui->editName->setText(m_pmdf->getModuleName().c_str()); + ui->editModel->setText(m_pmdf->getModuleModel().c_str()); + ui->comboModuleLevel->setCurrentIndex(m_pmdf->getModuleLevel()); + ui->editVersion->setText(m_pmdf->getModuleVersion().c_str()); + str = m_pmdf->getModuleChangeDate().c_str(); + ui->editDate->setDate(QDate::fromString(str, Qt::ISODate)); + ui->editBufferSize->setValue(m_pmdf->getModuleBufferSize()); + ui->editCopyright->setText(m_pmdf->getModuleCopyright().c_str()); + + switch (index) { + case index_module_model: + ui->editModel->setFocus(); + break; + + case index_module_version: + ui->editVersion->setFocus(); + break; + + case index_module_level: + ui->comboModuleLevel->setFocus(); + break; + + case index_module_change_date: + ui->editDate->setFocus(); + break; + + case index_module_buffer_size: + ui->editBufferSize->setFocus(); + break; + + case index_module_copyright: + ui->editCopyright->setFocus(); + break; + + case index_module_name: + default: + ui->editName->setFocus(); + break; + } + + // Fill in descriptions + fillDescription(); + + // std::map* pmapDescription = m_pmdf->getModuleDescriptionMap(); + // std::map::iterator itDesc = pmapDescription->begin(); + // while (itDesc != pmapDescription->end()) { + // std::string lang = itDesc->first; // key + // std::string description = itDesc->second; + // str = lang.c_str() + tr(" - ") + description.c_str(); + // ui->listDescription->addItem(str); + // itDesc++; + // } + + // Fill in help URL's + fillInfoUrl(); + // std::map* pmapHelpUrl = m_pmdf->getModuleHelpUrlMap(); + // std::map::iterator itInfo = pmapHelpUrl->begin(); + // while (itInfo != pmapHelpUrl->end()) { + // std::string lang = itInfo->first; // key + // std::string info = itInfo->second; + // str = lang.c_str() + tr(" - ") + info.c_str(); + // ui->listInfo->addItem(str); + // itInfo++; + // } +} + +/////////////////////////////////////////////////////////////////////////////// +// fillDescription +// + +void +CDlgMdfModule::fillDescription() +{ + QString str; + + // Fill in descriptions + std::map* pmapDescription = m_pmdf->getModuleDescriptionMap(); + std::map::iterator itDesc = pmapDescription->begin(); + while (itDesc != pmapDescription->end()) { + std::string lang = itDesc->first; // key + std::string description = itDesc->second; + str = lang.c_str() + tr(" - ") + description.c_str(); + ui->listDescription->addItem(str); + itDesc++; + } +} + +/////////////////////////////////////////////////////////////////////////////// +// fillInfoUrl +// + +void +CDlgMdfModule::fillInfoUrl() +{ + QString str; + + // Fill in help URL's + std::map* pmapHelpUrl = m_pmdf->getModuleHelpUrlMap(); + std::map::iterator itInfo = pmapHelpUrl->begin(); + while (itInfo != pmapHelpUrl->end()) { + std::string lang = itInfo->first; // key + std::string info = itInfo->second; + str = lang.c_str() + tr(" - ") + info.c_str(); + ui->listInfo->addItem(str); + itInfo++; + } } /////////////////////////////////////////////////////////////////////////////// // setInitialFocus // -void CDlgMdfModule::setInitialFocus(void) +void +CDlgMdfModule::setInitialFocus(void) { - //ui->editGuid->setFocus(); + // ui->editGuid->setFocus(); } /////////////////////////////////////////////////////////////////////////////// @@ -92,57 +235,237 @@ void CDlgMdfModule::setInitialFocus(void) // ui->editName->setFocus(); // } - - // ---------------------------------------------------------------------------- // Getters & Setters // ---------------------------------------------------------------------------- - - /////////////////////////////////////////////////////////////////////////////// // getName // -QString CDlgMdfModule::getName(void) +QString +CDlgMdfModule::getName(void) { - return (ui->editName->text()); + return (ui->editName->text()); } /////////////////////////////////////////////////////////////////////////////// // setName // -void CDlgMdfModule::setName(const QString& str) +void +CDlgMdfModule::setName(const QString& str) { - ui->editName->setText(str); + ui->editName->setText(str); } + /////////////////////////////////////////////////////////////////////////////// -// getDescription +// accept // -// QString cdlgmdfmodule::getDescription(void) -// { -// #if QT_VERSION >= 0x050E00 -// //return (ui->editDescription->toMarkdown()); -// return (ui->editDescription->toPlainText()); -// #else -// return (ui->editDescription->toPlainText()); -// #endif -// } +void +CDlgMdfModule::accept() +{ + std::string str; + if (nullptr != m_pmdf) { + + str = ui->editName->text().toStdString(); + m_pmdf->setModuleName(str); + + str = ui->editModel->text().toStdString(); + m_pmdf->setModuleModel(str); + + m_pmdf->setModuleLevel(ui->comboModuleLevel->currentIndex()); + + str = ui->editVersion->text().toStdString(); + m_pmdf->setModuleVersion(str); + + str = ui->editDate->text().toStdString(); + m_pmdf->setModuleChangeDate(str); + + m_pmdf->setModuleBufferSize(ui->editBufferSize->value()); + + str = ui->editCopyright->text().toStdString(); + m_pmdf->setModuleCopyright(str); + } + else { + spdlog::error("MDF module information - Invalid MDF object (accept)"); + } + + QDialog::accept(); +} /////////////////////////////////////////////////////////////////////////////// -// setDescription +// addDesc // -// void cdlgmdfmodule::setDescription(const QString& str) -// { -// #if QT_VERSION >= 0x050E00 -// ui->editDescription->setMarkdown(str); -// #else -// ui->editDescription->setText(str); -// #endif -// } +void +CDlgMdfModule::addDesc(void) +{ + QString selstr = "en"; // Default language + + CDlgMdfDescription dlg(this); + dlg.initDialogData(m_pmdf->getModuleDescriptionMap()/*, &selstr*/); + if (QDialog::Accepted == dlg.exec()) { + ui->listDescription->clear(); + fillDescription(); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// editDesc +// + +void +CDlgMdfModule::editDesc(void) +{ + if (-1 != ui->listDescription->currentRow()) { + + // Save the row + int idx = ui->listDescription->currentRow(); + + QListWidgetItem* pitem = ui->listDescription->currentItem(); + QString selstr = pitem->text().split('_').first().left(2); + + CDlgMdfDescription dlg(this); + dlg.initDialogData(m_pmdf->getModuleDescriptionMap(), &selstr); + if (QDialog::Accepted == dlg.exec()) { + ui->listDescription->clear(); + fillDescription(); + ui->listDescription->setCurrentRow(idx); + } + } + else { + QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// dupDesc +// + +void +CDlgMdfModule::dupDesc(void) +{ + if (-1 != ui->listDescription->currentRow()) { + CDlgMdfDescription dlg(this); + dlg.initDialogData(m_pmdf->getModuleDescriptionMap()); + if (QDialog::Accepted == dlg.exec()) { + ui->listDescription->clear(); + fillDescription(); + } + } + else { + QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// deleteDesc +// + +void +CDlgMdfModule::deleteDesc(void) +{ + if (-1 != ui->listDescription->currentRow()) { + + // Save the row + int idx = ui->listDescription->currentRow(); + + QListWidgetItem* pitem = ui->listDescription->currentItem(); + QString selstr = pitem->text().split('_').first().left(2); + + m_pmdf->getModuleDescriptionMap()->erase(selstr.toStdString()); + ui->listDescription->clear(); + fillDescription(); + + } +} + +/////////////////////////////////////////////////////////////////////////////// +// addInfo +// + +void +CDlgMdfModule::addInfo(void) +{ + QString selstr = "en"; // Default language + + CDlgMdfInfoUrl dlg(this); + dlg.initDialogData(m_pmdf->getModuleHelpUrlMap()/*, &selstr*/); + if (QDialog::Accepted == dlg.exec()) { + ui->listInfo->clear(); + fillInfoUrl(); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// editInfo +// + +void +CDlgMdfModule::editInfo(void) +{ + if (-1 != ui->listInfo->currentRow()) { + + // Save the row + int idx = ui->listInfo->currentRow(); + + QListWidgetItem* pitem = ui->listInfo->currentItem(); + QString selstr = pitem->text().split('_').first().left(2); + + CDlgMdfInfoUrl dlg(this); + dlg.initDialogData(m_pmdf->getModuleHelpUrlMap(), &selstr); + if (QDialog::Accepted == dlg.exec()) { + ui->listInfo->clear(); + fillInfoUrl(); + ui->listInfo->setCurrentRow(idx); + } + } + else { + QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// dupInfo +// + +void +CDlgMdfModule::dupInfo(void) +{ + if (-1 != ui->listInfo->currentRow()) { + CDlgMdfInfoUrl dlg(this); + dlg.initDialogData(m_pmdf->getModuleHelpUrlMap()); + if (QDialog::Accepted == dlg.exec()) { + ui->listInfo->clear(); + fillInfoUrl(); + } + } + else { + QMessageBox::warning(this, tr("vscpworks+"), tr("An item must be selected"), QMessageBox::Ok); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// deleteInfo +// + +void +CDlgMdfModule::deleteInfo(void) +{ + if (-1 != ui->listInfo->currentRow()) { + + // Save the row + int idx = ui->listInfo->currentRow(); + + QListWidgetItem* pitem = ui->listInfo->currentItem(); + QString selstr = pitem->text().split('_').first().left(2); + m_pmdf->getModuleHelpUrlMap()->erase(selstr.toStdString()); + ui->listInfo->clear(); + fillInfoUrl(); + } +} \ No newline at end of file diff --git a/src/cdlgmdfmodule.h b/src/cdlgmdfmodule.h index bcb279cc..8bff6116 100644 --- a/src/cdlgmdfmodule.h +++ b/src/cdlgmdfmodule.h @@ -30,99 +30,143 @@ #define CDLGMDFMODULE_H #include +#include #include +// Id for fields to identify them in the UI. +// Use to set focus on edit and to write changed values +// in correct position among other things. +typedef enum mdf_module_index { + index_module_name = 0, + index_module_model, + index_module_level, + index_module_version, + index_module_change_date, + index_module_buffer_size, + index_module_copyright +} mdf_module_index; + +// Tree prefixes (Text before value in tree table) +#define PREFIX_MDF_MODULE_NAME tr("Name : ") +#define PREFIX_MDF_MODULE_MODEL tr("Model: ") +#define PREFIX_MDF_MODULE_LEVEL tr("VSCP Level: ") +#define PREFIX_MDF_MODULE_VERSION tr("Version: ") +#define PREFIX_MDF_MODULE_CHANGE_DATE tr("Change Date: ") +#define PREFIX_MDF_MODULE_BUFFER_SIZE tr("Buffer Size: ") +#define PREFIX_MDF_MODULE_COPYRIGHT tr("Copyright: ") namespace Ui { class CDlgMdfModule; } - -class CDlgMdfModule : public QDialog -{ - Q_OBJECT +class CDlgMdfModule : public QDialog { + Q_OBJECT public: - - public: - explicit CDlgMdfModule(QWidget *parent = nullptr); - ~CDlgMdfModule(); - - /*! - Set inital focus to description - */ - void setInitialFocus(void); - - /*! - Set edit mode. - GUID will be READ ONLY - */ - void setEditMode(void); - - /*! - Set Dummy GUID - */ - void setDummyGuid(void); - - - // ---------------------------------------------------------------------------- - // Getters & Setters - // ---------------------------------------------------------------------------- - - /*! - Name getter/setters - */ - void setName(const QString& name); - QString getName(void); - - /*! - GUID getter/setters - */ - void setModel(const QString& guid); - QString getModel(void); - - /*! - GUID getter/setters - */ - void setVersion(const QString& guid); - QString getVersion(void); - - /*! - GUID getter/setters - */ - void setChangeDate(const QString& guid); - QString getChangeDate(void); - - /*! - GUID getter/setters - */ - void setBufferSize(int size); - int getBufferSize(void); - - /*! - GUID getter/setters - */ - void setCopyright(const QString& guid); - QString getCopyright(void); - - /*! - GUID getter/setters - */ - void setDescription(const QString& guid); - QString getDescription(void); - - - - public slots: - + explicit CDlgMdfModule(QWidget* parent = nullptr); + ~CDlgMdfModule(); + + /*! + Set inital focus to description + */ + void setInitialFocus(void); + + /*! + Set edit mode. + GUID will be READ ONLY + */ + void setEditMode(); + + /*! + Init dialog data + @param pmdfobject Pointer to MDF object + @param index The index for the field that will get focus + 0 - Module name + 1 - Module name + 2 - Module version + 4 - Module date + 5 - Module buffer size + 6 - Module copyright + + */ + void initDialogData(const CMDF_Object* pmdfobj, mdf_module_index index = index_module_name); + + /*! + Fill in description items + */ + void fillDescription(void); + + /*! + Fill in Info URL items + */ + void fillInfoUrl(void); + + // ---------------------------------------------------------------------------- + // Getters & Setters + // ---------------------------------------------------------------------------- + + /*! + Name getter/setters + */ + void setName(const QString& name); + QString getName(void); + + /*! + GUID getter/setters + */ + void setModel(const QString& guid); + QString getModel(void); + + /*! + GUID getter/setters + */ + void setVersion(const QString& guid); + QString getVersion(void); + + /*! + GUID getter/setters + */ + void setChangeDate(const QString& guid); + QString getChangeDate(void); + + /*! + GUID getter/setters + */ + void setBufferSize(int size); + int getBufferSize(void); + + /*! + GUID getter/setters + */ + void setCopyright(const QString& guid); + QString getCopyright(void); + + /*! + GUID getter/setters + */ + void setDescription(const QString& guid); + QString getDescription(void); + +public slots: + void accept(void); + + // Description buttons + void addDesc(void); + void editDesc(void); + void dupDesc(void); + void deleteDesc(void); + + // Info URL buttons + void addInfo(void); + void editInfo(void); + void dupInfo(void); + void deleteInfo(void); private: - - Ui::CDlgMdfModule *ui; - + Ui::CDlgMdfModule* ui; + CMDF* m_pmdf; }; - #endif // CDLGMDFMODULE_H diff --git a/src/cdlgmdfmodule.ui b/src/cdlgmdfmodule.ui index 968a2971..675291d4 100644 --- a/src/cdlgmdfmodule.ui +++ b/src/cdlgmdfmodule.ui @@ -7,11 +7,11 @@ 0 0 819 - 545 + 626 - Dialog + MDF Module information @@ -19,7 +19,7 @@ 10 30 781 - 441 + 547 @@ -43,16 +43,6 @@ - - - - Path to file containg VSCP events - - - - - - @@ -63,47 +53,54 @@ - - - - Version + + + + Path to file containg VSCP events - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + - - + + - Changed - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Level - - - - Description - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + 100 + 16777215 + + + + Level 1 + + + + + Level 2 + + - - + + - Info.URL + Version Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + Path to file containg VSCP events @@ -113,7 +110,7 @@ - + Buffer size @@ -123,7 +120,17 @@ - + + + + + 100 + 16777215 + + + + + Copyright @@ -133,7 +140,7 @@ - + Qt::WheelFocus @@ -146,26 +153,263 @@ - - + + + + Description + + + + + + + + + + + + + + + + Add description item + + + ... + + + + :/add.png:/add.png + + + Ctrl+A + + + + + + + Edit description item + + + ... + + + + :/pencil.svg:/pencil.svg + + + Ctrl+E + + + + + + + Duplicate description item + + + ... + + + + :/images/svg/copy.svg:/images/svg/copy.svg + + + Ctrl+D + + + + + + + Delete Description item + + + ... + + + + :/remove.png:/remove.png + + + Ctrl+X + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + Info.URL + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + - - + + + + + + + + + + + + + Add Info URL item + + + ... + + + + :/add.png:/add.png + + + Ctrl+A + + + + + + + Edit Info URL item + + + ... + + + + :/pencil.svg:/pencil.svg + + + Ctrl+E + + + + + + + Duplicate Info URL item + + + ... + + + + :/images/svg/copy.svg:/images/svg/copy.svg + + + Ctrl+D + + + + + + + Delete Info URL item + + + ... + + + + :/remove.png:/remove.png + + + Ctrl+X + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + - - + + + + + + + 500 + 16777215 + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - + + + + Changed + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + - + 10 - 500 - 801 + 590 + 781 32 @@ -180,6 +424,41 @@ - - + + + + + + buttonBox + accepted() + CDlgMdfModule + accept() + + + 410 + 515 + + + 409 + 272 + + + + + buttonBox + rejected() + CDlgMdfModule + reject() + + + 410 + 515 + + + 409 + 272 + + + + diff --git a/src/cfrmmdf.cpp b/src/cfrmmdf.cpp index ceefa06d..b2eb5b10 100644 --- a/src/cfrmmdf.cpp +++ b/src/cfrmmdf.cpp @@ -47,6 +47,9 @@ #include "cfrmmdf.h" #include "ui_cfrmmdf.h" +#include "cdlgeditmap.h" +#include "cdlgmdfmodule.h" + #include #include #include @@ -80,11 +83,11 @@ QMdfTreeWidgetItem::QMdfTreeWidgetItem(mdf_record_type objtype) m_pMdfRecord = nullptr; } -QMdfTreeWidgetItem::QMdfTreeWidgetItem(CMDF_Object* pobj, mdf_record_type objtype) +QMdfTreeWidgetItem::QMdfTreeWidgetItem(CMDF_Object* pobj, mdf_record_type objtype, uint16_t index) : QTreeWidgetItem(QTreeWidgetItem::Type) { m_objType = objtype; - m_fieldIndex = 0; + m_fieldIndex = index; m_pMdfRecord = pobj; } @@ -96,12 +99,15 @@ QMdfTreeWidgetItem::QMdfTreeWidgetItem(QTreeWidgetItem* parent, mdf_record_type m_pMdfRecord = nullptr; } -QMdfTreeWidgetItem::QMdfTreeWidgetItem(QTreeWidgetItem* parent, CMDF_Object* pobj, mdf_record_type objtype) +QMdfTreeWidgetItem::QMdfTreeWidgetItem(QTreeWidgetItem* parent, + CMDF_Object* pobj, + mdf_record_type objtype, + uint16_t index) : QTreeWidgetItem(parent, QTreeWidgetItem::Type) { m_objType = objtype; - m_fieldIndex = 0; - m_pMdfRecord = nullptr; + m_fieldIndex = index; + m_pMdfRecord = pobj; } QMdfTreeWidgetItem::~QMdfTreeWidgetItem() @@ -159,12 +165,15 @@ CFrmMdf::CFrmMdf(QWidget* parent, const char* path) this, &CFrmMdf::showMdfContextMenu); - // New has been selected in the menu + // New has been selected in the menu - Create new MDF file connect(ui->actionNew, SIGNAL(triggered()), this, SLOT(newMdf())); - // Open has been selected in the menu + // Open has been selected in the menu - Open new MDF file connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(openMdf())); + // Open has been selected in the menu - Edit Module info + connect(ui->actionEdit_item, SIGNAL(triggered()), this, SLOT(editModuleData())); + // Register row has been clicked. connect(ui->treeMDF, &QTreeWidget::itemClicked, @@ -262,6 +271,7 @@ CFrmMdf::showMdfContextMenu(const QPoint& pos) QMenu* menu = new QMenu(this); QMdfTreeWidgetItem* pItem = (QMdfTreeWidgetItem*)ui->treeMDF->currentItem(); + if (nullptr == pItem) { menu->addAction(QString(tr("Fetch MDF")), this, SLOT(loadSelectedMdf())); menu->addAction(QString(tr("Fetch ALL MDF")), this, SLOT(loadAllMdf())); @@ -282,7 +292,11 @@ CFrmMdf::showMdfContextMenu(const QPoint& pos) break; case mdf_type_mdf: - menu->addAction(QString(tr("MDF")), this, SLOT(loadSelectedMdf())); + menu->addAction(QString(tr("Edit")), this, SLOT(editModuleData())); + break; + + case mdf_type_mdf_item: + menu->addAction(QString(tr("Edit")), this, SLOT(editModuleData())); break; case mdf_type_value: @@ -462,19 +476,19 @@ CFrmMdf::showMdfContextMenu(const QPoint& pos) break; case mdf_type_generic_description: - menu->addAction(QString(tr("description")), this, SLOT(loadSelectedMdf())); + menu->addAction(QString(tr("Edit Descriptions")), this, SLOT(editDescription())); break; case mdf_type_generic_description_item: - menu->addAction(QString(tr("description item")), this, SLOT(loadSelectedMdf())); + menu->addAction(QString(tr("Edit Description")), this, SLOT(editDescription())); break; case mdf_type_generic_help_url: - menu->addAction(QString(tr("help url")), this, SLOT(loadSelectedMdf())); + menu->addAction(QString(tr("Edit Info URL's")), this, SLOT(editInfoUrl())); break; case mdf_type_generic_help_url_item: - menu->addAction(QString(tr("help url item")), this, SLOT(loadSelectedMdf())); + menu->addAction(QString(tr("Edit Info URL")), this, SLOT(editInfoUrl())); break; default: @@ -491,24 +505,33 @@ CFrmMdf::showMdfContextMenu(const QPoint& pos) // void -CFrmMdf::fillDescriptionItems(QTreeWidgetItem* pParent, std::map* pObjMap) +CFrmMdf::fillDescriptionItems(QTreeWidgetItem* pParent, CMDF_Object* pobj, std::map* pObjMap, bool bChildIsKnown) { QString str; + QMdfTreeWidgetItem* pItemModuleDescription; QMdfTreeWidgetItem* pItem; -https: // www.facebook.com/v10.0/dialog/share?app_id=69103156693&channel_url=https%3A%2F%2Fstaticxx.facebook.com%2Fx%2Fconnect%2Fxd_arbiter%2F%3Fversion%3D46%23cb%3Df150d58de1db8e4%26domain%3Dwww.kickstarter.com%26is_canvas%3Dfalse%26origin%3Dhttps%253A%252F%252Fwww.kickstarter.com%252Ffe4a197826998%26relation%3Dopener&display=popup&e2e=%7B%7D&fallback_redirect_uri=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2Ffolkparksminnen60-99%2Ffolkparksminnen%3Ffbclid%3DIwAR2INbiHAcN1yOkmITEWLu_t0m3KC6et_gZUFpPQhuqO9UhYd_Xr1dLzW4Q&href=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2Ffolkparksminnen60-99%2Ffolkparksminnen%3Fref%3Dproject_facebook&locale=en_US&next=https%3A%2F%2Fstaticxx.facebook.com%2Fx%2Fconnect%2Fxd_arbiter%2F%3Fversion%3D46%23cb%3Df293d257f56a6d8%26domain%3Dwww.kickstarter.com%26is_canvas%3Dfalse%26origin%3Dhttps%253A%252F%252Fwww.kickstarter.com%252Ffe4a197826998%26relation%3Dopener%26frame%3Df133ebcd98d41c8%26result%3D%2522xxRESULTTOKENxx%2522&sdk=joey&version=v10.0 // Must be valid pointer if (nullptr == pParent) { return; } + if (nullptr == pobj) { + return; + } + if (nullptr == pObjMap) { return; } - QMdfTreeWidgetItem* pItemModuleDescription = new QMdfTreeWidgetItem(pParent, mdf_type_generic_description); - pItemModuleDescription->setText(0, "Description"); - pParent->addChild(pItemModuleDescription); + if (!bChildIsKnown) { + pItemModuleDescription = new QMdfTreeWidgetItem(pParent, pobj, mdf_type_generic_description); + pItemModuleDescription->setText(0, "Description"); + pParent->addChild(pItemModuleDescription); + } + else { + pItemModuleDescription = (QMdfTreeWidgetItem*)pParent; + } // Must be items to fill in childs if (!pObjMap->size()) { @@ -518,7 +541,7 @@ CFrmMdf::fillDescriptionItems(QTreeWidgetItem* pParent, std::map* pmap = pObjMap; for (auto const& x : *pmap) { str = x.first.c_str() + QString(": ") + x.second.c_str(); - pItem = new QMdfTreeWidgetItem(pItemModuleDescription, mdf_type_generic_description_item); + pItem = new QMdfTreeWidgetItem(pItemModuleDescription, pobj, mdf_type_generic_description_item); pItem->setText(0, str); pParent->addChild(pItem); } @@ -529,9 +552,10 @@ CFrmMdf::fillDescriptionItems(QTreeWidgetItem* pParent, std::map* pObjMap) +CFrmMdf::fillHelpUrlItems(QTreeWidgetItem* pParent, CMDF_Object* pobj, std::map* pObjMap, bool bChildIsKnown) { QString str; + QMdfTreeWidgetItem* pItemModuleHelpUrl; QMdfTreeWidgetItem* pItem; // Must be valid pointer @@ -539,13 +563,22 @@ CFrmMdf::fillHelpUrlItems(QTreeWidgetItem* pParent, std::mapsetText(0, "Help/Info URL"); - pParent->addChild(pItemModuleHelpUrl); + if (!bChildIsKnown) { + pItemModuleHelpUrl = new QMdfTreeWidgetItem(pParent, pobj, mdf_type_generic_help_url); + pItemModuleHelpUrl->setText(0, "Help/Info URL"); + pParent->addChild(pItemModuleHelpUrl); + } + else { + pItemModuleHelpUrl = (QMdfTreeWidgetItem*)pParent; + } // Must be items to fill in childs if (!pObjMap->size()) { @@ -555,7 +588,7 @@ CFrmMdf::fillHelpUrlItems(QTreeWidgetItem* pParent, std::map* pmap = pObjMap; for (auto const& x : *pmap) { str = x.first.c_str() + QString(": ") + x.second.c_str(); - pItem = new QMdfTreeWidgetItem(pItemModuleHelpUrl, mdf_type_generic_help_url_item); + pItem = new QMdfTreeWidgetItem(pItemModuleHelpUrl, pobj, mdf_type_generic_help_url_item); pItem->setText(0, str); pParent->addChild(pItem); } @@ -650,10 +683,10 @@ CFrmMdf::fillBitInfo(QTreeWidgetItem* pParent, std::deque& dequebits) fillValueInfo(pItemParent, *pbit->getListValues()); // Descriptions - fillDescriptionItems(pItemParent, pbit->getMapDescription()); + fillDescriptionItems(pItemParent, pbit, pbit->getMapDescription()); // Info URL's - fillHelpUrlItems(pItemParent, pbit->getMapDescription()); + fillHelpUrlItems(pItemParent, pbit, pbit->getMapDescription()); } } @@ -705,10 +738,10 @@ CFrmMdf::fillValueInfo(QTreeWidgetItem* pParent, std::deque& dequev pItemValue->addChild(pItem); // Descriptions - fillDescriptionItems(pItemParent, pvalue->getMapDescription()); + fillDescriptionItems(pItemParent, pvalue, pvalue->getMapDescription()); // Info URL's - fillHelpUrlItems(pItemParent, pvalue->getMapDescription()); + fillHelpUrlItems(pItemParent, pvalue, pvalue->getMapDescription()); } } @@ -849,10 +882,10 @@ CFrmMdf::fillRegisterInfo(QTreeWidgetItem* pParent, CMDF_Register* preg) fillValueInfo(pParent, *preg->getListValues()); // Descriptions - fillDescriptionItems(pParent, preg->getMapDescription()); + fillDescriptionItems(pParent, preg, preg->getMapDescription()); // Info URL's - fillHelpUrlItems(pParent, preg->getMapDescription()); + fillHelpUrlItems(pParent, preg, preg->getMapDescription()); } /////////////////////////////////////////////////////////////////////////////// @@ -886,46 +919,47 @@ CFrmMdf::loadMdf(void) pItemModule->setFont(0, fontTopItem); pItemModule->setForeground(0, blueBrush); pItemModule->setText(0, tr("Module")); - pItemModule->setObject(&m_mdf); + // pItemModule->setObject(&m_mdf); ui->treeMDF->addTopLevelItem(pItemModule); + pItemModule->setExpanded(true); // Module information - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_string); - pItem->setText(0, QString("Name: ") + m_mdf.getModuleName().c_str()); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_name); + pItem->setText(0, PREFIX_MDF_MODULE_NAME + m_mdf.getModuleName().c_str()); pItemModule->addChild(pItem); - str = QString("Copyright: ") + m_mdf.getModuleCopyright().c_str(); - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_string); + str = PREFIX_MDF_MODULE_MODEL + QString(m_mdf.getModuleModel().c_str()); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_model); pItem->setText(0, str); pItemModule->addChild(pItem); - str = QString("Change Date: ") + m_mdf.getModuleChangeDate().c_str(); - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_string); + str = PREFIX_MDF_MODULE_LEVEL + QString::number(m_mdf.getModuleLevel() + 1); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_level); pItem->setText(0, str); pItemModule->addChild(pItem); - str = "VSCP Level: " + QString::number(m_mdf.getModuleLevel() + 1); - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_number); + str = PREFIX_MDF_MODULE_VERSION + QString(m_mdf.getModuleVersion().c_str()); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_version); pItem->setText(0, str); pItemModule->addChild(pItem); - str = "Model: " + QString(m_mdf.getModuleModel().c_str()); - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_string); + str = PREFIX_MDF_MODULE_CHANGE_DATE + m_mdf.getModuleChangeDate().c_str(); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_change_date); pItem->setText(0, str); pItemModule->addChild(pItem); - str = "Version: " + QString(m_mdf.getModuleVersion().c_str()); - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_string); + str = PREFIX_MDF_MODULE_BUFFER_SIZE + QString::number(m_mdf.getModuleBufferSize()); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_buffer_size); pItem->setText(0, str); pItemModule->addChild(pItem); - str = "Buffer size: " + QString::number(m_mdf.getModuleBufferSize()); - pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_generic_number); + str = PREFIX_MDF_MODULE_COPYRIGHT + m_mdf.getModuleCopyright().c_str(); + pItem = new QMdfTreeWidgetItem(pItemModule, &m_mdf, mdf_type_mdf_item, index_module_copyright); pItem->setText(0, str); pItemModule->addChild(pItem); - fillDescriptionItems(pItemModule, m_mdf.getModuleDescriptionMap()); - fillHelpUrlItems(pItemModule, m_mdf.getModuleHelpUrlMap()); + fillDescriptionItems(pItemModule, &m_mdf, m_mdf.getModuleDescriptionMap()); + fillHelpUrlItems(pItemModule, &m_mdf, m_mdf.getModuleHelpUrlMap()); // * * * Manufacturer info * * * @@ -988,8 +1022,8 @@ CFrmMdf::loadMdf(void) pItem = new QMdfTreeWidgetItem(pItemManufacturer, mdf_type_email); pItem->setText(0, str); pItemModule->addChild(pItem); - fillDescriptionItems(pItem, pManufacturer->getEmailObj()->getDescriptionMap()); - fillHelpUrlItems(pItem, pManufacturer->getEmailObj()->getInfoUrlMap()); + fillDescriptionItems(pItem, pManufacturer->getEmailObj(), pManufacturer->getEmailObj()->getDescriptionMap()); + fillHelpUrlItems(pItem, pManufacturer->getEmailObj(), pManufacturer->getEmailObj()->getInfoUrlMap()); } } while (nullptr != pItemEmail); @@ -1003,8 +1037,8 @@ CFrmMdf::loadMdf(void) pItem = new QMdfTreeWidgetItem(pItemManufacturer, mdf_type_phone); pItem->setText(0, str); pItemModule->addChild(pItem); - fillDescriptionItems(pItem, pManufacturer->getPhoneObj()->getDescriptionMap()); - fillHelpUrlItems(pItem, pManufacturer->getPhoneObj()->getInfoUrlMap()); + fillDescriptionItems(pItem, pManufacturer->getPhoneObj(), pManufacturer->getPhoneObj()->getDescriptionMap()); + fillHelpUrlItems(pItem, pManufacturer->getPhoneObj(), pManufacturer->getPhoneObj()->getInfoUrlMap()); } } while (nullptr != pItemPhone); @@ -1018,8 +1052,8 @@ CFrmMdf::loadMdf(void) pItem = new QMdfTreeWidgetItem(pItemManufacturer, mdf_type_fax); pItem->setText(0, str); pItemModule->addChild(pItem); - fillDescriptionItems(pItem, pManufacturer->getFaxObj()->getDescriptionMap()); - fillHelpUrlItems(pItem, pManufacturer->getFaxObj()->getInfoUrlMap()); + fillDescriptionItems(pItem, pManufacturer->getFaxObj(), pManufacturer->getFaxObj()->getDescriptionMap()); + fillHelpUrlItems(pItem, pManufacturer->getFaxObj(), pManufacturer->getFaxObj()->getInfoUrlMap()); } } while (nullptr != pItemFax); @@ -1033,8 +1067,8 @@ CFrmMdf::loadMdf(void) pItem = new QMdfTreeWidgetItem(pItemManufacturer, mdf_type_web); pItem->setText(0, str); pItemModule->addChild(pItem); - fillDescriptionItems(pItem, pManufacturer->getWebObj()->getDescriptionMap()); - fillHelpUrlItems(pItem, pManufacturer->getWebObj()->getInfoUrlMap()); + fillDescriptionItems(pItem, pManufacturer->getWebObj(), pManufacturer->getWebObj()->getDescriptionMap()); + fillHelpUrlItems(pItem, pManufacturer->getWebObj(), pManufacturer->getWebObj()->getInfoUrlMap()); } } while (nullptr != pItemWeb); @@ -1048,8 +1082,8 @@ CFrmMdf::loadMdf(void) pItem = new QMdfTreeWidgetItem(pItemManufacturer, mdf_type_social); pItem->setText(0, str); pItemModule->addChild(pItem); - fillDescriptionItems(pItem, pManufacturer->getSocialObj()->getDescriptionMap()); - fillHelpUrlItems(pItem, pManufacturer->getSocialObj()->getInfoUrlMap()); + fillDescriptionItems(pItem, pManufacturer->getSocialObj(), pManufacturer->getSocialObj()->getDescriptionMap()); + fillHelpUrlItems(pItem, pManufacturer->getSocialObj(), pManufacturer->getSocialObj()->getInfoUrlMap()); } } while (nullptr != pItemSocial); } @@ -1138,8 +1172,8 @@ CFrmMdf::loadMdf(void) pItem->addChild(pSubItem); } - fillDescriptionItems(pItem, pManualObj->getMapDescription()); - fillHelpUrlItems(pItem, pManualObj->getMapInfoUrl()); + fillDescriptionItems(pItem, pManualObj, pManualObj->getMapDescription()); + fillHelpUrlItems(pItem, pManualObj, pManualObj->getMapInfoUrl()); } index++; @@ -1191,8 +1225,8 @@ CFrmMdf::loadMdf(void) pItem->addChild(pSubItem); } - fillDescriptionItems(pItem, pPictureObj->getMapDescription()); - fillHelpUrlItems(pItem, pPictureObj->getMapInfoUrl()); + fillDescriptionItems(pItem, pPictureObj, pPictureObj->getMapDescription()); + fillHelpUrlItems(pItem, pPictureObj, pPictureObj->getMapInfoUrl()); } index++; @@ -1244,8 +1278,8 @@ CFrmMdf::loadMdf(void) pItem->addChild(pSubItem); } - fillDescriptionItems(pItem, pVideoObj->getMapDescription()); - fillHelpUrlItems(pItem, pVideoObj->getMapInfoUrl()); + fillDescriptionItems(pItem, pVideoObj, pVideoObj->getMapDescription()); + fillHelpUrlItems(pItem, pVideoObj, pVideoObj->getMapInfoUrl()); } index++; @@ -1339,8 +1373,8 @@ CFrmMdf::loadMdf(void) pItem->addChild(pSubItem); } - fillDescriptionItems(pItem, pFirmwareObj->getMapDescription()); - fillHelpUrlItems(pItem, pFirmwareObj->getMapInfoUrl()); + fillDescriptionItems(pItem, pFirmwareObj, pFirmwareObj->getMapDescription()); + fillHelpUrlItems(pItem, pFirmwareObj, pFirmwareObj->getMapInfoUrl()); } index++; @@ -1434,8 +1468,8 @@ CFrmMdf::loadMdf(void) pItem->addChild(pSubItem); } - fillDescriptionItems(pItem, pDriverObj->getMapDescription()); - fillHelpUrlItems(pItem, pDriverObj->getMapInfoUrl()); + fillDescriptionItems(pItem, pDriverObj, pDriverObj->getMapDescription()); + fillHelpUrlItems(pItem, pDriverObj, pDriverObj->getMapInfoUrl()); } index++; @@ -1489,8 +1523,8 @@ CFrmMdf::loadMdf(void) pItem->addChild(pSubItem); } - fillDescriptionItems(pItem, pSetupObj->getMapDescription()); - fillHelpUrlItems(pItem, pSetupObj->getMapInfoUrl()); + fillDescriptionItems(pItem, pSetupObj, pSetupObj->getMapDescription()); + fillHelpUrlItems(pItem, pSetupObj, pSetupObj->getMapInfoUrl()); } index++; @@ -1654,10 +1688,10 @@ CFrmMdf::loadMdf(void) fillValueInfo(pSubItem, *pvar->getListValues()); // Descriptions - fillDescriptionItems(pSubItem, pvar->getMapDescription()); + fillDescriptionItems(pSubItem, pvar, pvar->getMapDescription()); // Info URL's - fillHelpUrlItems(pSubItem, pvar->getMapDescription()); + fillHelpUrlItems(pSubItem, pvar, pvar->getMapDescription()); } } } @@ -1810,19 +1844,19 @@ CFrmMdf::loadMdf(void) fillValueInfo(pActionParamItem, *pactionparam->getListValues()); // Descriptions - fillDescriptionItems(pActionParamItem, pactionparam->getMapDescription()); + fillDescriptionItems(pActionParamItem, pactionparam, pactionparam->getMapDescription()); // Info URL's - fillHelpUrlItems(pActionParamItem, pactionparam->getMapDescription()); + fillHelpUrlItems(pActionParamItem, pactionparam, pactionparam->getMapDescription()); } } } // Descriptions - fillDescriptionItems(pSubItemAction, paction->getMapDescription()); + fillDescriptionItems(pSubItemAction, paction, paction->getMapDescription()); // Info URL's - fillHelpUrlItems(pSubItemAction, paction->getMapDescription()); + fillHelpUrlItems(pSubItemAction, paction, paction->getMapDescription()); } } @@ -1933,19 +1967,19 @@ CFrmMdf::loadMdf(void) fillValueInfo(pEventSubItem, *pEventData->getListValues()); // Descriptions - fillDescriptionItems(pEventSubItem, pEventData->getMapDescription()); + fillDescriptionItems(pEventSubItem, pEventData, pEventData->getMapDescription()); // Info URL's - fillHelpUrlItems(pEventSubItem, pEventData->getMapDescription()); + fillHelpUrlItems(pEventSubItem, pEventData, pEventData->getMapDescription()); } } // EventDataList } // list exist // Descriptions - fillDescriptionItems(pSubItem, pevent->getMapDescription()); + fillDescriptionItems(pSubItem, pevent, pevent->getMapDescription()); // Info URL's - fillHelpUrlItems(pSubItem, pevent->getMapDescription()); + fillHelpUrlItems(pSubItem, pevent, pevent->getMapDescription()); } } } // EventList @@ -2046,7 +2080,10 @@ CFrmMdf::onItemDoubleClicked(QTreeWidgetItem* item, int column) case mdf_type_mdf: str = tr("MDF"); - + break; + + case mdf_type_mdf_item: + str = tr("MDF item"); break; case mdf_type_value: @@ -2246,7 +2283,357 @@ CFrmMdf::onItemDoubleClicked(QTreeWidgetItem* item, int column) break; } - QMessageBox msgBox; - msgBox.setText(str); - msgBox.exec(); + // QMessageBox msgBox; + // msgBox.setText(str); + // msgBox.exec(); + ui->statusbar->showMessage(str, 1000); +} + +/////////////////////////////////////////////////////////////////////////////// +// findMdfWidgetItem +// + +QMdfTreeWidgetItem* +CFrmMdf::findMdfWidgetItem(QMdfTreeWidgetItem* pItem, mdf_record_type type) +{ + QMdfTreeWidgetItem* piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItem); + while (nullptr != piter) { + + if (type == piter->getObjectType()) { + return piter; + } + + piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(piter); + } + + return nullptr; +} + +////////////////////////////////////////////////////////////////////////////// +// findDocumentType +// + +int +CFrmMdf::deleteMdfWidgetChildItems(QMdfTreeWidgetItem* pItem, mdf_record_type type) +{ + bool bExpanded; + int cnt = 0; + + // Check pointer + if (nullptr == pItem) { + return 0; + } + + // Save expansion state + bExpanded = pItem->isExpanded(); + + // Expand to make traversion possible + pItem->setExpanded(true); + + QMdfTreeWidgetItem* piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItem); + while (type == piter->getObjectType()) { + pItem->removeChild(piter); + delete piter; + cnt++; + piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItem); + } + + // Restore expansion + pItem->setExpanded(bExpanded); + + return cnt; +} + +/////////////////////////////////////////////////////////////////////////////// +// editModuleData +// + +void +CFrmMdf::editModuleData() +{ + QMdfTreeWidgetItem* pItemModule = nullptr; // Pointer to module top item + QMdfTreeWidgetItem* pItemDescription = nullptr; // Pointer to description top item + QMdfTreeWidgetItem* pItemItemInfoURL = nullptr; // Pointer to info URL top item + QMdfTreeWidgetItem* pItem = (QMdfTreeWidgetItem*)ui->treeMDF->currentItem(); + + // Item must be selected + if (nullptr == pItem) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("No MDF module item selected")); + return; + } + + // Must have an object + if (nullptr == pItem->getObject()) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Internal error: Invalid module object")); + spdlog::error("MDF module edit - object has nullptr"); + return; + } + + // Must be correct object type + if ((mdf_type_mdf != pItem->getObjectType()) && (mdf_type_mdf_item != pItem->getObjectType())) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("This is not a module item")); + spdlog::error("MDF module edit - Not a module item"); + return; + } + + // Set pointer to module top item + if (mdf_type_mdf == pItem->getObjectType()) { + + pItemModule = pItem; + + // Make sure it is expanded + pItem->setExpanded(true); + } + else if (mdf_type_mdf_item == pItem->getObjectType()) { + pItemModule = (QMdfTreeWidgetItem*)pItem->parent(); + } + else { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Invalid module top item object type")); + spdlog::error("MDF module edit - Invalid module top item object type"); + return; + } + + // piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItemModule); + // do { + // if (nullptr == piter) + // return nullptr; + // if( (mdf_type_generic_description == piter->getObjectType()) { + // return piter; + // } + // piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(piter); + // while (mdf_type_mdf_item == piter->getObjectType()); + + pItemDescription = findMdfWidgetItem(pItemModule, mdf_type_generic_description); // findDocumentItem(pItemModule); + pItemItemInfoURL = findMdfWidgetItem(pItemModule, mdf_type_generic_help_url); // findInfoUrlItem(pItemModule); + + CDlgMdfModule dlg(this); + dlg.initDialogData(pItem->getObject(), static_cast(pItem->getElementIndex())); + + if (QDialog::Accepted == dlg.exec()) { + // Update Module items + + QMdfTreeWidgetItem* piter = nullptr; + // if (nullptr != pItem->parent()) { + + // // Module sub item selected + // piter = (QMdfTreeWidgetItem*)pItem->parent(); + + // // QMdfTreeWidgetItem* pitemBelow = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItem->parent()); + // // if (nullptr != pitemBelow) { + // // ui->statusbar->showMessage(pitemBelow->text(0), 3000); + // // piter = (QMdfTreeWidgetItem*)pItem->parent(); + // // } + // } + // else { + + // // Module top item selected + // // ui->statusbar->showMessage(pItem->text(0), 3000); + // piter = (QMdfTreeWidgetItem*)pItem; + + // // QMdfTreeWidgetItem* pitemBelow = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItem); + // // if (nullptr != pitemBelow) { + // // ui->statusbar->showMessage(pitemBelow->text(0), 3000); + // // piter = (QMdfTreeWidgetItem*)pItem->parent(); + // // } + // } + + // Protect against a null pointer + // if (nullptr == piter) { + // int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Invalid NULL module item")); + // spdlog::error("MDF module edit - module item has nullptr"); + // return; + // } + + // Iterate over module items and update ui + piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItemModule); + do { + + switch (piter->getElementIndex()) { + + case index_module_name: + piter->setText(0, PREFIX_MDF_MODULE_NAME + m_mdf.getModuleName().c_str()); + break; + + case index_module_model: + piter->setText(0, PREFIX_MDF_MODULE_MODEL + m_mdf.getModuleModel().c_str()); + break; + + case index_module_level: { + QString str = "%1"; + str = PREFIX_MDF_MODULE_LEVEL + str.arg(m_mdf.getModuleLevel() + 1); + piter->setText(0, str); + } break; + + case index_module_version: + piter->setText(0, PREFIX_MDF_MODULE_VERSION + m_mdf.getModuleVersion().c_str()); + break; + + case index_module_change_date: + piter->setText(0, PREFIX_MDF_MODULE_CHANGE_DATE + m_mdf.getModuleChangeDate().c_str()); + break; + + case index_module_buffer_size: { + QString str; + str = PREFIX_MDF_MODULE_BUFFER_SIZE + str.arg(m_mdf.getModuleBufferSize()); + piter->setText(0, str); + } break; + + case index_module_copyright: // Copyright + piter->setText(0, PREFIX_MDF_MODULE_COPYRIGHT + m_mdf.getModuleCopyright().c_str()); + break; + + default: // Hmmmm.-.. unkown field index + break; + } + + piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(piter); + } while (mdf_type_mdf_item == piter->getObjectType()); + + // Find module descriptions + int n = piter->childCount(); + if (mdf_type_generic_description == piter->getObjectType()) { + piter->setExpanded(false); + n = ui->treeMDF->indexOfTopLevelItem(piter); + n = ui->treeMDF->topLevelItemCount(); + n = n + 1; + } + + deleteMdfWidgetChildItems(pItemDescription, mdf_type_generic_description_item); + fillDescriptionItems(pItemDescription, &m_mdf, m_mdf.getModuleDescriptionMap(), true); + + deleteMdfWidgetChildItems(pItemItemInfoURL, mdf_type_generic_help_url_item); + fillHelpUrlItems(pItemItemInfoURL, &m_mdf, m_mdf.getModuleHelpUrlMap(), true); + + } // accept +} + +/////////////////////////////////////////////////////////////////////////////// +// editDescription +// + +void +CFrmMdf::editDescription() +{ + QString selstr = ""; + QMdfTreeWidgetItem* pItemDescription = nullptr; // Pointer to description top item + QMdfTreeWidgetItem* pItem = (QMdfTreeWidgetItem*)ui->treeMDF->currentItem(); + + // Item must be selected + if (nullptr == pItem) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("No MDF description item selected")); + return; + } + + // Must have an object + if (nullptr == pItem->getObject()) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Internal error: Invalid module object")); + spdlog::error("MDF module edit - object has nullptr"); + return; + } + + // Must be correct object type + if ((mdf_type_generic_description != pItem->getObjectType()) && (mdf_type_generic_description_item != pItem->getObjectType())) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("This is not a module description item")); + spdlog::error("MDF module edit - Not a module item"); + return; + } + + // Set pointer to module top item + if (mdf_type_generic_description == pItem->getObjectType()) { + + pItemDescription = pItem; + + // Make sure it is expanded + pItemDescription->setExpanded(true); + } + else if (mdf_type_generic_description_item == pItem->getObjectType()) { + pItemDescription = (QMdfTreeWidgetItem*)pItem->parent(); + selstr = pItem->text(0).split('_').first().left(2); + } + else { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Invalid module top item object type")); + spdlog::error("MDF module edit - Invalid module top item object type"); + return; + } + + // Iterate over module items and update ui + QMdfTreeWidgetItem* piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItemDescription); + + CDlgEditMap dlg(this); + dlg.initDialogData(m_mdf.getModuleDescriptionMap(), map_type_description, &selstr); + + if (QDialog::Accepted == dlg.exec()) { + // Update Module items + deleteMdfWidgetChildItems(pItemDescription, mdf_type_generic_description_item); + fillDescriptionItems(pItemDescription, &m_mdf, m_mdf.getModuleDescriptionMap(), true); + + QMdfTreeWidgetItem* piter = nullptr; + + } +} + +/////////////////////////////////////////////////////////////////////////////// +// editInfoUrl +// + +void +CFrmMdf::editInfoUrl() +{ + QString selstr = ""; + QMdfTreeWidgetItem* pItemInfoUrl = nullptr; // Pointer to info url top item + QMdfTreeWidgetItem* pItem = (QMdfTreeWidgetItem*)ui->treeMDF->currentItem(); + + // Item must be selected + if (nullptr == pItem) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("No MDF info url item selected")); + return; + } + + // Must have an object + if (nullptr == pItem->getObject()) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Internal error: Invalid module object")); + spdlog::error("MDF module edit - object has nullptr"); + return; + } + + // Must be correct object type + if ((mdf_type_generic_help_url!= pItem->getObjectType()) && (mdf_type_generic_help_url_item != pItem->getObjectType())) { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("This is not a module help url item")); + spdlog::error("MDF module edit - Not a module item"); + return; + } + + // Set pointer to module top item + if (mdf_type_generic_help_url== pItem->getObjectType()) { + + pItemInfoUrl = pItem; + + // Make sure it is expanded + pItemInfoUrl->setExpanded(true); + } + else if (mdf_type_generic_help_url_item == pItem->getObjectType()) { + pItemInfoUrl = (QMdfTreeWidgetItem*)pItem->parent(); + selstr = pItem->text(0).split('_').first().left(2); + } + else { + int ret = QMessageBox::critical(this, tr("MDF module edit"), tr("Invalid module top item object type")); + spdlog::error("MDF module edit - Invalid module top item object type"); + return; + } + + // Iterate over module items and update ui + QMdfTreeWidgetItem* piter = (QMdfTreeWidgetItem*)ui->treeMDF->itemBelow(pItemInfoUrl); + + CDlgEditMap dlg(this); + dlg.initDialogData(m_mdf.getModuleHelpUrlMap(), map_type_info_url, &selstr); + + if (QDialog::Accepted == dlg.exec()) { + + // Update Module items + deleteMdfWidgetChildItems(pItemInfoUrl, mdf_type_generic_help_url_item); + fillHelpUrlItems(pItemInfoUrl, &m_mdf, m_mdf.getModuleHelpUrlMap(), true); + + QMdfTreeWidgetItem* piter = nullptr; + + } } \ No newline at end of file diff --git a/src/cfrmmdf.h b/src/cfrmmdf.h index dcba276c..d5eec576 100644 --- a/src/cfrmmdf.h +++ b/src/cfrmmdf.h @@ -78,55 +78,57 @@ class CFrmMdf; /*! Class that represent a row in the TX list */ -class QMdfTreeWidgetItem : public QTreeWidgetItem -{ - - public: - - QMdfTreeWidgetItem(const QString& text); - QMdfTreeWidgetItem(mdf_record_type objtype); - QMdfTreeWidgetItem(CMDF_Object *pobj, mdf_record_type objtype); - QMdfTreeWidgetItem(QTreeWidgetItem* parent, mdf_record_type objtype); - QMdfTreeWidgetItem(QTreeWidgetItem* parent, CMDF_Object *pobj, mdf_record_type objtype); - virtual ~QMdfTreeWidgetItem(); - - /*! - Get MDF object type - @return Return MDF object type - */ - mdf_record_type getObjectType(void) { return m_objType; /*(type() - QTreeWidgetItem::UserType);*/ }; - - /*! - Set MDF object type - @param type MDF object type - */ - void setObjectType(mdf_record_type objtype) { m_objType = objtype;}; - - /*! - Get index for element - @return Return element index - */ - uint16_t getElementIndex(void) { return m_fieldIndex; }; - - /*! - Set index for element - @param idx Element index used or direct editing - */ - void setElementIndex(uint16_t idx) { m_fieldIndex = idx;}; - - /*! - Get MDF object - @return Return pointer to MDF object - */ - CMDF_Object *getObject(void) { return m_pMdfRecord; }; - - /*! - Set pointer to MDF object - @param pobj Pointer to MDF object - */ - void setObject(CMDF_Object *pobj) { m_pMdfRecord = pobj;}; - - private: +class QMdfTreeWidgetItem : public QTreeWidgetItem { + +public: + QMdfTreeWidgetItem(const QString& text); + QMdfTreeWidgetItem(mdf_record_type objtype); + QMdfTreeWidgetItem(CMDF_Object* pobj, mdf_record_type objtype, uint16_t index = 0); + QMdfTreeWidgetItem(QTreeWidgetItem* parent, mdf_record_type objtype); + QMdfTreeWidgetItem(QTreeWidgetItem* parent, CMDF_Object* pobj, mdf_record_type objtype, uint16_t index = 0); + virtual ~QMdfTreeWidgetItem(); + + /*! + Get MDF object type + @return Return MDF object type + */ + mdf_record_type getObjectType(void) { return m_objType; }; + + /*! + Set MDF object type + @param type MDF object type + */ + void setObjectType(mdf_record_type objtype) { m_objType = objtype; }; + + /*! + Get index for element + @return Return element index + */ + uint16_t getElementIndex(void) { return m_fieldIndex; }; + + /*! + Set index for element + @param idx Element index used or direct editing + */ + void setElementIndex(uint16_t idx) { m_fieldIndex = idx; }; + + /*! + Get MDF object + @return Return pointer to MDF object + */ + CMDF_Object* getObject(void) { return m_pMdfRecord; }; + + /*! + Set pointer to MDF object + @param pobj Pointer to MDF object + */ + void setObject(CMDF_Object* pobj) { m_pMdfRecord = pobj; }; + +private: + /*! + This is a pointer to a special object for certain types + */ + // void *m_pSpecialObj; /*! This is the index for fields of a record. @@ -136,7 +138,7 @@ class QMdfTreeWidgetItem : public QTreeWidgetItem /*! Pointer to MDF record */ - CMDF_Object *m_pMdfRecord; + CMDF_Object* m_pMdfRecord; /*! Pointer to MDF record @@ -174,28 +176,47 @@ public slots: void showMdfContextMenu(const QPoint& pos); /// Item has been clicked - void onItemClicked(QTreeWidgetItem *item, int column); + void onItemClicked(QTreeWidgetItem* item, int column); /// Item has been double clicked - void onItemDoubleClicked(QTreeWidgetItem *item, int column); + void onItemDoubleClicked(QTreeWidgetItem* item, int column); + + /// Edit MDF module data + void editModuleData(void); + + /// Edit MDF descriptions + void editDescription(void); + + /// Edit MDF info URL's + void editInfoUrl(void); /*! Fill in data from info map as children to parent item - @param parent Pointer to parent treewidget + @param parent Pointer to parent treewidget (or description head) + @param pobj MDF object @param pObjMap Pointer to map holding descriptions in different languages + @param bChildIsKnown Set to true of pParent points to description head */ void - fillDescriptionItems(QTreeWidgetItem* pParent, std::map* pObjMap); + fillDescriptionItems(QTreeWidgetItem* pParent, + CMDF_Object* pobj, + std::map* pObjMap, + bool bChildIsKnown = false); /*! Fill in data from help URL map as children to parent item - @param parent Pointer to parent treewidget - @param pObjMap Pointer to map holding indo URL's in different languages + @param parent Pointer to parent treewidget (or ino URL head) + @param pobj MDF object + @param pObjMap Pointer to map holding info URL's in different languages + @param bChildIsKnown Set to true of pParent points to info URL head */ void - fillHelpUrlItems(QTreeWidgetItem* pParent, std::map* pObjMap); + fillHelpUrlItems(QTreeWidgetItem* pParent, + CMDF_Object* pobj, + std::map* pObjMap, + bool bChildIsKnown = false); /*! Fill bit list info @@ -203,7 +224,7 @@ public slots: @param dequebits Reference for std:deque holding bit infor objects */ void - fillBitInfo(QTreeWidgetItem* pParent, std::deque &dequebits); + fillBitInfo(QTreeWidgetItem* pParent, std::deque& dequebits); /*! Fill value list info @@ -221,7 +242,7 @@ public slots: @preg Pointer to register definition */ void - fillRegisterInfo(QTreeWidgetItem* pParent, CMDF_Register *preg); + fillRegisterInfo(QTreeWidgetItem* pParent, CMDF_Register* preg); /// Do the new operation void newMdf(void); @@ -232,6 +253,24 @@ public slots: /// Load MDF for selected node void loadMdf(void); + /*! + Find next MDF type item in tree + @param Pointer to MDF widget item + @param type MDF item type to search for + @return Pointer to item if found or + null pointer if not found. + */ + QMdfTreeWidgetItem* findMdfWidgetItem(QMdfTreeWidgetItem* pItem, mdf_record_type type); + + /*! + Delete all child items of a specific MDF type + @param Pointer to MDF widget item + @param type MDF item type to search for + @return Return number of items that been deleted. + */ + + int deleteMdfWidgetChildItems(QMdfTreeWidgetItem* pItem, mdf_record_type type); + signals: private: @@ -242,7 +281,7 @@ public slots: CMDF m_mdf; // The statusbar - QStatusBar *m_bar; + QStatusBar* m_bar; }; #endif // CFrmMdf_H diff --git a/src/cfrmmdf.ui b/src/cfrmmdf.ui index b26340c8..921cae33 100644 --- a/src/cfrmmdf.ui +++ b/src/cfrmmdf.ui @@ -234,6 +234,7 @@ &Edit + @@ -287,6 +288,17 @@ E&xpand all + + Ctrl+A + + + + + Edit item + + + Ctrl+E + diff --git a/src/copy.svg b/src/copy.svg new file mode 100644 index 00000000..a80c995a --- /dev/null +++ b/src/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/iso639.h b/src/iso639.h new file mode 100644 index 00000000..1a8738af --- /dev/null +++ b/src/iso639.h @@ -0,0 +1,225 @@ +// iso639.h +// +// This file is part of the VSCP (https://www.vscp.org) +// +// The MIT License (MIT) +// +// Copyright © 2000-2023 Ake Hedman, Grodans Paradis AB +// +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the \"Software\"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +// https://datahub.io/core/language-codes +// https://gist.github.com/jrnk/8eb57b065ea0b098d571 +// https://github.com/haliaeetus/iso-639/tree/master/data + +//define ISO639 + +typedef struct { + QString code; // Language code + QString name; // Language name + QString native; // Native language name +} _iso639; + +_iso639 iso639[] = { +{"ab","Abkhaz","аҧсуа"}, +{"aa","Afar","Afaraf"}, +{"af","Afrikaans","Afrikaans"}, +{"ak","Akan","Akan"}, +{"sq","Albanian","Shqip"}, +{"am","Amharic","አማርኛ"}, +{"ar","Arabic","العربية"}, +{"an","Aragonese","Aragonés"}, +{"hy","Armenian","Հայերեն"}, +{"as","Assamese","অসমীয়া"}, +{"av","Avaric","авар мацӀ, магӀарул мацӀ"}, +{"ae","Avestan","avesta"}, +{"ay","Aymara","aymar aru"}, +{"az","Azerbaijani","azərbaycan dili"}, +{"bm","Bambara","bamanankan"}, +{"ba","Bashkir","башҡорт теле"}, +{"eu","Basque","euskara, euskera"}, +{"be","Belarusian","Беларуская"}, +{"bn","Bengali","বাংলা"}, +{"bh","Bihari","भोजपुरी"}, +{"bi","Bislama","Bislama"}, +{"bs","Bosnian","bosanski jezik"}, +{"br","Breton","brezhoneg"}, +{"bg","Bulgarian","български език"}, +{"my","Burmese","ဗမာစာ"}, +{"ca","Catalan; Valencian","Català"}, +{"ch","Chamorro","Chamoru"}, +{"ce","Chechen","нохчийн мотт"}, +{"ny","Chichewa; Chewa; Nyanja","chiCheŵa, chinyanja"}, +{"zh","Chinese","中文 (Zhōngwén), 汉语, 漢語"}, +{"cv","Chuvash","чӑваш чӗлхи"}, +{"kw","Cornish","Kernewek"}, +{"co","Corsican","corsu, lingua corsa"}, +{"cr","Cree","ᓀᐦᐃᔭᐍᐏᐣ"}, +{"hr","Croatian","hrvatski"}, +{"cs","Czech","česky, čeština"}, +{"da","Danish","dansk"}, +{"dv","Divehi; Dhivehi; Maldivian;","ދިވެހި"}, +{"nl","Dutch","Nederlands, Vlaams"}, +{"en","English","English"}, +{"eo","Esperanto","Esperanto"}, +{"et","Estonian","eesti, eesti keel"}, +{"ee","Ewe","Eʋegbe"}, +{"fo","Faroese","føroyskt"}, +{"fj","Fijian","vosa Vakaviti"}, +{"fi","Finnish","suomi, suomen kieli"}, +{"fr","French","français, langue française"}, +{"ff","Fula; Fulah; Pulaar; Pular","Fulfulde, Pulaar, Pular"}, +{"gl","Galician","Galego"}, +{"ka","Georgian","ქართული"}, +{"de","German","Deutsch"}, +{"el","Greek, Modern","Ελληνικά"}, +{"gn","Guaraní","Avañeẽ"}, +{"gu","Gujarati","ગુજરાતી"}, +{"ht","Haitian; Haitian Creole","Kreyòl ayisyen"}, +{"ha","Hausa","Hausa, هَوُسَ"}, +{"he","Hebrew (modern)","עברית"}, +{"hz","Herero","Otjiherero"}, +{"hi","Hindi","हिन्दी, हिंदी"}, +{"ho","Hiri Motu","Hiri Motu"}, +{"hu","Hungarian","Magyar"}, +{"ia","Interlingua","Interlingua"}, +{"id","Indonesian","Bahasa Indonesia"}, +{"ie","Interlingue","Originally called Occidental; then Interlingue after WWII"}, +{"ga","Irish","Gaeilge"}, +{"ig","Igbo","Asụsụ Igbo"}, +{"ik","Inupiaq","Iñupiaq, Iñupiatun"}, +{"io","Ido","Ido"}, +{"is","Icelandic","Íslenska"}, +{"it","Italian","Italiano"}, +{"iu","Inuktitut","ᐃᓄᒃᑎᑐᑦ"}, +{"ja","Japanese","日本語 (にほんご/にっぽんご)"}, +{"jv","Javanese","basa Jawa"}, +{"kl","Kalaallisut, Greenlandic","kalaallisut, kalaallit oqaasii"}, +{"kn","Kannada","ಕನ್ನಡ"}, +{"kr","Kanuri","Kanuri"}, +{"ks","Kashmiri","कश्मीरी, كشميري‎"}, +{"kk","Kazakh","Қазақ тілі"}, +{"km","Khmer","ភាសាខ្មែរ"}, +{"ki","Kikuyu, Gikuyu","Gĩkũyũ"}, +{"rw","Kinyarwanda","Ikinyarwanda"}, +{"ky","Kirghiz, Kyrgyz","кыргыз тили"}, +{"kv","Komi","коми кыв"}, +{"kg","Kongo","KiKongo"}, +{"ko","Korean","한국어 (韓國語), 조선말 (朝鮮語)"}, +{"ku","Kurdish","Kurdî, كوردی‎"}, +{"kj","Kwanyama, Kuanyama","Kuanyama"}, +{"la","Latin","latine, lingua latina"}, +{"lb","Luxembourgish, Letzeburgesch","Lëtzebuergesch"}, +{"lg","Luganda","Luganda"}, +{"li","Limburgish, Limburgan, Limburger","Limburgs"}, +{"ln","Lingala","Lingála"}, +{"lo","Lao","ພາສາລາວ"}, +{"lt","Lithuanian","lietuvių kalba"}, +{"lu","Luba-Katanga",""}, +{"lv","Latvian","latviešu valoda"}, +{"gv","Manx","Gaelg, Gailck"}, +{"mk","Macedonian","македонски јазик"}, +{"mg","Malagasy","Malagasy fiteny"}, +{"ms","Malay","bahasa Melayu, بهاس ملايو‎"}, +{"ml","Malayalam","മലയാളം"}, +{"mt","Maltese","Malti"}, +{"mi","Māori","te reo Māori"}, +{"mr","Marathi (Marāṭhī)","मराठी"}, +{"mh","Marshallese","Kajin M̧ajeļ"}, +{"mn","Mongolian","монгол"}, +{"na","Nauru","Ekakairũ Naoero"}, +{"nv","Navajo, Navaho","Diné bizaad, Dinékʼehǰí"}, +{"nb","Norwegian Bokmål","Norsk bokmål"}, +{"nd","North Ndebele","isiNdebele"}, +{"ne","Nepali","नेपाली"}, +{"ng","Ndonga","Owambo"}, +{"nn","Norwegian Nynorsk","Norsk nynorsk"}, +{"no","Norwegian","Norsk"}, +{"ii","Nuosu","ꆈꌠ꒿ Nuosuhxop"}, +{"nr","South Ndebele","isiNdebele"}, +{"oc","Occitan","Occitan"}, +{"oj","Ojibwe, Ojibwa","ᐊᓂᔑᓈᐯᒧᐎᓐ"}, +{"cu","Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic","ѩзыкъ словѣньскъ"}, +{"om","Oromo","Afaan Oromoo"}, +{"or","Oriya","ଓଡ଼ିଆ"}, +{"os","Ossetian, Ossetic","ирон æвзаг"}, +{"pa","Panjabi, Punjabi","ਪੰਜਾਬੀ, پنجابی‎"}, +{"pi","Pāli","पाऴि"}, +{"fa","Persian","فارسی"}, +{"pl","Polish","polski"}, +{"ps","Pashto, Pushto","پښتو"}, +{"pt","Portuguese","Português"}, +{"qu","Quechua","Runa Simi, Kichwa"}, +{"rm","Romansh","rumantsch grischun"}, +{"rn","Kirundi","kiRundi"}, +{"ro","Romanian, Moldavian, Moldovan","română"}, +{"ru","Russian","русский язык"}, +{"sa","Sanskrit (Saṁskṛta)","संस्कृतम्"}, +{"sc","Sardinian","sardu"}, +{"sd","Sindhi","सिन्धी, سنڌي، سندھی‎"}, +{"se","Northern Sami","Davvisámegiella"}, +{"sm","Samoan","gagana faa Samoa"}, +{"sg","Sango","yângâ tî sängö"}, +{"sr","Serbian","српски језик"}, +{"gd","Scottish Gaelic; Gaelic","Gàidhlig"}, +{"sn","Shona","chiShona"}, +{"si","Sinhala, Sinhalese","සිංහල"}, +{"sk","Slovak","slovenčina"}, +{"sl","Slovene","slovenščina"}, +{"so","Somali","Soomaaliga, af Soomaali"}, +{"st","Southern Sotho","Sesotho"}, +{"es","Spanish; Castilian","español, castellano"}, +{"su","Sundanese","Basa Sunda"}, +{"sw","Swahili","Kiswahili"}, +{"ss","Swati","SiSwati"}, +{"sv","Swedish","svenska"}, +{"ta","Tamil","தமிழ்"}, +{"te","Telugu","తెలుగు"}, +{"tg","Tajik","тоҷикӣ, toğikī, تاجیکی‎"}, +{"th","Thai","ไทย"}, +{"ti","Tigrinya","ትግርኛ"}, +{"bo","Tibetan Standard, Tibetan, Central","བོད་ཡིག"}, +{"tk","Turkmen","Türkmen, Түркмен"}, +{"tl","Tagalog","Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔"}, +{"tn","Tswana","Setswana"}, +{"to","Tonga (Tonga Islands)","faka Tonga"}, +{"tr","Turkish","Türkçe"}, +{"ts","Tsonga","Xitsonga"}, +{"tt","Tatar","татарча, tatarça, تاتارچا‎"}, +{"tw","Twi","Twi"}, +{"ty","Tahitian","Reo Tahiti"}, +{"ug","Uighur, Uyghur","Uyƣurqə, ئۇيغۇرچە‎"}, +{"uk","Ukrainian","українська"}, +{"ur","Urdu","اردو"}, +{"uz","Uzbek","zbek, Ўзбек, أۇزبېك‎"}, +{"ve","Venda","Tshivenḓa"}, +{"vi","Vietnamese","Tiếng Việt"}, +{"vo","Volapük","Volapük"}, +{"wa","Walloon","Walon"}, +{"cy","Welsh","Cymraeg"}, +{"wo","Wolof","Wollof"}, +{"fy","Western Frisian","Frysk"}, +{"xh","Xhosa","isiXhosa"}, +{"yi","Yiddish","ייִדיש"}, +{"yo","Yoruba","Yorùbá"}, +{"za","Zhuang, Chuang","Saɯ cueŋƅ, Saw cuengh"}, +{"","",""} +}; \ No newline at end of file diff --git a/src/vscpworks.cpp b/src/vscpworks.cpp index 90dc9694..1e6424e0 100644 --- a/src/vscpworks.cpp +++ b/src/vscpworks.cpp @@ -39,25 +39,25 @@ #include #include -#include "vscpworks.h" #include "filedownloader.h" +#include "vscpworks.h" #include #include +#include +#include +#include +#include +#include +#include #include #include -#include #include #include -#include -#include -#include -#include -#include -#include +#include #include -#include +#include #include #include @@ -74,54 +74,58 @@ using namespace kainjow::mustache; // vscpworks // -vscpworks::vscpworks(int &argc, char **argv) : - QApplication(argc, argv) +vscpworks::vscpworks(int& argc, char** argv) + : QApplication(argc, argv) { - m_base = numerical_base::HEX; // Numerical base - m_preferredLanguage = "en"; // Preferred language - m_bAskBeforeDelete = true; - m_bEnableDarkTheme = false; - m_bSaveAlwaysJSON = false; - - // Logging defaults - m_fileLogLevel = spdlog::level::info; - m_fileLogPattern = "[vscpd] [%^%l%$] %v"; - m_fileLogPath = "/var/log/vscp/vscp.log"; - m_maxFileLogSize = 5242880; - m_maxFileLogFiles = 7; - - m_bEnableConsoleLog = false; - m_consoleLogLevel = spdlog::level::info; - m_consoleLogPattern = "[vscpd] [%^%l%$] %v"; - - m_session_timeout = 1000; - m_session_maxEvents = -1; - - m_session_ClassDisplayFormat = CFrmSession::classDisplayFormat::symbolic; - m_session_TypeDisplayFormat = CFrmSession::typeDisplayFormat::symbolic; - m_session_GuidDisplayFormat = CFrmSession::guidDisplayFormat::symbolic; - - m_session_bAutoConnect = true; - m_session_bShowFullTypeToken = false; - m_session_bAutoSaveTxRows = true; - - m_config_timeout = 1000; - - // Logging defaults - m_fileLogLevel = spdlog::level::info; - m_fileLogPattern = "[vscpworks+] [%^%l%$] %v"; - m_fileLogPath = "~/.local/share/VSCP/vscpworks+/logs/vscpworks.log"; - m_maxFileLogSize = 5242880; - m_maxFileLogFiles = 7; - - m_bEnableConsoleLog = false; - m_consoleLogLevel = spdlog::level::info; - m_consoleLogPattern = "[vscpworks+] [%^%l%$] %v"; - - // After the following it is possible to create and destroy event objects - // dynamically at run-time - int idEvent = qRegisterMetaType(); - int idEventEx = qRegisterMetaType(); + m_base = numerical_base::HEX; // Numerical base + m_preferredLanguage = "en"; // Preferred language + m_bAskBeforeDelete = true; + m_bEnableDarkTheme = false; + m_bSaveAlwaysJSON = false; + + // Logging defaults + m_fileLogLevel = spdlog::level::info; + m_fileLogPattern = "[vscpd] [%^%l%$] %v"; + m_fileLogPath = "/var/log/vscp/vscp.log"; + m_maxFileLogSize = 5242880; + m_maxFileLogFiles = 7; + + m_bEnableConsoleLog = false; + m_consoleLogLevel = spdlog::level::info; + m_consoleLogPattern = "[vscpd] [%^%l%$] %v"; + + m_session_timeout = 1000; + m_session_maxEvents = -1; + + m_session_ClassDisplayFormat = CFrmSession::classDisplayFormat::symbolic; + m_session_TypeDisplayFormat = CFrmSession::typeDisplayFormat::symbolic; + m_session_GuidDisplayFormat = CFrmSession::guidDisplayFormat::symbolic; + + m_session_bAutoConnect = true; + m_session_bShowFullTypeToken = false; + m_session_bAutoSaveTxRows = true; + + m_config_timeout = 1000; + + // Logging defaults + m_fileLogLevel = spdlog::level::info; + m_fileLogPattern = "[vscpworks+] [%^%l%$] %v"; + m_fileLogPath = "~/.local/share/VSCP/vscpworks+/logs/vscpworks.log"; + m_maxFileLogSize = 5242880; + m_maxFileLogFiles = 7; + + m_bEnableConsoleLog = false; + m_consoleLogLevel = spdlog::level::info; + m_consoleLogPattern = "[vscpworks+] [%^%l%$] %v"; + + // After the following it is possible to create and destroy event objects + // dynamically at run-time + int idEvent = qRegisterMetaType(); + int idEventEx = qRegisterMetaType(); + + + + } /////////////////////////////////////////////////////////////////////////////// @@ -147,986 +151,1006 @@ vscpworks::~vscpworks() // decimalToStringInBase // -QString vscpworks::decimalToStringInBase(uint32_t value, int tobase) +QString +vscpworks::decimalToStringInBase(uint32_t value, int tobase) { - int base = 10; - QString qstr; - QString prefix; - - numerical_base selbase = (-1 == tobase) ? m_base : static_cast(tobase); - switch (selbase) { - case numerical_base::HEX: - prefix = "0x"; - base = 16; - break; - case numerical_base::DECIMAL: - default: - prefix = ""; - base = 10; - break; - case numerical_base::OCTAL: - prefix = "0o"; - base = 8; - break; - case numerical_base::BINARY: - prefix = "0b"; - base = 2; - break; - } - - return (prefix + QString::number(value, base)); - }; + int base = 10; + QString qstr; + QString prefix; + + numerical_base selbase = (-1 == tobase) ? m_base : static_cast(tobase); + switch (selbase) { + case numerical_base::HEX: + prefix = "0x"; + base = 16; + break; + case numerical_base::DECIMAL: + default: + prefix = ""; + base = 10; + break; + case numerical_base::OCTAL: + prefix = "0o"; + base = 8; + break; + case numerical_base::BINARY: + prefix = "0b"; + base = 2; + break; + } + + return (prefix + QString::number(value, base)); +}; /////////////////////////////////////////////////////////////////////////////// // decimalToStringInBase // -QString vscpworks::decimalToStringInBase(const QString& strvalue, int tobase) +QString +vscpworks::decimalToStringInBase(const QString& strvalue, int tobase) { - uint32_t value = vscp_readStringValue(strvalue.toStdString()); - return decimalToStringInBase(value, tobase); + uint32_t value = vscp_readStringValue(strvalue.toStdString()); + return decimalToStringInBase(value, tobase); } /////////////////////////////////////////////////////////////////////////////// // getConnectionName // -QString vscpworks::getConnectionName(CVscpClient::connType type) +QString +vscpworks::getConnectionName(CVscpClient::connType type) { - QString str = tr("Unknown type"); - - switch (type) { - - case CVscpClient::connType::NONE: - str = tr("No connection"); - break; - - case CVscpClient::connType::LOCAL: - str = tr("VSCP local connection"); - break; - - case CVscpClient::connType::TCPIP: - str = tr("VSCP tcp/ip connection"); - break; - - case CVscpClient::connType::CANAL: - str = tr("VSCP CANAL/Level I connection"); - break; - - case CVscpClient::connType::SOCKETCAN: - str = tr("VSCP socketcan connection"); - break; - - case CVscpClient::connType::WS1: - str = tr("VSCP websocket protocol 1 connection"); - break; - - case CVscpClient::connType::WS2: - str = tr("VSCP websocket protocol 2 connection"); - break; - - case CVscpClient::connType::MQTT: - str = tr("VSCP MQTT connection"); - break; - - case CVscpClient::connType::UDP: - str = tr("VSCP UDP connection"); - break; - - case CVscpClient::connType::MULTICAST: - str = tr("VSCP multicast connection"); - break; - - case CVscpClient::connType::REST: - str = tr("VSCP REST connection"); - break; - - case CVscpClient::connType::RS232: - str = tr("VSCP RS-232 connection"); - break; - - case CVscpClient::connType::RS485: - str = tr("VSCP RS-485 connection"); - break; - - case CVscpClient::connType::RAWCAN: - str = tr("Raw CAN connection"); - break; - - case CVscpClient::connType::RAWMQTT: - str = tr("Raw MQTT connection"); - break; - } + QString str = tr("Unknown type"); + + switch (type) { + + case CVscpClient::connType::NONE: + str = tr("No connection"); + break; + + case CVscpClient::connType::LOCAL: + str = tr("VSCP local connection"); + break; + + case CVscpClient::connType::TCPIP: + str = tr("VSCP tcp/ip connection"); + break; + + case CVscpClient::connType::CANAL: + str = tr("VSCP CANAL/Level I connection"); + break; + + case CVscpClient::connType::SOCKETCAN: + str = tr("VSCP socketcan connection"); + break; + + case CVscpClient::connType::WS1: + str = tr("VSCP websocket protocol 1 connection"); + break; + + case CVscpClient::connType::WS2: + str = tr("VSCP websocket protocol 2 connection"); + break; + + case CVscpClient::connType::MQTT: + str = tr("VSCP MQTT connection"); + break; + + case CVscpClient::connType::UDP: + str = tr("VSCP UDP connection"); + break; + + case CVscpClient::connType::MULTICAST: + str = tr("VSCP multicast connection"); + break; + + case CVscpClient::connType::REST: + str = tr("VSCP REST connection"); + break; + + case CVscpClient::connType::RS232: + str = tr("VSCP RS-232 connection"); + break; + + case CVscpClient::connType::RS485: + str = tr("VSCP RS-485 connection"); + break; - return str; + case CVscpClient::connType::RAWCAN: + str = tr("Raw CAN connection"); + break; + + case CVscpClient::connType::RAWMQTT: + str = tr("Raw MQTT connection"); + break; + } + + return str; } /////////////////////////////////////////////////////////////////////////////// // loadSettings * // -void vscpworks::loadSettings(void) +void +vscpworks::loadSettings(void) { - QString str; + QString str; + + QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); + + // Configuration folder + // -------------------- + // Linux: "/home/akhe/.config" Config file is here (VSCP/vscp-works-qt) + // Windows: + { + QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); + path += "/"; + path += QCoreApplication::applicationName(); + path += "/"; + m_configFolder = settings.value("configFolder", path).toString(); + } + // Share folder + // ------------ + // Linux: "/home/akhe/.local/share/vscp-works-qt" user data is here + // Windows: + { + QString path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation); + path += "/"; + m_shareFolder = settings.value("shareFolder", path).toString(); + // If folder does not exist, create it + QDir dir(path); + if (!dir.exists()) { + dir.mkpath("."); + } + // Make a folder for receive sets + dir.mkpath("./rxsets"); + // Make a folder for transmission sets + dir.mkpath("./txsets"); + // Make a folder for autosaved/loaded data + dir.mkpath("./cache"); + } - QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); +// VSCP Home folder +// ---------------- +#ifdef WIN32 + m_vscpHomeFolder = settings.value("vscpHomeFolder", "c:/program files/vscp").toString(); +#else + m_vscpHomeFolder = settings.value("vscpHomeFolder", "/var/lib/vscp").toString(); +#endif - // Configuration folder - // -------------------- - // Linux: "/home/akhe/.config" Config file is here (VSCP/vscp-works-qt) - // Windows: - { - QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); - path += "/"; - path += QCoreApplication::applicationName(); - path += "/"; - m_configFolder = settings.value("configFolder", path).toString(); - } + // System numerical base + // --------------------- + m_base = static_cast(settings.value("numericBase", "0").toInt()); - // Share folder - // ------------ - // Linux: "/home/akhe/.local/share/vscp-works-qt" user data is here - // Windows: - { - QString path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation); - path += "/"; - m_shareFolder = settings.value("shareFolder", path).toString(); - // If folder does not exist, create it - QDir dir(path); - if (!dir.exists()) { - dir.mkpath("."); - } - // Make a folder for receive sets - dir.mkpath("./rxsets"); - // Make a folder for transmission sets - dir.mkpath("./txsets"); - // Make a folder for autosaved/loaded data - dir.mkpath("./cache"); - } + // preferred language + m_preferredLanguage = settings.value("PreferredLanguage", "en").toString().toStdString(); + ; + + m_bEnableDarkTheme = settings.value("bDarkTheme", true).toBool(); + m_bAskBeforeDelete = settings.value("bAskBeforeDelete", true).toBool(); + m_bSaveAlwaysJSON = settings.value("bSaveAlwaysJson", true).toBool(); - // VSCP Home folder - // ---------------- - #ifdef WIN32 - m_vscpHomeFolder = settings.value("vscpHomeFolder", "c:/program files/vscp").toString(); - #else - m_vscpHomeFolder = settings.value("vscpHomeFolder", "/var/lib/vscp").toString(); - #endif - - // System numerical base - // --------------------- - m_base = static_cast(settings.value("numericBase", "0").toInt()); - - // preferred language - m_preferredLanguage = settings.value("PreferredLanguage", "en").toString().toStdString();; - - m_bEnableDarkTheme = settings.value("bDarkTheme", true).toBool(); - m_bAskBeforeDelete = settings.value("bAskBeforeDelete", true).toBool(); - m_bSaveAlwaysJSON = settings.value("bSaveAlwaysJson", true).toBool(); - - // * * * Logging * * * - int level = settings.value("fileLogLevel", 4).toInt(); // Default: 4 == "information"; - switch (level) { - case 0: - m_fileLogLevel = spdlog::level::trace; - break; - case 1: - m_fileLogLevel = spdlog::level::debug; - break; - default: - case 2: - m_fileLogLevel = spdlog::level::info; - break; - case 3: - m_fileLogLevel = spdlog::level::warn; - break; - case 4: - m_fileLogLevel = spdlog::level::err; - break; - case 5: - m_fileLogLevel = spdlog::level::critical; - break; - case 6: - m_fileLogLevel = spdlog::level::off; - break; - }; - m_fileLogPattern = settings.value("fileLogPattern", "[vscpworks+] [%^%l%$] %v").toString().toStdString(); - m_fileLogPath = settings.value("fileLogPath", "~/.local/share/VSCP/vscpworks+/logs/vscpworks.log").toString().toStdString(); - m_maxFileLogSize = settings.value("fileLogMaxSize", 5242880).toInt(); - m_maxFileLogFiles = settings.value("fileLogMaxFiles", 10).toInt(); - - level = settings.value("consoleLogLevel", 4).toInt(); // Default: 4 == "information"; - switch (level) { - case 0: - m_consoleLogLevel = spdlog::level::trace; - break; - case 1: - m_consoleLogLevel = spdlog::level::debug; - break; - default: - case 2: - m_consoleLogLevel = spdlog::level::info; - break; - case 3: - m_consoleLogLevel = spdlog::level::warn; - break; - case 4: - m_consoleLogLevel = spdlog::level::err; - break; - case 5: - m_consoleLogLevel = spdlog::level::critical; - break; - case 6: - m_consoleLogLevel = spdlog::level::off; - break; - }; - - m_consoleLogPattern = settings.value("consoleLogPattern", "[vscpworks+] [%^%l%$] %v").toString().toStdString(); - - // * * * Session * * * - - m_session_maxEvents = settings.value("maxSessionEvents", -1).toInt(); - m_session_timeout = settings.value("sessionTimeout", "1000").toUInt(); - m_session_ClassDisplayFormat = static_cast(settings.value("sessionClassDisplayFormat", - static_cast(CFrmSession::classDisplayFormat::symbolic)).toInt()); - m_session_TypeDisplayFormat = static_cast(settings.value("sessionTypeDisplayFormat", - static_cast(CFrmSession::typeDisplayFormat::symbolic)).toInt()); - m_session_GuidDisplayFormat = static_cast(settings.value("sessionGuidDisplayFormat", - static_cast(CFrmSession::guidDisplayFormat::guid)).toInt()); - m_session_bAutoConnect = settings.value("sessionAutoConnect", true).toBool(); - m_session_bShowFullTypeToken = settings.value("sessionShowFullTypeToken", true).toBool(); - m_session_bAutoSaveTxRows = settings.value("sessionAutoSaveTxRows", true).toBool(); - - // * * * Config * * * - m_config_base = static_cast(settings.value("configNumericBase", "1").toInt()); - m_config_bDisableColors = settings.value("configDisableColors", false).toBool(); - m_config_timeout = settings.value("configTimeout", "1000").toUInt(); - - // VSCP event database last load date/time - // --------------------------------------- - m_lastEventDbLoadDateTime = settings.value("last-eventdb-download", "1970-01-01T00:00:00Z").toDateTime(); - - // * * * Read in defined connections * * * - // Note!!! Se notes in save - - int size = settings.beginReadArray("hosts"); - for (int i = 0; i < size; ++i) { - settings.setArrayIndex(i); - QString strJson = settings.value("connection").toString(); - - QJsonObject conn; - QJsonDocument doc = QJsonDocument::fromJson(strJson.toUtf8()); - if (!doc.isNull()) { - if (doc.isObject()) { - conn = doc.object(); - addConnection(conn); - } - else { - qDebug() << "Connection document is not an object"; - } - } - else { - qDebug() << "Invalid JSON for connection object\n"; - } - + // * * * Logging * * * + int level = settings.value("fileLogLevel", 4).toInt(); // Default: 4 == "information"; + switch (level) { + case 0: + m_fileLogLevel = spdlog::level::trace; + break; + case 1: + m_fileLogLevel = spdlog::level::debug; + break; + default: + case 2: + m_fileLogLevel = spdlog::level::info; + break; + case 3: + m_fileLogLevel = spdlog::level::warn; + break; + case 4: + m_fileLogLevel = spdlog::level::err; + break; + case 5: + m_fileLogLevel = spdlog::level::critical; + break; + case 6: + m_fileLogLevel = spdlog::level::off; + break; + }; + m_fileLogPattern = settings.value("fileLogPattern", "[vscpworks+] [%^%l%$] %v").toString().toStdString(); + m_fileLogPath = settings.value("fileLogPath", "~/.local/share/VSCP/vscpworks+/logs/vscpworks.log").toString().toStdString(); + m_maxFileLogSize = settings.value("fileLogMaxSize", 5242880).toInt(); + m_maxFileLogFiles = settings.value("fileLogMaxFiles", 10).toInt(); + + level = settings.value("consoleLogLevel", 4).toInt(); // Default: 4 == "information"; + switch (level) { + case 0: + m_consoleLogLevel = spdlog::level::trace; + break; + case 1: + m_consoleLogLevel = spdlog::level::debug; + break; + default: + case 2: + m_consoleLogLevel = spdlog::level::info; + break; + case 3: + m_consoleLogLevel = spdlog::level::warn; + break; + case 4: + m_consoleLogLevel = spdlog::level::err; + break; + case 5: + m_consoleLogLevel = spdlog::level::critical; + break; + case 6: + m_consoleLogLevel = spdlog::level::off; + break; + }; + + m_consoleLogPattern = settings.value("consoleLogPattern", "[vscpworks+] [%^%l%$] %v").toString().toStdString(); + + // * * * Session * * * + + m_session_maxEvents = settings.value("maxSessionEvents", -1).toInt(); + m_session_timeout = settings.value("sessionTimeout", "1000").toUInt(); + m_session_ClassDisplayFormat = static_cast(settings.value("sessionClassDisplayFormat", + static_cast(CFrmSession::classDisplayFormat::symbolic)) + .toInt()); + m_session_TypeDisplayFormat = static_cast(settings.value("sessionTypeDisplayFormat", + static_cast(CFrmSession::typeDisplayFormat::symbolic)) + .toInt()); + m_session_GuidDisplayFormat = static_cast(settings.value("sessionGuidDisplayFormat", + static_cast(CFrmSession::guidDisplayFormat::guid)) + .toInt()); + m_session_bAutoConnect = settings.value("sessionAutoConnect", true).toBool(); + m_session_bShowFullTypeToken = settings.value("sessionShowFullTypeToken", true).toBool(); + m_session_bAutoSaveTxRows = settings.value("sessionAutoSaveTxRows", true).toBool(); + + // * * * Config * * * + m_config_base = static_cast(settings.value("configNumericBase", "1").toInt()); + m_config_bDisableColors = settings.value("configDisableColors", false).toBool(); + m_config_timeout = settings.value("configTimeout", "1000").toUInt(); + + // VSCP event database last load date/time + // --------------------------------------- + m_lastEventDbLoadDateTime = settings.value("last-eventdb-download", "1970-01-01T00:00:00Z").toDateTime(); + + // * * * Read in defined connections * * * + // Note!!! Se notes in save + + int size = settings.beginReadArray("hosts"); + for (int i = 0; i < size; ++i) { + settings.setArrayIndex(i); + QString strJson = settings.value("connection").toString(); + + QJsonObject conn; + QJsonDocument doc = QJsonDocument::fromJson(strJson.toUtf8()); + if (!doc.isNull()) { + if (doc.isObject()) { + conn = doc.object(); + addConnection(conn); + } + else { + qDebug() << "Connection document is not an object"; + } } - settings.endArray(); + else { + qDebug() << "Invalid JSON for connection object\n"; + } + } + settings.endArray(); } /////////////////////////////////////////////////////////////////////////////// // writeSettings // -void vscpworks::writeSettings() +void +vscpworks::writeSettings() { - QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); - - // General settings - settings.setValue("configFolder", m_configFolder); - settings.setValue("shareFolder", m_shareFolder); - settings.setValue("vscpHomeFolder", m_vscpHomeFolder); - settings.setValue("numericBase", QString::number(static_cast(m_base))); - settings.setValue("PreferredLanguage", m_preferredLanguage.c_str()); - settings.setValue("bDarkTheme", m_bEnableDarkTheme); - settings.setValue("bAskBeforeDelete", m_bAskBeforeDelete); - settings.setValue("bSaveAlwaysJson", m_bSaveAlwaysJSON); - settings.setValue("last-eventdb-download", m_lastEventDbLoadDateTime); - - // * * * Logging * * * - int level = 4; // Default: 4 == "information"; - switch (m_fileLogLevel) { - case spdlog::level::trace: - level = 0; - break; - case spdlog::level::debug: - level = 1; - break; - default: - case spdlog::level::info: - level = 2; - break; - case spdlog::level::warn: - level = 3; - break; - case spdlog::level::err: - level = 4; - break; - case spdlog::level::critical: - level = 5; - break; - case spdlog::level::off: - level = 6; - break; - }; - - settings.setValue("fileLogLevel", level); - settings.setValue("fileLogPattern", QString::fromStdString(m_fileLogPattern)); - settings.setValue("fileLogPath", QString::fromStdString(m_fileLogPath)); - settings.setValue("fileLogMaxSize", m_maxFileLogSize); - settings.setValue("fileLogMaxFiles", m_maxFileLogFiles); - - - level = 4; // Default: 4 == "information"; - switch (m_consoleLogLevel) { - case spdlog::level::trace: - level = 0; - break; - case spdlog::level::debug: - level = 1; - break; - default: - case spdlog::level::info: - level = 2; - break; - case spdlog::level::warn: - level = 3; - break; - case spdlog::level::err: - level = 4; - break; - case spdlog::level::critical: - level = 5; - break; - case spdlog::level::off: - level = 6; - break; - }; - - settings.setValue("consoleLogLevel", level); - settings.setValue("consoleLogPattern", QString::fromStdString(m_consoleLogPattern)); - - - // * * * Session * * * - - settings.setValue("sessionTimeout", m_session_timeout); - settings.setValue("maxSessionEvents", m_session_maxEvents); - - settings.setValue("sessionClassDisplayFormat", static_cast(m_session_ClassDisplayFormat)); - settings.setValue("sessionTypeDisplayFormat", static_cast(m_session_TypeDisplayFormat)); - settings.setValue("sessionGuidDisplayFormat", static_cast(m_session_GuidDisplayFormat)); - - settings.setValue("sessionAutoConnect", m_session_bAutoConnect); - settings.setValue("sessionShowFullTypeToken", m_session_bShowFullTypeToken); - settings.setValue("sessionAutoSaveTxRows", m_session_bAutoSaveTxRows); - - // * * * Config * * * - settings.setValue("configNumericBase", static_cast(m_config_base)); - settings.setValue("configDisableColors", m_config_bDisableColors); - settings.setValue("configTimeout", m_config_timeout); + QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); + + // General settings + settings.setValue("configFolder", m_configFolder); + settings.setValue("shareFolder", m_shareFolder); + settings.setValue("vscpHomeFolder", m_vscpHomeFolder); + settings.setValue("numericBase", QString::number(static_cast(m_base))); + settings.setValue("PreferredLanguage", m_preferredLanguage.c_str()); + settings.setValue("bDarkTheme", m_bEnableDarkTheme); + settings.setValue("bAskBeforeDelete", m_bAskBeforeDelete); + settings.setValue("bSaveAlwaysJson", m_bSaveAlwaysJSON); + settings.setValue("last-eventdb-download", m_lastEventDbLoadDateTime); + + // * * * Logging * * * + int level = 4; // Default: 4 == "information"; + switch (m_fileLogLevel) { + case spdlog::level::trace: + level = 0; + break; + case spdlog::level::debug: + level = 1; + break; + default: + case spdlog::level::info: + level = 2; + break; + case spdlog::level::warn: + level = 3; + break; + case spdlog::level::err: + level = 4; + break; + case spdlog::level::critical: + level = 5; + break; + case spdlog::level::off: + level = 6; + break; + }; + + settings.setValue("fileLogLevel", level); + settings.setValue("fileLogPattern", QString::fromStdString(m_fileLogPattern)); + settings.setValue("fileLogPath", QString::fromStdString(m_fileLogPath)); + settings.setValue("fileLogMaxSize", m_maxFileLogSize); + settings.setValue("fileLogMaxFiles", m_maxFileLogFiles); + + level = 4; // Default: 4 == "information"; + switch (m_consoleLogLevel) { + case spdlog::level::trace: + level = 0; + break; + case spdlog::level::debug: + level = 1; + break; + default: + case spdlog::level::info: + level = 2; + break; + case spdlog::level::warn: + level = 3; + break; + case spdlog::level::err: + level = 4; + break; + case spdlog::level::critical: + level = 5; + break; + case spdlog::level::off: + level = 6; + break; + }; - writeConnections(); + settings.setValue("consoleLogLevel", level); + settings.setValue("consoleLogPattern", QString::fromStdString(m_consoleLogPattern)); -} + // * * * Session * * * + + settings.setValue("sessionTimeout", m_session_timeout); + settings.setValue("maxSessionEvents", m_session_maxEvents); + + settings.setValue("sessionClassDisplayFormat", static_cast(m_session_ClassDisplayFormat)); + settings.setValue("sessionTypeDisplayFormat", static_cast(m_session_TypeDisplayFormat)); + settings.setValue("sessionGuidDisplayFormat", static_cast(m_session_GuidDisplayFormat)); + settings.setValue("sessionAutoConnect", m_session_bAutoConnect); + settings.setValue("sessionShowFullTypeToken", m_session_bShowFullTypeToken); + settings.setValue("sessionAutoSaveTxRows", m_session_bAutoSaveTxRows); + + // * * * Config * * * + settings.setValue("configNumericBase", static_cast(m_config_base)); + settings.setValue("configDisableColors", m_config_bDisableColors); + settings.setValue("configTimeout", m_config_timeout); + + writeConnections(); +} /////////////////////////////////////////////////////////////////////////////// // writeConnections // -void vscpworks::writeConnections(void) +void +vscpworks::writeConnections(void) { - QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); + QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); - // Remove old entries - int size = settings.beginReadArray("hosts"); - for(auto i=0; i::const_iterator it = m_mapConn.constBegin(); - while (it != m_mapConn.constEnd()) { - settings.setArrayIndex(i++); - QJsonDocument doc(it.value()); - QString strJson(doc.toJson(QJsonDocument::Compact)); - //qDebug() << it.key() << ": " << it.value() << ":" << strJson; - settings.setValue("connection", strJson); - it++; - } - settings.endArray(); + // Remove old entries + int size = settings.beginReadArray("hosts"); + for (auto i = 0; i < size; i++) { + settings.setArrayIndex(i); + settings.remove("connection"); + } + settings.endArray(); + + // Connections + settings.beginWriteArray("hosts"); + int i = 0; + + /* + Note! + We need to convert QJsonObject into string due to a bug + that prevent saving/loading in some cases. + */ + QMap::const_iterator it = m_mapConn.constBegin(); + while (it != m_mapConn.constEnd()) { + settings.setArrayIndex(i++); + QJsonDocument doc(it.value()); + QString strJson(doc.toJson(QJsonDocument::Compact)); + // qDebug() << it.key() << ": " << it.value() << ":" << strJson; + settings.setValue("connection", strJson); + it++; + } + settings.endArray(); } /////////////////////////////////////////////////////////////////////////////// // addConnection // -bool vscpworks::addConnection(QJsonObject& conn, bool bSave ) +bool +vscpworks::addConnection(QJsonObject& conn, bool bSave) { - if (!conn["uuid"].toString().trimmed().length()) { - conn["uuid"] = QUuid::createUuid().toString(); - } + if (!conn["uuid"].toString().trimmed().length()) { + conn["uuid"] = QUuid::createUuid().toString(); + } - // Add configuration item to map - m_mapConn[conn["uuid"].toString().trimmed()] = conn; + // Add configuration item to map + m_mapConn[conn["uuid"].toString().trimmed()] = conn; - // Save settings if requested to do so - if (bSave) writeConnections(); + // Save settings if requested to do so + if (bSave) + writeConnections(); - return true; + return true; } /////////////////////////////////////////////////////////////////////////////// // removeConnection // -bool vscpworks::removeConnection(const QString& uuid, bool bSave ) +bool +vscpworks::removeConnection(const QString& uuid, bool bSave) { - QMap::iterator it; - int n = m_mapConn.remove(uuid); + QMap::iterator it; + int n = m_mapConn.remove(uuid); - // Save settings if requested to do so - if (bSave) writeConnections(); + // Save settings if requested to do so + if (bSave) + writeConnections(); - return true; + return true; } /////////////////////////////////////////////////////////////////////////////// // loadEventDb // -bool vscpworks::loadEventDb(void) +bool +vscpworks::loadEventDb(void) { - m_mutexVscpEventsMaps.lock(); + m_mutexVscpEventsMaps.lock(); - m_evdb = QSqlDatabase::addDatabase("QSQLITE", "vscpevents"); - QString dbpath = m_shareFolder; - dbpath += "vscp_events.sqlite3"; + m_evdb = QSqlDatabase::addDatabase("QSQLITE", "vscpevents"); + QString dbpath = m_shareFolder; + dbpath += "vscp_events.sqlite3"; - // If the database don't exist, bail out - if (!QFile::exists(dbpath)) { - QString err = QString(tr("The VSCP event database does not exist. Is it available? [%s]")).arg(dbpath); - fprintf(stderr, "%s", err.toStdString().c_str()); - m_mutexVscpEventsMaps.unlock(); - return false; - } + // If the database don't exist, bail out + if (!QFile::exists(dbpath)) { + QString err = QString(tr("The VSCP event database does not exist. Is it available? [%s]")).arg(dbpath); + fprintf(stderr, "%s", err.toStdString().c_str()); + m_mutexVscpEventsMaps.unlock(); + return false; + } - m_evdb.setDatabaseName(dbpath); - - if (!m_evdb.open()) { - QString err = QString(tr("The VSCP event database could not be opened. Is it available? [%s]")).arg(dbpath); - fprintf(stderr, "%s", err.toStdString().c_str()); - m_mutexVscpEventsMaps.unlock(); - return false; - } - else { - QSqlQuery queryClass("SELECT * FROM vscp_class order by class", m_evdb); - - while (queryClass.next()) { - uint16_t classid = queryClass.value(0).toUInt(); - QString className = queryClass.value(1).toString(); - QString classToken = queryClass.value(2).toString(); - m_mapVscpClassToToken[classid] = classToken; - - QString sqlTypeQuery = QString("SELECT * FROM vscp_type WHERE link_to_class=%1").arg(classid); - QSqlQuery queryType(sqlTypeQuery, m_evdb); - - while (queryType.next()) { - uint typeIdx = queryType.value(0).toUInt(); - uint16_t typeId = queryType.value(1).toUInt(); - QString typeToken = queryType.value(3).toString(); - uint32_t combined = ((classid << 16) + typeId); - m_mapVscpTypeToToken[(((uint32_t)classid << 16) + typeId)] = typeToken; - } - } + m_evdb.setDatabaseName(dbpath); + if (!m_evdb.open()) { + QString err = QString(tr("The VSCP event database could not be opened. Is it available? [%s]")).arg(dbpath); + fprintf(stderr, "%s", err.toStdString().c_str()); + m_mutexVscpEventsMaps.unlock(); + return false; + } + else { + QSqlQuery queryClass("SELECT * FROM vscp_class order by class", m_evdb); + + while (queryClass.next()) { + uint16_t classid = queryClass.value(0).toUInt(); + QString className = queryClass.value(1).toString(); + QString classToken = queryClass.value(2).toString(); + m_mapVscpClassToToken[classid] = classToken; + + QString sqlTypeQuery = QString("SELECT * FROM vscp_type WHERE link_to_class=%1").arg(classid); + QSqlQuery queryType(sqlTypeQuery, m_evdb); + + while (queryType.next()) { + uint typeIdx = queryType.value(0).toUInt(); + uint16_t typeId = queryType.value(1).toUInt(); + QString typeToken = queryType.value(3).toString(); + uint32_t combined = ((classid << 16) + typeId); + m_mapVscpTypeToToken[(((uint32_t)classid << 16) + typeId)] = typeToken; + } } + } - m_mutexVscpEventsMaps.unlock(); - return true; + m_mutexVscpEventsMaps.unlock(); + return true; } /////////////////////////////////////////////////////////////////////////////// // log // -void vscpworks::log(int level, const QString& message) +void +vscpworks::log(int level, const QString& message) { - // Log only messages - // if (level <= m_logLevel) { - - // QDateTime now = QDateTime::currentDateTime(); - - // QString strQuery = "INSERT INTO log (level, datetime, message) values ("; - // strQuery += QString::number(level); - // strQuery += ","; - // strQuery += "'" + now.toString() + "'"; - // strQuery += ","; - // strQuery += "'" +message + "'"; - // strQuery += ");"; - - // QSqlQuery query = QSqlQuery( m_worksdb ); - // if (!query.exec(strQuery)) { - // qDebug() << "Failed to insert log message"; - // } - // } + // Log only messages + // if (level <= m_logLevel) { + + // QDateTime now = QDateTime::currentDateTime(); + + // QString strQuery = "INSERT INTO log (level, datetime, message) values ("; + // strQuery += QString::number(level); + // strQuery += ","; + // strQuery += "'" + now.toString() + "'"; + // strQuery += ","; + // strQuery += "'" +message + "'"; + // strQuery += ");"; + + // QSqlQuery query = QSqlQuery( m_worksdb ); + // if (!query.exec(strQuery)) { + // qDebug() << "Failed to insert log message"; + // } + // } } - - - /////////////////////////////////////////////////////////////////////////////// // openVscpWorksDatabase // -bool vscpworks::openVscpWorksDatabase(void) +bool +vscpworks::openVscpWorksDatabase(void) { - // Set up database - QString eventdbname = m_shareFolder + "vscpworks.sqlite3"; - - QString dbName(eventdbname); - m_worksdb = QSqlDatabase::addDatabase("QSQLITE", "vscpworks"); - m_worksdb.setDatabaseName( dbName); - m_worksdb.open(); - - // Create GUID table if it does not exist - QSqlQuery query = QSqlQuery( m_worksdb ); - if (!query.exec("CREATE TABLE IF NOT EXISTS guid (" - "idx INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," - "guid TEXT UNIQUE," - "name TEXT," - "description TEXT);" - ) ) { - qDebug() << query.lastError(); - return false; - } + // Set up database + QString eventdbname = m_shareFolder + "vscpworks.sqlite3"; + + QString dbName(eventdbname); + m_worksdb = QSqlDatabase::addDatabase("QSQLITE", "vscpworks"); + m_worksdb.setDatabaseName(dbName); + m_worksdb.open(); + + // Create GUID table if it does not exist + QSqlQuery query = QSqlQuery(m_worksdb); + if (!query.exec("CREATE TABLE IF NOT EXISTS guid (" + "idx INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," + "guid TEXT UNIQUE," + "name TEXT," + "description TEXT);")) { + qDebug() << query.lastError(); + return false; + } - // Create GUID name index - if (!query.exec("CREATE INDEX IF NOT EXISTS \"idxGuidName\" ON \"guid\" (\"guid\" ASC)")) { - qDebug() << query.lastError(); - return false; - } + // Create GUID name index + if (!query.exec("CREATE INDEX IF NOT EXISTS \"idxGuidName\" ON \"guid\" (\"guid\" ASC)")) { + qDebug() << query.lastError(); + return false; + } - if (!query.exec("CREATE TABLE IF NOT EXISTS \"sensorindex\" (" - "\"idx\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," - "\"link_to_guid\" INTEGER, " - "\"sensor\" INTEGER, " - "\"name\" TEXT, " - "\"description\" TEXT );" - ) ) { - qDebug() << query.lastError(); - return false; - } + if (!query.exec("CREATE TABLE IF NOT EXISTS \"sensorindex\" (" + "\"idx\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," + "\"link_to_guid\" INTEGER, " + "\"sensor\" INTEGER, " + "\"name\" TEXT, " + "\"description\" TEXT );")) { + qDebug() << query.lastError(); + return false; + } - // Create sensor link + idx unique index - if (!query.exec("CREATE UNIQUE INDEX IF NOT EXISTS \"idxSensors\" ON \"sensorindex\" (\"link_to_guid\" ASC, \"sensor\" ASC)")) { - qDebug() << query.lastError(); - return false; - } + // Create sensor link + idx unique index + if (!query.exec("CREATE UNIQUE INDEX IF NOT EXISTS \"idxSensors\" ON \"sensorindex\" (\"link_to_guid\" ASC, \"sensor\" ASC)")) { + qDebug() << query.lastError(); + return false; + } - // Create log table if it does not exist - if (!query.exec("CREATE TABLE IF NOT EXISTS log (" - "idx INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," - "level INTEGER," - "datetime TEXT," - "message TEXT);" - ) ) { - qDebug() << query.lastError(); - return false; - } + // Create log table if it does not exist + if (!query.exec("CREATE TABLE IF NOT EXISTS log (" + "idx INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," + "level INTEGER," + "datetime TEXT," + "message TEXT);")) { + qDebug() << query.lastError(); + return false; + } - // Load known GUID's to memory - loadGuidTable(); + // Load known GUID's to memory + loadGuidTable(); - // Load known sensors to memory - loadSensorTable(); + // Load known sensors to memory + loadSensorTable(); - return true; + return true; } /////////////////////////////////////////////////////////////////////////////// // loadGuidTable // -bool vscpworks::loadGuidTable(void) +bool +vscpworks::loadGuidTable(void) { - m_mutexGuidMap.lock(); + m_mutexGuidMap.lock(); - QSqlQuery query("SELECT * FROM guid order by name", m_worksdb); - if (QSqlError::NoError != query.lastError().type()) { - m_mutexGuidMap.unlock(); - return false; - } + QSqlQuery query("SELECT * FROM guid order by name", m_worksdb); + if (QSqlError::NoError != query.lastError().type()) { + m_mutexGuidMap.unlock(); + return false; + } - while (query.next()) { - QString guid = query.value(1).toString(); - QString name = query.value(2).toString(); - m_mapGuidToSymbolicName[guid] = name; - } + while (query.next()) { + QString guid = query.value(1).toString(); + QString name = query.value(2).toString(); + m_mapGuidToSymbolicName[guid] = name; + } - m_mutexGuidMap.unlock(); - return true; + m_mutexGuidMap.unlock(); + return true; } /////////////////////////////////////////////////////////////////////////////// // loadSensorTable // -bool vscpworks::loadSensorTable(void) +bool +vscpworks::loadSensorTable(void) { - m_mutexSensorIndexMap.lock(); + m_mutexSensorIndexMap.lock(); - QSqlQuery query("SELECT * FROM sensorindex order by sensor", m_worksdb); - if (QSqlError::NoError != query.lastError().type()) { - m_mutexSensorIndexMap.unlock(); - return false; - } + QSqlQuery query("SELECT * FROM sensorindex order by sensor", m_worksdb); + if (QSqlError::NoError != query.lastError().type()) { + m_mutexSensorIndexMap.unlock(); + return false; + } - while (query.next()) { - int link_to_guid = query.value(1).toInt(); - int sensor = query.value(2).toInt(); - QString name = query.value(3).toString(); - m_mapSensorIndexToSymbolicName[(link_to_guid << 8) + sensor] = name; - } + while (query.next()) { + int link_to_guid = query.value(1).toInt(); + int sensor = query.value(2).toInt(); + QString name = query.value(3).toString(); + m_mapSensorIndexToSymbolicName[(link_to_guid << 8) + sensor] = name; + } - m_mutexSensorIndexMap.unlock(); - return true; + m_mutexSensorIndexMap.unlock(); + return true; } /////////////////////////////////////////////////////////////////////////////// // addGuid // -bool vscpworks::addGuid(QString guid, QString name) +bool +vscpworks::addGuid(QString guid, QString name) { - m_mutexGuidMap.lock(); + m_mutexGuidMap.lock(); - // If the GUID symbolic name already exist we - // are OK and done - if (0 != m_mapGuidToSymbolicName[guid].length()) { - m_mutexGuidMap.unlock(); - return true; - } + // If the GUID symbolic name already exist we + // are OK and done + if (0 != m_mapGuidToSymbolicName[guid].length()) { + m_mutexGuidMap.unlock(); + return true; + } - QString strInsert = "INSERT INTO guid (guid, name) VALUES (%1,%2);"; - QSqlQuery queryClass(strInsert.arg(guid).arg(name), m_worksdb); - if (queryClass.lastError().isValid()) { - spdlog::error(std::string(tr("Failed to insert GUID into database %s") - .arg(queryClass.lastError().text()).toStdString())); - qDebug() << queryClass.lastError(); - return false; - } + QString strInsert = "INSERT INTO guid (guid, name) VALUES (%1,%2);"; + QSqlQuery queryClass(strInsert.arg(guid).arg(name), m_worksdb); + if (queryClass.lastError().isValid()) { + spdlog::error(std::string(tr("Failed to insert GUID into database %s") + .arg(queryClass.lastError().text()) + .toStdString())); + qDebug() << queryClass.lastError(); + return false; + } - // Add to loaded - m_mapGuidToSymbolicName[guid] = name; + // Add to loaded + m_mapGuidToSymbolicName[guid] = name; - m_mutexGuidMap.unlock(); - return true; + m_mutexGuidMap.unlock(); + return true; } /////////////////////////////////////////////////////////////////////////////// // getIdxForGuidRecord // -int vscpworks::getIdxForGuidRecord(const QString& guid) +int +vscpworks::getIdxForGuidRecord(const QString& guid) { - int index = -1; + int index = -1; - m_mutexGuidMap.lock(); + m_mutexGuidMap.lock(); - QString strInsert = "SELECT * FROM guid WHERE guid='%1';"; + QString strInsert = "SELECT * FROM guid WHERE guid='%1';"; - QSqlQuery query(strInsert.arg(guid), m_worksdb); - if (query.lastError().isValid()) { - m_mutexGuidMap.unlock(); - return -1; - } + QSqlQuery query(strInsert.arg(guid), m_worksdb); + if (query.lastError().isValid()) { + m_mutexGuidMap.unlock(); + return -1; + } - if (query.next()) { - index = query.value(0).toInt(); - } + if (query.next()) { + index = query.value(0).toInt(); + } - m_mutexGuidMap.unlock(); - return index; + m_mutexGuidMap.unlock(); + return index; } /////////////////////////////////////////////////////////////////////////////// // getShortTypeToken // -QString vscpworks::getShortTypeToken(uint16_t vscpClass, uint16_t vscpType) +QString +vscpworks::getShortTypeToken(uint16_t vscpClass, uint16_t vscpType) { - // * * * Type * * * - QString strTypeToken = m_mapVscpTypeToToken[((uint32_t)vscpClass << 16) + vscpType]; - if (vscpClass >= 1024) { - strTypeToken = strTypeToken.right(strTypeToken.length()-11); // Remove "VSCP2_TYPE_" - } - else { - strTypeToken = strTypeToken.right(strTypeToken.length()-10); // Remove "VSCP_TYPE_" - } - int posUnderscore = strTypeToken.indexOf("_"); - if (posUnderscore) posUnderscore++; - return strTypeToken.right(strTypeToken.length()-posUnderscore); + // * * * Type * * * + QString strTypeToken = m_mapVscpTypeToToken[((uint32_t)vscpClass << 16) + vscpType]; + if (vscpClass >= 1024) { + strTypeToken = strTypeToken.right(strTypeToken.length() - 11); // Remove "VSCP2_TYPE_" + } + else { + strTypeToken = strTypeToken.right(strTypeToken.length() - 10); // Remove "VSCP_TYPE_" + } + int posUnderscore = strTypeToken.indexOf("_"); + if (posUnderscore) + posUnderscore++; + return strTypeToken.right(strTypeToken.length() - posUnderscore); } /////////////////////////////////////////////////////////////////////////////// // getHelpUrlForClass // -QString vscpworks::getHelpUrlForClass(uint16_t vscpClass) +QString +vscpworks::getHelpUrlForClass(uint16_t vscpClass) { - // https://grodansparadis.github.io/vscp-doc-spec/#/./class1.protocol - mustache templ{"https://grodansparadis.github.io/vscp-doc-spec/#/./{{vscp-class-token}}"}; - - kainjow::mustache::data _data; - _data.set("vscp-class-token", m_mapVscpClassToToken[vscpClass].toLower().toStdString()); - return templ.render(_data).c_str(); + // https://grodansparadis.github.io/vscp-doc-spec/#/./class1.protocol + mustache templ{ "https://grodansparadis.github.io/vscp-doc-spec/#/./{{vscp-class-token}}" }; + + kainjow::mustache::data _data; + _data.set("vscp-class-token", m_mapVscpClassToToken[vscpClass].toLower().toStdString()); + return templ.render(_data).c_str(); } /////////////////////////////////////////////////////////////////////////////// // getHelpUrlForType // -QString vscpworks::getHelpUrlForType(uint16_t vscpClass, uint16_t vscpType) +QString +vscpworks::getHelpUrlForType(uint16_t vscpClass, uint16_t vscpType) { - // https://grodansparadis.github.io/vscp-doc-spec/#/./class1.measurement?id=type6 - std::string strTemp = getHelpUrlForClass(vscpClass).toStdString(); - strTemp += "?id=type{{vscp-type-id}}"; - mustache templ{strTemp}; - - kainjow::mustache::data _data; - _data.set("vscp-type-id", QString::number(vscpType).toStdString()); - return templ.render(_data).c_str(); + // https://grodansparadis.github.io/vscp-doc-spec/#/./class1.measurement?id=type6 + std::string strTemp = getHelpUrlForClass(vscpClass).toStdString(); + strTemp += "?id=type{{vscp-type-id}}"; + mustache templ{ strTemp }; + + kainjow::mustache::data _data; + _data.set("vscp-type-id", QString::number(vscpType).toStdString()); + return templ.render(_data).c_str(); } /////////////////////////////////////////////////////////////////////////////// // getUnitInfo // -CVscpUnit vscpworks::getUnitInfo(uint16_t vscpClass, uint16_t vscpType, uint8_t unit) +CVscpUnit +vscpworks::getUnitInfo(uint16_t vscpClass, uint16_t vscpType, uint8_t unit) { - CVscpUnit u(unit); + CVscpUnit u(unit); - u.m_vscp_class = vscpClass; - u.m_vscp_type = vscpType; + u.m_vscp_class = vscpClass; + u.m_vscp_type = vscpType; - QString strQuery = "SELECT * FROM vscp_unit WHERE nunit='%1' AND link_to_class=%2 AND link_to_type=%3;"; + QString strQuery = "SELECT * FROM vscp_unit WHERE nunit='%1' AND link_to_class=%2 AND link_to_type=%3;"; - QSqlQuery query(m_evdb); - query.exec(strQuery.arg(unit).arg(vscpClass).arg(vscpType)); + QSqlQuery query(m_evdb); + query.exec(strQuery.arg(unit).arg(vscpClass).arg(vscpType)); - while (query.next()) { - u.m_unit = query.value(3).toInt(); - u.m_name = query.value(4).toString().toStdString(); - u.m_description = query.value(5).toString().toStdString(); - u.m_conversion0 = query.value(6).toString().toStdString(); - u.m_conversion = query.value(7).toString().toStdString(); - u.m_symbol_ascii = query.value(8).toString().toStdString(); - u.m_symbol_utf8= query.value(9).toString().toStdString(); - } + while (query.next()) { + u.m_unit = query.value(3).toInt(); + u.m_name = query.value(4).toString().toStdString(); + u.m_description = query.value(5).toString().toStdString(); + u.m_conversion0 = query.value(6).toString().toStdString(); + u.m_conversion = query.value(7).toString().toStdString(); + u.m_symbol_ascii = query.value(8).toString().toStdString(); + u.m_symbol_utf8 = query.value(9).toString().toStdString(); + } - return u; + return u; } /////////////////////////////////////////////////////////////////////////////// // addVscpEventToJsRenderFunction // -bool vscpworks::addVscpEventToJsRenderFunction(QJSEngine& engine, vscpEvent* pev) +bool +vscpworks::addVscpEventToJsRenderFunction(QJSEngine& engine, vscpEvent* pev) { - QJSValue result; - std::string str; - std::string strEvaluate; - - if (nullptr != pev) return false; - - strEvaluate = "var e = {};e.vscpData = ["; - vscp_writeDataToString(str, pev); - strEvaluate += str.c_str(); - strEvaluate += "];e.sizeData="; - strEvaluate += vscp_str_format("%d",pev->sizeData); - strEvaluate += ";e.guid = ["; - vscp_writeGuidArrayToString(str, pev->GUID, true); - strEvaluate += str; - strEvaluate += "];e.vscpHead="; - strEvaluate += vscp_str_format("%d",pev->head); - strEvaluate += ";e.vscpCrc="; - strEvaluate += vscp_str_format("%d",pev->crc); - strEvaluate += ";e.vscpObid="; - strEvaluate += vscp_str_format("%lu",pev->obid); - strEvaluate += ";e.vscpTimeStamp="; - strEvaluate += vscp_str_format("%lu",pev->timestamp); - strEvaluate += ";e.vscpClass="; - strEvaluate += vscp_str_format("%d",pev->vscp_class); - strEvaluate += ";e.vscpType="; - strEvaluate += vscp_str_format("%d",pev->vscp_type); - strEvaluate += ";e.vscpYear="; - strEvaluate += vscp_str_format("%d",pev->year); - strEvaluate += ";e.vscpMonth="; - strEvaluate += vscp_str_format("%d",pev->month); - strEvaluate += ";e.vscpDay="; - strEvaluate += vscp_str_format("%d",pev->day); - strEvaluate += ";e.vscpHour="; - strEvaluate += vscp_str_format("%d",pev->hour); - strEvaluate += ";e.vscpMinute="; - strEvaluate += vscp_str_format("%d",pev->minute); - strEvaluate += ";e.vscpSecond="; - strEvaluate += vscp_str_format("%d",pev->second); - strEvaluate += ";"; - - result = engine.evaluate(strEvaluate.c_str()); - return result.isError(); + QJSValue result; + std::string str; + std::string strEvaluate; + + if (nullptr != pev) + return false; + + strEvaluate = "var e = {};e.vscpData = ["; + vscp_writeDataToString(str, pev); + strEvaluate += str.c_str(); + strEvaluate += "];e.sizeData="; + strEvaluate += vscp_str_format("%d", pev->sizeData); + strEvaluate += ";e.guid = ["; + vscp_writeGuidArrayToString(str, pev->GUID, true); + strEvaluate += str; + strEvaluate += "];e.vscpHead="; + strEvaluate += vscp_str_format("%d", pev->head); + strEvaluate += ";e.vscpCrc="; + strEvaluate += vscp_str_format("%d", pev->crc); + strEvaluate += ";e.vscpObid="; + strEvaluate += vscp_str_format("%lu", pev->obid); + strEvaluate += ";e.vscpTimeStamp="; + strEvaluate += vscp_str_format("%lu", pev->timestamp); + strEvaluate += ";e.vscpClass="; + strEvaluate += vscp_str_format("%d", pev->vscp_class); + strEvaluate += ";e.vscpType="; + strEvaluate += vscp_str_format("%d", pev->vscp_type); + strEvaluate += ";e.vscpYear="; + strEvaluate += vscp_str_format("%d", pev->year); + strEvaluate += ";e.vscpMonth="; + strEvaluate += vscp_str_format("%d", pev->month); + strEvaluate += ";e.vscpDay="; + strEvaluate += vscp_str_format("%d", pev->day); + strEvaluate += ";e.vscpHour="; + strEvaluate += vscp_str_format("%d", pev->hour); + strEvaluate += ";e.vscpMinute="; + strEvaluate += vscp_str_format("%d", pev->minute); + strEvaluate += ";e.vscpSecond="; + strEvaluate += vscp_str_format("%d", pev->second); + strEvaluate += ";"; + + result = engine.evaluate(strEvaluate.c_str()); + return result.isError(); } /////////////////////////////////////////////////////////////////////////////// // replaceVscpRenderVariables // -std::string vscpworks::replaceVscpRenderVariables(const std::string& str) +std::string +vscpworks::replaceVscpRenderVariables(const std::string& str) { - std::string strwrk = str; + std::string strwrk = str; - mustache templVar{ strwrk }; - kainjow::mustache::data _data; - _data.set("newline", "\r\n"); - _data.set("quote", "\""); - _data.set("quote", "'"); - templVar.render(_data); + mustache templVar{ strwrk }; + kainjow::mustache::data _data; + _data.set("newline", "\r\n"); + _data.set("quote", "\""); + _data.set("quote", "'"); + templVar.render(_data); - return strwrk; + return strwrk; } /////////////////////////////////////////////////////////////////////////////// // getVscpRenderData // -QStringList vscpworks::getVscpRenderData(uint16_t vscpClass, uint16_t vscpType, QString type) +QStringList +vscpworks::getVscpRenderData(uint16_t vscpClass, uint16_t vscpType, QString type) { - QStringList strList; - QString strQuery = "SELECT * FROM vscp_render WHERE type='%1' AND link_to_class=%2 AND link_to_type=%3;"; - qDebug() << strQuery.arg(type).arg(vscpClass).arg(vscpType); - - QSqlQuery query(m_evdb); - query.exec(strQuery.arg(type).arg(vscpClass).arg(vscpType)); - // Try if there is a general render definition if none - // is defined for the event - qDebug() << query.size(); - qDebug() << query.numRowsAffected(); - if (query.next()) { - query.first(); + QStringList strList; + QString strQuery = "SELECT * FROM vscp_render WHERE type='%1' AND link_to_class=%2 AND link_to_type=%3;"; + qDebug() << strQuery.arg(type).arg(vscpClass).arg(vscpType); + + QSqlQuery query(m_evdb); + query.exec(strQuery.arg(type).arg(vscpClass).arg(vscpType)); + // Try if there is a general render definition if none + // is defined for the event + qDebug() << query.size(); + qDebug() << query.numRowsAffected(); + if (query.next()) { + query.first(); + } + else { + // Definition for all events of class + query.exec(strQuery.arg(type).arg(vscpClass).arg(-1)); + query.first(); + } + do { + + // * * * VARIABLES * * * + QString vscpVariables = query.value(4).toString(); + if (vscpVariables.startsWith("BASE64:", Qt::CaseInsensitive)) { + vscpVariables = vscpVariables.right(vscpVariables.length() - 7); + vscpVariables = QByteArray::fromBase64(vscpVariables.toLatin1(), QByteArray::Base64Encoding); } - else { - // Definition for all events of class - query.exec(strQuery.arg(type).arg(vscpClass).arg(-1)); - query.first(); + + qDebug() << vscpVariables; + qDebug() << "---------------------------------------------"; + vscpVariables.replace("\"", ""e;").replace(""e;", "'").replace("&", "&").replace(">", ">").replace("<", "<"); + qDebug() << vscpVariables; + + // * * * TEMPLATES * * * + QString vscpTemplate = query.value(5).toString(); + if (vscpTemplate.startsWith("BASE64:", Qt::CaseInsensitive)) { + vscpTemplate = vscpTemplate.right(vscpTemplate.length() - 7); + vscpTemplate = QByteArray::fromBase64(vscpVariables.toLatin1(), QByteArray::Base64Encoding); } - do { - - // * * * VARIABLES * * * - QString vscpVariables = query.value(4).toString(); - if (vscpVariables.startsWith("BASE64:", Qt::CaseInsensitive)) { - vscpVariables = vscpVariables.right(vscpVariables.length()-7); - vscpVariables = QByteArray::fromBase64(vscpVariables.toLatin1(), QByteArray::Base64Encoding); - } - - qDebug() << vscpVariables; - qDebug() << "---------------------------------------------"; - vscpVariables.replace("\"",""e;").replace(""e;","'").replace("&","&").replace(">",">").replace("<","<"); - qDebug() << vscpVariables; - - // * * * TEMPLATES * * * - QString vscpTemplate = query.value(5).toString(); - if (vscpTemplate.startsWith("BASE64:", Qt::CaseInsensitive)) { - vscpTemplate = vscpTemplate.right(vscpTemplate.length()-7); - vscpTemplate = QByteArray::fromBase64(vscpVariables.toLatin1(), QByteArray::Base64Encoding); - } - vscpTemplate.replace("\"",""e;").replace(""e;","'").replace("&","&").replace(">",">").replace("<","<"); - qDebug() << vscpTemplate; - strList << vscpVariables << vscpTemplate; - } while (query.next()); - - return strList; + vscpTemplate.replace("\"", ""e;").replace(""e;", "'").replace("&", "&").replace(">", ">").replace("<", "<"); + qDebug() << vscpTemplate; + strList << vscpVariables << vscpTemplate; + } while (query.next()); + + return strList; } /////////////////////////////////////////////////////////////////////////////// // getVscpRenderFunctions // -bool vscpworks::getVscpRenderFunctions(std::map& map, - std::string& strVariables) +bool +vscpworks::getVscpRenderFunctions(std::map& map, + std::string& strVariables) { - //QStringList strlst = QString(strVariables.c_str())::split("\n"); - std::deque strlst; - vscp_split(strlst, strVariables, "\n"); - - std::string name; - std::string func; - size_t posFunc; - size_t posColon; - foreach (std::string str, strlst) { - vscp_trim(str); - if (std::string::npos != (posFunc = str.find("function()"))) { - // We have a function "id: function() {....} - // it can have one line or be multiline 6 - if (posColon = (posColon = str.find(":"))) { - return false; - } - name = vscp_str_left(str, posColon); - func = vscp_str_right(str, str.length()-posFunc); - } - else { - func += str + "\n"; - } - - // When {} pairs are equal in func we are done - int cnt = 0; - foreach(QChar c, func) { - if('{' == c) { - cnt++; - } - if('}' == c) { - cnt--; - } - } - - if (!cnt) { - map[name] = func; - } + // QStringList strlst = QString(strVariables.c_str())::split("\n"); + std::deque strlst; + vscp_split(strlst, strVariables, "\n"); + + std::string name; + std::string func; + size_t posFunc; + size_t posColon; + foreach (std::string str, strlst) { + vscp_trim(str); + if (std::string::npos != (posFunc = str.find("function()"))) { + // We have a function "id: function() {....} + // it can have one line or be multiline 6 + if (posColon = (posColon = str.find(":"))) { + return false; + } + name = vscp_str_left(str, posColon); + func = vscp_str_right(str, str.length() - posFunc); + } + else { + func += str + "\n"; } - return true; + // When {} pairs are equal in func we are done + int cnt = 0; + foreach (QChar c, func) { + if ('{' == c) { + cnt++; + } + if ('}' == c) { + cnt--; + } + } + + if (!cnt) { + map[name] = func; + } + } + + return true; } /////////////////////////////////////////////////////////////////////////////// // renderVscpDataTemplate // -std::string vscpworks::renderVscpDataTemplate(std::map& map, - std::string& strTemplate) +std::string +vscpworks::renderVscpDataTemplate(std::map& map, + std::string& strTemplate) { - std::string strResult; + std::string strResult; - return strResult; -} + return strResult; +} /////////////////////////////////////////////////////////////////////////////// // newClientWindow @@ -1142,7 +1166,7 @@ vscpworks::newChildWindow(QMainWindow* pwnd) // clearChildWindow // -void +void vscpworks::clearChildWindow(QMainWindow* pwnd) { for (QMainWindow* pitem : m_childWindows) { diff --git a/src/vscpworks.h b/src/vscpworks.h index 387798ee..996cc5cb 100644 --- a/src/vscpworks.h +++ b/src/vscpworks.h @@ -38,21 +38,21 @@ #include "cfrmsession.h" #include +#include +#include +#include #include #include -#include -#include #include -#include #include -#include +#include +#include #include -#include #include -#include // Needs C++11 -std=c++11 #include +#include // Needs C++11 -std=c++11 #include "spdlog/sinks/rotating_file_sink.h" #include "spdlog/spdlog.h" @@ -71,14 +71,17 @@ Q_DECLARE_METATYPE(vscpEventEx) // home folder is used for storage of program configuration // system folder holds databases etc #ifdef WIN32 -#define DEFAULT_HOME_FOLDER "c:/programdata/vscp/vscpworks/" -#define DEFAULT_VSCP_SYSTEM_FOLDER "c:/programdata/vscp/" -#else -#define DEFAULT_HOME_FOLDER "~/.vscpworks/" -#define DEFAULT_VSCP_SYSTEM_FOLDER "/var/lib/vscp/" +#define DEFAULT_HOME_FOLDER "c:/programdata/vscp/vscpworks/" +#define DEFAULT_VSCP_SYSTEM_FOLDER "c:/programdata/vscp/" +#else +#define DEFAULT_HOME_FOLDER "~/.vscpworks/" +#define DEFAULT_VSCP_SYSTEM_FOLDER "/var/lib/vscp/" #endif -enum class numerical_base {HEX, DECIMAL, OCTAL, BINARY}; +enum class numerical_base { HEX, + DECIMAL, + OCTAL, + BINARY }; class FileDownloader; @@ -87,428 +90,428 @@ class FileDownloader; */ class vscpworks : public QApplication { - Q_OBJECT - - public: - /*! - Constructor - */ - vscpworks(int &argc, char **argv); - - /*! - Destructor - */ - ~vscpworks(); - - const QString URL_EVENT_VERSION = tr("https://www.vscp.org/events/version.js"); - const QString URL_EVENT_DATABASE = tr("https://www.vscp.org/events/vscp_events.sqlite3"); - - /*! - Add connection - @param conn JSON connection object - @param bSave Save connections if set to true - */ - bool addConnection(QJsonObject& conn, bool bSave = false); - - /*! - Remove connection - @param uuid Id for connection - @param bSave Save connections if set to true - */ - bool removeConnection(const QString& uuid, bool bSave = false); - - /*! - Load configuration settings from disk - */ - void loadSettings(void); - - /*! - Save configuration settings to disk - */ - void writeSettings(void); - - /*! - Save connections to disk - */ - void writeConnections(void); - - /*! - Check the remote event information at - https://vscp.org/events for the file - version.json which hold the release - version for the files. A new version - of the db should be downloaded if this - date is newer then stored. - - @return True if current rate is up to date, if not - false is returned and a new version of the - database should be downloaded. - */ - //bool checkRemoteEventDbVersion(void); - - /*! - Loading data from the VSCP Event database into memory - @return true on success - */ - bool loadEventDb(void); - - /*! - Loading data from the vscpworks database GUID table into memory - @return true on success - */ - bool loadGuidTable(void); - - /*! - Loading data from the vscpworks database sensorindex table into memory - @return true on success - */ - bool loadSensorTable(void); - - /*! - Add GUID with symbolic name - @param name GUID symbolic name of GUID to add - @param guid GUID to add - @return True on success, false on failure - */ - bool addGuid(QString name, QString guid); - - /*! - Get index for GUID record - @param guid GUID on string form - @return index or -1 if error. - */ - int getIdxForGuidRecord(const QString& guid); - - /*! - Convert integer number to selected base. - The resulting string representation of the number have - - No prefix if decimal - - "0x" prefix if hexadecimal - - "0o" prefix if octal - - "0b" prefix if binary - @param value Integer that should be converted to a number - in the current base. - @param tobase If set to -1 (default) the current base is used for - base, otherwise the set base will be used. - @return String representing number with prepended base prefix. - */ - QString decimalToStringInBase(uint32_t value, int tobase = -1); - - /*! - Convert integer number to selected base - The resulting string representation of the number have - - No prefix if decimal - - "0x" prefix if hexadecimal - - "0o" prefix if octal - - "0b" prefix if binary - @param strvalue Integer on string form whish should be converted to - a number in the current base. - @param tobase If set to -1 (default) the current base is used for - base, otherwise the set base will be used. - @return String representing number with prepended base prefix. - */ - QString decimalToStringInBase(const QString& strvalue, int tobase = -1); - - /*! - Get connection name - @param type Connection code - @return String with connection descriptive name - */ - QString getConnectionName(CVscpClient::connType type); - - /*! - Create and open the VSCP Works database with tables and structure - */ - bool openVscpWorksDatabase(void); - - /*! - Log one message to the logging database - @param level Log level 0 is lowest - @param message to log - */ - void log(int level, const QString& message); - - /*! - Get short token from class/type. That is a token on the form - "TEMPERATURE" instead of "CLASS1_TYPE_MEASUREMENT_TEMPERATURE" - @param vscpClass A valid VSCP class token - @param vscpType A valid VSCP type token for the class. - @return A string contining the token - */ - QString getShortTypeToken(uint16_t vscpClass, uint16_t vscpType); - - /*! - Get URL for specification page that have info about this class - @param vscpClass VSCP class to get help URL for - @return URL to help page - */ - QString getHelpUrlForClass(uint16_t vscpClass); - - /*! - Get URL for specification page section that have info about this class/type - @param vscpClass VSCP class to get help URL for - @param vscpType VSCP type to get help URL for - @return URL to help page - */ - QString getHelpUrlForType(uint16_t vscpClass, uint16_t vscpType); - - /*! - Get unit information info from database for a specific event - @param vscpClass VSCP Class to lookup unit for - @param vscpClass VSCP TYpe to lookup unit for - @param unit The VSCP specific unit code to look up - @return Returns a CVscpUnit with unit data filled in. Defaults to zero. - */ - CVscpUnit getUnitInfo(uint16_t vscpClass, uint16_t vscpType, uint8_t unit=0); - - /*! - Replace mustache special character variable data with - proper values - @param str String that should have tags replaces - @return Handled string - */ - std::string replaceVscpRenderVariables(const std::string& str); - - /*! - Get VSCP data conversion function definitions and there names - @param map A map that will get name/func pairs - @param strVariable String that holds variable definitions - @return True on success, false on failure - */ - bool getVscpRenderFunctions(std::map& map, - std::string& strVariables); - - /*! - Fill the render template with data from a supplied map. - The map holds pairs like - - lbl-start, '' - lbl-end, '' - val-start, '' - val-end, '' - newline, '
' - crc8, '12345' - .... - - @param map A map holding variables and value pairs - @param strTemplate This is the template to use - @return A string generated from the supplied template and variables - */ - std::string renderVscpDataTemplate(std::map& map, - std::string& strTemplate); - - /*! - Get render variables and template for a class/type pair - @param vscpClass The VSCP class to get variables/template for - @param vscpType The VSCP type to get variables/template for - @param type Environment to get variables/template for, Default is "vscpworks" - @return A string list with the variables string at pos 0 and - the template in pos 1 - */ - QStringList getVscpRenderData(uint16_t vscpClass, - uint16_t vscpType, - QString type="vscpworks"); - - /*! - Define global JavaScript object of a VSCP event for further - processing by other evaluations - @param engine Active Qt JavaScript engine - @param pev VSCP Event to fill in - @return True on success, false on failure - */ - bool addVscpEventToJsRenderFunction(QJSEngine& engine, vscpEvent* pev); - - /*! - A client adds itself to the list of child windows - so the main window can delete the if needed. - */ - void newChildWindow(QMainWindow* pwnd); - - /*! - A client removes itself from the list of child windows when - it destroys itself. - */ - void clearChildWindow(QMainWindow* pwnd); - - // ------------------------------------------------------------------------ - // Global Configuration information below - // This info is read from a configuration file - // at startup and saved on close. The configuration - // file should be placed in the home folder. - // ------------------------------------------------------------------------ - - // ------------------------------------------------------------------------ - - /// Folder used for configuration - /// Linux: ~/.configure/VSCP/(vscpworks+.conf) - QString m_configFolder; - - /// Folder for writeable data - /// Linux: ~/.local/share/vscp/vscpworks+ - QString m_shareFolder; - - // Folder used for VSCP files like db's - // Linux: - // vscp/drivers/level1 - contain level one drivers - // vscp/drivers/level2 - contain level two drivers - // Windows: - // c:/program data/vscp/drivers/level1 - // c:/program data/vscp/drivers/level2 - QString m_vscpHomeFolder; - - // --------------------------------------------------- - - /// Enable darktheme - bool m_bEnableDarkTheme; - - /// Numerical base for all numericals in system - numerical_base m_base; - - /*! - Prefered language to use for MDF information - */ - std::string m_preferredLanguage; - - /*! - If true (default) ask before deleting or - clearing data - */ - bool m_bAskBeforeDelete; - - /*! - If set to true will not ask for save format - */ - bool m_bSaveAlwaysJSON; - - //************************************************************************** - // LOGGER (SPDLOG) - //************************************************************************** - - bool m_bEnableFileLog; - spdlog::level::level_enum m_fileLogLevel; - std::string m_fileLogPattern; - std::string m_fileLogPath; - uint32_t m_maxFileLogSize; - uint16_t m_maxFileLogFiles; - - bool m_bEnableConsoleLog; - spdlog::level::level_enum m_consoleLogLevel; - std::string m_consoleLogPattern; - - // ------------------------------------------------------------------------ - // Session - // ------------------------------------------------------------------------ - - /// Response timeout used for session window - uint32_t m_session_timeout; - - /*! - Maximum number of events in a session receive list - -1 is no limit (default) - */ - int m_session_maxEvents; - - /// Autoconnect if true when new session window is opened - bool m_session_bAutoConnect; - - /// Show the full token for VSCP types - bool m_session_bShowFullTypeToken; - - /// TX Rows autosaved/autoloaded on session start/end - bool m_session_bAutoSaveTxRows; - - /*! - VSCP Class display format in receive list - */ - CFrmSession::classDisplayFormat m_session_ClassDisplayFormat; + Q_OBJECT + +public: + /*! + Constructor + */ + vscpworks(int& argc, char** argv); + + /*! + Destructor + */ + ~vscpworks(); + + const QString URL_EVENT_VERSION = tr("https://www.vscp.org/events/version.js"); + const QString URL_EVENT_DATABASE = tr("https://www.vscp.org/events/vscp_events.sqlite3"); + + /*! + Add connection + @param conn JSON connection object + @param bSave Save connections if set to true + */ + bool addConnection(QJsonObject& conn, bool bSave = false); + + /*! + Remove connection + @param uuid Id for connection + @param bSave Save connections if set to true + */ + bool removeConnection(const QString& uuid, bool bSave = false); + + /*! + Load configuration settings from disk + */ + void loadSettings(void); + + /*! + Save configuration settings to disk + */ + void writeSettings(void); + + /*! + Save connections to disk + */ + void writeConnections(void); + + /*! + Check the remote event information at + https://vscp.org/events for the file + version.json which hold the release + version for the files. A new version + of the db should be downloaded if this + date is newer then stored. + + @return True if current rate is up to date, if not + false is returned and a new version of the + database should be downloaded. + */ + // bool checkRemoteEventDbVersion(void); + + /*! + Loading data from the VSCP Event database into memory + @return true on success + */ + bool loadEventDb(void); + + /*! + Loading data from the vscpworks database GUID table into memory + @return true on success + */ + bool loadGuidTable(void); + + /*! + Loading data from the vscpworks database sensorindex table into memory + @return true on success + */ + bool loadSensorTable(void); + + /*! + Add GUID with symbolic name + @param name GUID symbolic name of GUID to add + @param guid GUID to add + @return True on success, false on failure + */ + bool addGuid(QString name, QString guid); + + /*! + Get index for GUID record + @param guid GUID on string form + @return index or -1 if error. + */ + int getIdxForGuidRecord(const QString& guid); + + /*! + Convert integer number to selected base. + The resulting string representation of the number have + - No prefix if decimal + - "0x" prefix if hexadecimal + - "0o" prefix if octal + - "0b" prefix if binary + @param value Integer that should be converted to a number + in the current base. + @param tobase If set to -1 (default) the current base is used for + base, otherwise the set base will be used. + @return String representing number with prepended base prefix. + */ + QString decimalToStringInBase(uint32_t value, int tobase = -1); + + /*! + Convert integer number to selected base + The resulting string representation of the number have + - No prefix if decimal + - "0x" prefix if hexadecimal + - "0o" prefix if octal + - "0b" prefix if binary + @param strvalue Integer on string form whish should be converted to + a number in the current base. + @param tobase If set to -1 (default) the current base is used for + base, otherwise the set base will be used. + @return String representing number with prepended base prefix. + */ + QString decimalToStringInBase(const QString& strvalue, int tobase = -1); + + /*! + Get connection name + @param type Connection code + @return String with connection descriptive name + */ + QString getConnectionName(CVscpClient::connType type); + + /*! + Create and open the VSCP Works database with tables and structure + */ + bool openVscpWorksDatabase(void); + + /*! + Log one message to the logging database + @param level Log level 0 is lowest + @param message to log + */ + void log(int level, const QString& message); + + /*! + Get short token from class/type. That is a token on the form + "TEMPERATURE" instead of "CLASS1_TYPE_MEASUREMENT_TEMPERATURE" + @param vscpClass A valid VSCP class token + @param vscpType A valid VSCP type token for the class. + @return A string contining the token + */ + QString getShortTypeToken(uint16_t vscpClass, uint16_t vscpType); + + /*! + Get URL for specification page that have info about this class + @param vscpClass VSCP class to get help URL for + @return URL to help page + */ + QString getHelpUrlForClass(uint16_t vscpClass); + + /*! + Get URL for specification page section that have info about this class/type + @param vscpClass VSCP class to get help URL for + @param vscpType VSCP type to get help URL for + @return URL to help page + */ + QString getHelpUrlForType(uint16_t vscpClass, uint16_t vscpType); + + /*! + Get unit information info from database for a specific event + @param vscpClass VSCP Class to lookup unit for + @param vscpClass VSCP TYpe to lookup unit for + @param unit The VSCP specific unit code to look up + @return Returns a CVscpUnit with unit data filled in. Defaults to zero. + */ + CVscpUnit getUnitInfo(uint16_t vscpClass, uint16_t vscpType, uint8_t unit = 0); + + /*! + Replace mustache special character variable data with + proper values + @param str String that should have tags replaces + @return Handled string + */ + std::string replaceVscpRenderVariables(const std::string& str); + + /*! + Get VSCP data conversion function definitions and there names + @param map A map that will get name/func pairs + @param strVariable String that holds variable definitions + @return True on success, false on failure + */ + bool getVscpRenderFunctions(std::map& map, + std::string& strVariables); + + /*! + Fill the render template with data from a supplied map. + The map holds pairs like + + lbl-start, '' + lbl-end, '' + val-start, '' + val-end, '' + newline, '
' + crc8, '12345' + .... + + @param map A map holding variables and value pairs + @param strTemplate This is the template to use + @return A string generated from the supplied template and variables + */ + std::string renderVscpDataTemplate(std::map& map, + std::string& strTemplate); + + /*! + Get render variables and template for a class/type pair + @param vscpClass The VSCP class to get variables/template for + @param vscpType The VSCP type to get variables/template for + @param type Environment to get variables/template for, Default is "vscpworks" + @return A string list with the variables string at pos 0 and + the template in pos 1 + */ + QStringList getVscpRenderData(uint16_t vscpClass, + uint16_t vscpType, + QString type = "vscpworks"); + + /*! + Define global JavaScript object of a VSCP event for further + processing by other evaluations + @param engine Active Qt JavaScript engine + @param pev VSCP Event to fill in + @return True on success, false on failure + */ + bool addVscpEventToJsRenderFunction(QJSEngine& engine, vscpEvent* pev); + + /*! + A client adds itself to the list of child windows + so the main window can delete the if needed. + */ + void newChildWindow(QMainWindow* pwnd); + + /*! + A client removes itself from the list of child windows when + it destroys itself. + */ + void clearChildWindow(QMainWindow* pwnd); + + // ------------------------------------------------------------------------ + // Global Configuration information below + // This info is read from a configuration file + // at startup and saved on close. The configuration + // file should be placed in the home folder. + // ------------------------------------------------------------------------ + + // ------------------------------------------------------------------------ + + /// Folder used for configuration + /// Linux: ~/.configure/VSCP/(vscpworks+.conf) + QString m_configFolder; + + /// Folder for writeable data + /// Linux: ~/.local/share/vscp/vscpworks+ + QString m_shareFolder; + + // Folder used for VSCP files like db's + // Linux: + // vscp/drivers/level1 - contain level one drivers + // vscp/drivers/level2 - contain level two drivers + // Windows: + // c:/program data/vscp/drivers/level1 + // c:/program data/vscp/drivers/level2 + QString m_vscpHomeFolder; + + // --------------------------------------------------- + + /// Enable darktheme + bool m_bEnableDarkTheme; + + /// Numerical base for all numericals in system + numerical_base m_base; + + /*! + Prefered language to use for MDF information + */ + std::string m_preferredLanguage; + + /*! + If true (default) ask before deleting or + clearing data + */ + bool m_bAskBeforeDelete; + + /*! + If set to true will not ask for save format + */ + bool m_bSaveAlwaysJSON; + + //************************************************************************** + // LOGGER (SPDLOG) + //************************************************************************** + + bool m_bEnableFileLog; + spdlog::level::level_enum m_fileLogLevel; + std::string m_fileLogPattern; + std::string m_fileLogPath; + uint32_t m_maxFileLogSize; + uint16_t m_maxFileLogFiles; + + bool m_bEnableConsoleLog; + spdlog::level::level_enum m_consoleLogLevel; + std::string m_consoleLogPattern; + + // ------------------------------------------------------------------------ + // Session + // ------------------------------------------------------------------------ + + /// Response timeout used for session window + uint32_t m_session_timeout; + + /*! + Maximum number of events in a session receive list + -1 is no limit (default) + */ + int m_session_maxEvents; + + /// Autoconnect if true when new session window is opened + bool m_session_bAutoConnect; - /*! - VSCP Type display format in receive list - */ - CFrmSession::typeDisplayFormat m_session_TypeDisplayFormat; + /// Show the full token for VSCP types + bool m_session_bShowFullTypeToken; - /*! - VSCP GUID display format in receive list - */ - CFrmSession::guidDisplayFormat m_session_GuidDisplayFormat; + /// TX Rows autosaved/autoloaded on session start/end + bool m_session_bAutoSaveTxRows; - // ------------------------------------------------------------------------ - // Configuration - // ------------------------------------------------------------------------ + /*! + VSCP Class display format in receive list + */ + CFrmSession::classDisplayFormat m_session_ClassDisplayFormat; - /// Base for configuration values - numerical_base m_config_base; + /*! + VSCP Type display format in receive list + */ + CFrmSession::typeDisplayFormat m_session_TypeDisplayFormat; - /// Disable colors in configuration - bool m_config_bDisableColors; + /*! + VSCP GUID display format in receive list + */ + CFrmSession::guidDisplayFormat m_session_GuidDisplayFormat; - /// Response timeout used for configuration window - uint32_t m_config_timeout; + // ------------------------------------------------------------------------ + // Configuration + // ------------------------------------------------------------------------ - // ------------------------------------------------------------------------ + /// Base for configuration values + numerical_base m_config_base; - /// URL for event database - QUrl m_eventDbUrl; + /// Disable colors in configuration + bool m_config_bDisableColors; - /*! - This is the date and time for the last event - database download - */ - //QDateTime m_lastEventUrlDownLoad; + /// Response timeout used for configuration window + uint32_t m_config_timeout; - /*! - Latest VSCP event download - */ - QDateTime m_lastEventDbLoadDateTime; + // ------------------------------------------------------------------------ - /*! - Latest VSCP events on server - */ - QDateTime m_lastEventDbServerDateTime; + /// URL for event database + QUrl m_eventDbUrl; - // -------------------------------------------------- + /*! + This is the date and time for the last event + database download + */ + // QDateTime m_lastEventUrlDownLoad; - FileDownloader *m_pVersionCtrl; + /*! + Latest VSCP event download + */ + QDateTime m_lastEventDbLoadDateTime; - /// List with defined connections uuid,conf-obj - QMap m_mapConn; + /*! + Latest VSCP events on server + */ + QDateTime m_lastEventDbServerDateTime; - /// Mutex protecting vscpClass/vscpType maps - QMutex m_mutexVscpEventsMaps; + // -------------------------------------------------- - /// VSCP classes (class-id) -> token - std::map m_mapVscpClassToToken; + FileDownloader* m_pVersionCtrl; - /// VSCP (class-id + token-id) -> token - std::map m_mapVscpTypeToToken; + /// List with defined connections uuid,conf-obj + QMap m_mapConn; - /// Mutex protecting GUID maps - QMutex m_mutexGuidMap; + /// Mutex protecting vscpClass/vscpType maps + QMutex m_mutexVscpEventsMaps; - /// VSCP GUID to symbolic GUID name - std::map m_mapGuidToSymbolicName; + /// VSCP classes (class-id) -> token + std::map m_mapVscpClassToToken; - /// VSCP GUID discovery guid/date + client-info (discoverer) - std::map m_mapGuidToDiscovery; + /// VSCP (class-id + token-id) -> token + std::map m_mapVscpTypeToToken; - /// Mutex protecting Sensor Index maps - QMutex m_mutexSensorIndexMap; + /// Mutex protecting GUID maps + QMutex m_mutexGuidMap; - /*! - Sensor index to symbolic sensor name - (link_to_guid << 8) + sensor - */ - std::map m_mapSensorIndexToSymbolicName; + /// VSCP GUID to symbolic GUID name + std::map m_mapGuidToSymbolicName; - /// VSCP works database - QSqlDatabase m_worksdb; + /// VSCP GUID discovery guid/date + client-info (discoverer) + std::map m_mapGuidToDiscovery; - /// Event database - QSqlDatabase m_evdb; - - // List with open childwindows - std::list m_childWindows; -}; + /// Mutex protecting Sensor Index maps + QMutex m_mutexSensorIndexMap; + + /*! + Sensor index to symbolic sensor name + (link_to_guid << 8) + sensor + */ + std::map m_mapSensorIndexToSymbolicName; + /// VSCP works database + QSqlDatabase m_worksdb; + + /// Event database + QSqlDatabase m_evdb; + + // List with open childwindows + std::list m_childWindows; + +}; #endif diff --git a/src/vscpworks.qrc b/src/vscpworks.qrc index 240afb9e..52e8c679 100644 --- a/src/vscpworks.qrc +++ b/src/vscpworks.qrc @@ -1,6 +1,11 @@ ../images/svg/search.svg + ../images/svg/copy.svg + ../images/svg/clone.svg + ../images/svg/pen.svg + ../images/svg/pencil.svg + ../images/svg/circle-check.svg ../images/svg/nodes.svg ../images/svg/plug-disconnected-black.svg ../images/svg/plug-disconnected-white.svg