diff --git a/pom.xml b/pom.xml
index b0daf1b8c..6a562c324 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
net.sourceforge.plantuml
plantuml
- 1.2017.19-SNAPSHOT
+ 1.2017.20-SNAPSHOT
jar
PlantUML
@@ -120,6 +120,12 @@
net/sourceforge/plantuml/math/*.js
+
+ ${project.basedir}
+
+ stdlib/**/*.puml
+
+
diff --git a/src/net/sourceforge/plantuml/BlockUmlBuilder.java b/src/net/sourceforge/plantuml/BlockUmlBuilder.java
index 0d8a1d2ff..78367a145 100644
--- a/src/net/sourceforge/plantuml/BlockUmlBuilder.java
+++ b/src/net/sourceforge/plantuml/BlockUmlBuilder.java
@@ -39,7 +39,6 @@ import java.io.File;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -65,8 +64,8 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
this.defines = defines;
try {
reader2 = new UncommentReadLine(new ReadLineReader(reader, desc));
- includer = new Preprocessor(reader2, charset, defines, newCurrentDir, this);
- init(includer, config);
+ includer = new Preprocessor(config, reader2, charset, defines, newCurrentDir, this);
+ init(includer);
} finally {
if (includer != null) {
includer.close();
@@ -79,7 +78,7 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
this(config, charset, defines, reader, null, null);
}
- private void init(Preprocessor includer, List config) throws IOException {
+ private void init(Preprocessor includer) throws IOException {
CharSequence2 s = null;
List current2 = null;
boolean paused = false;
@@ -108,21 +107,21 @@ public final class BlockUmlBuilder implements DefinitionsContainer {
reader2.setPaused(false);
}
if (StartUtils.isArobaseEndDiagram(s) && current2 != null) {
- current2.addAll(1, convert(config, new LineLocationImpl(null, null).oneLineRead()));
- blocks.add(new BlockUml(current2, startLine - config.size(), defines.cloneMe()));
+ // current2.addAll(1, convert(config, new LineLocationImpl(null, null).oneLineRead()));
+ blocks.add(new BlockUml(current2, startLine/* - config.size() */, defines.cloneMe()));
current2 = null;
reader2.setPaused(false);
}
}
}
- private Collection convert(List config, LineLocation location) {
- final List result = new ArrayList();
- for (String s : config) {
- result.add(new CharSequence2Impl(s, location));
- }
- return result;
- }
+ // private Collection convert(List config, LineLocation location) {
+ // final List result = new ArrayList();
+ // for (String s : config) {
+ // result.add(new CharSequence2Impl(s, location));
+ // }
+ // return result;
+ // }
public List getBlockUmls() {
return Collections.unmodifiableList(blocks);
diff --git a/src/net/sourceforge/plantuml/Option.java b/src/net/sourceforge/plantuml/Option.java
index e86c400dc..824005a65 100644
--- a/src/net/sourceforge/plantuml/Option.java
+++ b/src/net/sourceforge/plantuml/Option.java
@@ -282,8 +282,8 @@ public class Option {
OptionFlags.getInstance().setGui(true);
} else if (s.equalsIgnoreCase("-encodesprite")) {
OptionFlags.getInstance().setEncodesprite(true);
- } else if (s.equalsIgnoreCase("-nosuggestengine")) {
- OptionFlags.getInstance().setUseSuggestEngine(false);
+ // } else if (s.equalsIgnoreCase("-nosuggestengine")) {
+ // OptionFlags.getInstance().setUseSuggestEngine(false);
} else if (s.equalsIgnoreCase("-printfonts")) {
OptionFlags.getInstance().setPrintFonts(true);
} else if (s.equalsIgnoreCase("-dumphtmlstats")) {
diff --git a/src/net/sourceforge/plantuml/OptionFlags.java b/src/net/sourceforge/plantuml/OptionFlags.java
index 38daaaace..aac4ebcb8 100644
--- a/src/net/sourceforge/plantuml/OptionFlags.java
+++ b/src/net/sourceforge/plantuml/OptionFlags.java
@@ -97,7 +97,7 @@ public class OptionFlags {
quiet = false;
checkDotError = false;
printFonts = false;
- useSuggestEngine = true;
+ // useSuggestEngine = true;
// failOnError = false;
encodesprite = false;
// PIC_LINE = false;
@@ -116,7 +116,7 @@ public class OptionFlags {
private boolean quiet;
private boolean checkDotError;
private boolean printFonts;
- private boolean useSuggestEngine;
+ // private boolean useSuggestEngine;
private boolean encodesprite;
private boolean dumpHtmlStats;
private boolean dumpStats;
@@ -250,13 +250,17 @@ public class OptionFlags {
this.printFonts = printFonts;
}
- public final boolean isUseSuggestEngine() {
- return useSuggestEngine;
+ public final boolean isUseSuggestEngine2() {
+ return false;
}
- public final void setUseSuggestEngine(boolean useSuggestEngine) {
- this.useSuggestEngine = useSuggestEngine;
- }
+ // public final boolean isUseSuggestEngine() {
+ // return useSuggestEngine;
+ // }
+ //
+ // public final void setUseSuggestEngine(boolean useSuggestEngine) {
+ // this.useSuggestEngine = useSuggestEngine;
+ // }
public final boolean isEncodesprite() {
return encodesprite;
diff --git a/src/net/sourceforge/plantuml/OptionPrint.java b/src/net/sourceforge/plantuml/OptionPrint.java
index 07c52a78f..635ec0061 100644
--- a/src/net/sourceforge/plantuml/OptionPrint.java
+++ b/src/net/sourceforge/plantuml/OptionPrint.java
@@ -119,7 +119,7 @@ public class OptionPrint {
System.out.println(" -decodeurl\t\tTo retrieve the PlantUML source from an encoded URL");
System.out.println(" -syntax\t\tTo report any syntax error from standard input without generating images");
System.out.println(" -language\t\tTo print the list of PlantUML keywords");
- System.out.println(" -nosuggestengine\tTo disable the suggest engine when errors in diagrams");
+ // System.out.println(" -nosuggestengine\tTo disable the suggest engine when errors in diagrams");
System.out.println(" -checkonly\t\tTo check the syntax of files without generating images");
System.out.println(" -failfast\t\tTo stop processing as soon as a syntax error in diagram occurs");
System.out.println(" -failfast2\t\tTo do a first syntax check before processing files, to fail even faster");
diff --git a/src/net/sourceforge/plantuml/PSystemBuilder.java b/src/net/sourceforge/plantuml/PSystemBuilder.java
index f935262c7..68d767c7f 100644
--- a/src/net/sourceforge/plantuml/PSystemBuilder.java
+++ b/src/net/sourceforge/plantuml/PSystemBuilder.java
@@ -57,6 +57,7 @@ import net.sourceforge.plantuml.descdiagram.DescriptionDiagramFactory;
import net.sourceforge.plantuml.directdot.PSystemDotFactory;
import net.sourceforge.plantuml.ditaa.PSystemDitaaFactory;
import net.sourceforge.plantuml.donors.PSystemDonorsFactory;
+import net.sourceforge.plantuml.donors.PSystemSkinparameterListFactory;
import net.sourceforge.plantuml.eggs.PSystemAppleTwoFactory;
import net.sourceforge.plantuml.eggs.PSystemCharlieFactory;
import net.sourceforge.plantuml.eggs.PSystemColorsFactory;
@@ -157,6 +158,7 @@ public class PSystemBuilder {
factories.add(new PSystemLicenseFactory());
factories.add(new PSystemVersionFactory());
factories.add(new PSystemDonorsFactory());
+ factories.add(new PSystemSkinparameterListFactory());
factories.add(new PSystemListFontsFactory());
factories.add(new PSystemOpenIconicFactory());
factories.add(new PSystemListOpenIconicFactory());
@@ -188,7 +190,8 @@ public class PSystemBuilder {
if (License.getCurrent() == License.GPL || License.getCurrent() == License.GPLV2) {
factories.add(new PSystemXearthFactory());
}
- factories.add(new GanttDiagramFactory());
+ factories.add(new GanttDiagramFactory(DiagramType.GANTT));
+ factories.add(new GanttDiagramFactory(DiagramType.UML));
factories.add(new FlowDiagramFactory());
factories.add(new PSystemTreeFactory(DiagramType.JUNGLE));
factories.add(new PSystemCuteFactory(DiagramType.CUTE));
diff --git a/src/net/sourceforge/plantuml/PSystemError.java b/src/net/sourceforge/plantuml/PSystemError.java
index 1c08d1ced..5c889ae4b 100644
--- a/src/net/sourceforge/plantuml/PSystemError.java
+++ b/src/net/sourceforge/plantuml/PSystemError.java
@@ -65,6 +65,7 @@ import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
import net.sourceforge.plantuml.ugraphic.ColorMapperIdentity;
import net.sourceforge.plantuml.ugraphic.ImageBuilder;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UImage;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@@ -185,6 +186,10 @@ public class PSystemError extends AbstractPSystem {
return new Dimension2DDouble(imWidth + 1, imHeight + 1);
}
+ public MinMax getMinMax(StringBounder stringBounder) {
+ return MinMax.fromMax(imWidth + 1, imHeight + 1);
+ }
+
public HtmlColor getBackcolor() {
return backImage;
}
diff --git a/src/net/sourceforge/plantuml/SkinParam.java b/src/net/sourceforge/plantuml/SkinParam.java
index df9e1a66c..62fbb70a5 100644
--- a/src/net/sourceforge/plantuml/SkinParam.java
+++ b/src/net/sourceforge/plantuml/SkinParam.java
@@ -50,6 +50,7 @@ import net.sourceforge.plantuml.command.regex.Matcher2;
import net.sourceforge.plantuml.command.regex.MyPattern;
import net.sourceforge.plantuml.command.regex.Pattern2;
import net.sourceforge.plantuml.creole.CommandCreoleMonospaced;
+import net.sourceforge.plantuml.cucadiagram.LinkStyle;
import net.sourceforge.plantuml.cucadiagram.Rankdir;
import net.sourceforge.plantuml.cucadiagram.Stereotype;
import net.sourceforge.plantuml.cucadiagram.dot.DotSplines;
@@ -112,7 +113,18 @@ public class SkinParam implements ISkinParam {
return result;
}
- static List cleanForKey(String key) {
+ private final Map> cacheCleanForKey = new HashMap>();
+
+ List cleanForKey(String key) {
+ List result = cacheCleanForKey.get(key);
+ if (result == null) {
+ result = cleanForKeySlow(key);
+ cacheCleanForKey.put(key, result);
+ }
+ return result;
+ }
+
+ List cleanForKeySlow(String key) {
key = StringUtils.trin(StringUtils.goLowerCase(key));
key = key.replaceAll("_|\\.|\\s", "");
// key = replaceSmart(key, "partition", "package");
@@ -134,7 +146,7 @@ public class SkinParam implements ISkinParam {
if (result.size() == 0) {
result.add(key);
}
- return result;
+ return Collections.unmodifiableList(result);
}
private static String replaceSmart(String s, String src, String target) {
@@ -200,7 +212,7 @@ public class SkinParam implements ISkinParam {
return null;
}
final boolean acceptTransparent = param == ColorParam.background
- || param == ColorParam.sequenceGroupBodyBackground;
+ || param == ColorParam.sequenceGroupBodyBackground || param == ColorParam.sequenceBoxBackground;
return getIHtmlColorSet().getColorIfValid(value, acceptTransparent);
}
@@ -643,16 +655,38 @@ public class SkinParam implements ISkinParam {
}
public UStroke getThickness(LineParam param, Stereotype stereotype) {
+ LinkStyle style = null;
if (stereotype != null) {
checkStereotype(stereotype);
+
+ final String styleValue = getValue(param.name() + "style" + stereotype.getLabel(false));
+ if (styleValue != null) {
+ style = LinkStyle.fromString2(styleValue);
+ }
+
final String value2 = getValue(param.name() + "thickness" + stereotype.getLabel(false));
if (value2 != null && value2.matches("[\\d.]+")) {
- return new UStroke(Double.parseDouble(value2));
+ if (style == null) {
+ style = LinkStyle.NORMAL();
+ }
+ return style.goThickness(Double.parseDouble(value2)).getStroke3();
}
}
final String value = getValue(param.name() + "thickness");
if (value != null && value.matches("[\\d.]+")) {
- return new UStroke(Double.parseDouble(value));
+ if (style == null) {
+ style = LinkStyle.NORMAL();
+ }
+ return style.goThickness(Double.parseDouble(value)).getStroke3();
+ }
+ if (style == null) {
+ final String styleValue = getValue(param.name() + "style");
+ if (styleValue != null) {
+ style = LinkStyle.fromString2(styleValue);
+ }
+ }
+ if (style != null && style.isNormal() == false) {
+ return style.getStroke3();
}
return null;
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java b/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java
index 1b9611d37..418021ae7 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java
@@ -48,7 +48,6 @@ import net.sourceforge.plantuml.UmlDiagram;
import net.sourceforge.plantuml.UmlDiagramType;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.activitydiagram3.ftile.BoxStyle;
-import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlanes;
import net.sourceforge.plantuml.command.CommandExecutionResult;
import net.sourceforge.plantuml.core.DiagramDescription;
@@ -59,7 +58,6 @@ import net.sourceforge.plantuml.graphic.Rainbow;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.TextBlockCompressed;
import net.sourceforge.plantuml.graphic.TextBlockRecentred;
-import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.graphic.color.Colors;
import net.sourceforge.plantuml.sequencediagram.NotePosition;
import net.sourceforge.plantuml.sequencediagram.NoteType;
@@ -191,8 +189,9 @@ public class ActivityDiagram3 extends UmlDiagram {
result = new TextBlockRecentred(result);
final ISkinParam skinParam = getSkinParam();
result = new AnnotatedWorker(this, skinParam).addAdd(result);
- final Dimension2D dim = TextBlockUtils.getMinMax(result, fileFormatOption.getDefaultStringBounder())
- .getDimension();
+ // final Dimension2D dim = TextBlockUtils.getMinMax(result, fileFormatOption.getDefaultStringBounder())
+ // .getDimension();
+ final Dimension2D dim = result.getMinMax(fileFormatOption.getDefaultStringBounder()).getDimension();
final double margin = 10;
final double dpiFactor = getDpiFactor(fileFormatOption, Dimension2DDouble.delta(dim, 2 * margin, 0));
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/AbstractFtile.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/AbstractFtile.java
index c14c46312..a15ae23af 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/AbstractFtile.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/AbstractFtile.java
@@ -46,21 +46,15 @@ import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
import net.sourceforge.plantuml.graphic.AbstractTextBlock;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public abstract class AbstractFtile extends AbstractTextBlock implements Ftile {
- private final boolean shadowing;
private final ISkinParam skinParam;
- private AbstractFtile(boolean shadowing) {
- this.shadowing = shadowing;
- this.skinParam = null;
- }
-
public AbstractFtile(ISkinParam skinParam) {
- this.shadowing = skinParam.shadowing();
this.skinParam = skinParam;
}
@@ -101,10 +95,31 @@ public abstract class AbstractFtile extends AbstractTextBlock implements Ftile {
public Collection getMyChildren() {
throw new UnsupportedOperationException("" + getClass());
- // return Collections.emptyList();
}
public HorizontalAlignment arrowHorizontalAlignment() {
return skinParam.getHorizontalAlignment(AlignParam.ARROW_MESSAGE_ALIGN, null);
}
+
+ private FtileGeometry cachedGeometry;
+
+ final public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ if (cachedGeometry == null) {
+ cachedGeometry = calculateDimensionFtile(stringBounder);
+ }
+ return cachedGeometry;
+ }
+
+ abstract protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder);
+
+ @Override
+ final public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ // return getMinMaxFtile(stringBounder);
+ }
+
+ // protected MinMax getMinMaxFtile(StringBounder stringBounder) {
+ // throw new UnsupportedOperationException();
+ // }
+
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileAssemblySimple.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileAssemblySimple.java
index 733e76e28..a842cbb22 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileAssemblySimple.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileAssemblySimple.java
@@ -40,8 +40,10 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.ISkinParam;
@@ -76,7 +78,18 @@ public class FtileAssemblySimple extends AbstractTextBlock implements Ftile {
return tile2.getSwimlaneOut();
}
+ private final Map cachedTranslation = new HashMap();
+
public UTranslate getTranslateFor(Ftile child, StringBounder stringBounder) {
+ UTranslate result = cachedTranslation.get(child);
+ if (result == null) {
+ result = getTranslateForSlow(child, stringBounder);
+ cachedTranslation.put(child, result);
+ }
+ return result;
+ }
+
+ private UTranslate getTranslateForSlow(Ftile child, StringBounder stringBounder) {
if (child == tile1) {
return getTranslated1(stringBounder);
}
@@ -96,8 +109,8 @@ public class FtileAssemblySimple extends AbstractTextBlock implements Ftile {
public void drawU(UGraphic ug) {
final StringBounder stringBounder = ug.getStringBounder();
- ug.apply(getTranslated1(stringBounder)).draw(tile1);
- ug.apply(getTranslated2(stringBounder)).draw(tile2);
+ ug.apply(getTranslateFor(tile1, stringBounder)).draw(tile1);
+ ug.apply(getTranslateFor(tile2, stringBounder)).draw(tile2);
}
public LinkRendering getInLinkRendering() {
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileBreak.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileBreak.java
index e43fd69f0..5dc01b374 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileBreak.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileBreak.java
@@ -58,8 +58,9 @@ public class FtileBreak extends FtileEmpty implements WeldingPoint {
return "FtileBreak";
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
- return super.calculateDimension(stringBounder).withoutPointOut();
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
+ return calculateDimensionEmpty().withoutPointOut();
}
@Override
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileEmpty.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileEmpty.java
index 75526fc69..db6b630d5 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileEmpty.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileEmpty.java
@@ -85,7 +85,12 @@ public class FtileEmpty extends AbstractFtile {
public void drawU(UGraphic ug) {
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
+ return calculateDimensionEmpty();
+ }
+
+ final protected FtileGeometry calculateDimensionEmpty() {
return new FtileGeometry(width, height, width / 2, 0, height);
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileGoto.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileGoto.java
index 22e069d88..cf895da67 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileGoto.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileGoto.java
@@ -47,8 +47,9 @@ public class FtileGoto extends FtileEmpty {
this.name = name;
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
- return super.calculateDimension(stringBounder).withoutPointOut();
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
+ return calculateDimensionEmpty().withoutPointOut();
}
public String getName() {
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileHeightFixed.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileHeightFixed.java
index cc23f5631..673d12104 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileHeightFixed.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileHeightFixed.java
@@ -76,7 +76,8 @@ public class FtileHeightFixed extends AbstractFtile {
return tile.getSwimlaneOut();
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
return tile.calculateDimension(stringBounder).translate(getTranslate(stringBounder)).fixedHeight(fixedHeight);
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileKilled.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileKilled.java
index 71003b503..149b65a43 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileKilled.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileKilled.java
@@ -61,7 +61,8 @@ public class FtileKilled extends AbstractFtile {
return tile.getSwimlaneOut();
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry geo = tile.calculateDimension(stringBounder);
return new FtileGeometry(tile.calculateDimension(stringBounder), geo.getLeft(), geo.getInY());
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMarged.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMarged.java
index 6f5ed4b5f..d69ca60cb 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMarged.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMarged.java
@@ -85,7 +85,8 @@ public class FtileMarged extends AbstractFtile {
return tile.getSwimlaneOut();
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry orig = tile.calculateDimension(stringBounder);
return new FtileGeometry(orig.getWidth() + margin1 + margin2, orig.getHeight(), orig.getLeft() + margin1,
orig.getInY(), orig.getOutY());
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedRight.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedRight.java
index a64d59040..ec9e23c0b 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedRight.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedRight.java
@@ -74,7 +74,8 @@ public class FtileMargedRight extends AbstractFtile {
return tile.getSwimlaneOut();
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry orig = tile.calculateDimension(stringBounder);
if (orig.getWidth() > maxX) {
throw new IllegalStateException();
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedVertically.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedVertically.java
index 0123ea4d8..b480e9f33 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedVertically.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileMargedVertically.java
@@ -58,7 +58,16 @@ public class FtileMargedVertically extends FtileDecorate {
ug.draw(getFtileDelegated());
}
+ private FtileGeometry cached;
+
public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ if (cached == null) {
+ this.cached = calculateDimensionSlow(stringBounder);
+ }
+ return this.cached;
+ }
+
+ private FtileGeometry calculateDimensionSlow(StringBounder stringBounder) {
final FtileGeometry orig = getFtileDelegated().calculateDimension(stringBounder);
return new FtileGeometry(orig.getWidth(), orig.getHeight() + margin1 + margin2, orig.getLeft(), orig.getInY()
+ margin1, orig.hasPointOut() ? orig.getOutY() + margin1 : orig.getOutY());
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/Swimlanes.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/Swimlanes.java
index 4e13fb1d2..5e5f25b88 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/Swimlanes.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/Swimlanes.java
@@ -64,7 +64,6 @@ import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
-import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.graphic.UGraphicDelegator;
import net.sourceforge.plantuml.graphic.color.ColorType;
import net.sourceforge.plantuml.skin.rose.Rose;
@@ -113,7 +112,8 @@ public class Swimlanes extends AbstractTextBlock implements TextBlock {
factory = new FtileFactoryDelegatorWhile(factory);
factory = new FtileFactoryDelegatorRepeat(factory);
factory = new FtileFactoryDelegatorCreateParallel(factory);
- // factory = new FtileFactoryDelegatorCreateParallelAddingMargin(new FtileFactoryDelegatorCreateParallel1(factory));
+ // factory = new FtileFactoryDelegatorCreateParallelAddingMargin(new
+ // FtileFactoryDelegatorCreateParallel1(factory));
factory = new FtileFactoryDelegatorAddNote(factory);
factory = new FtileFactoryDelegatorCreateGroup(factory);
return factory;
@@ -173,16 +173,20 @@ public class Swimlanes extends AbstractTextBlock implements TextBlock {
}
static private final double separationMargin = 10;
+ private TextBlock full;
public void drawU(UGraphic ug) {
- final FtileFactory factory = getFtileFactory(ug.getStringBounder());
- TextBlock full = root.createFtile(factory);
+ if (full == null) {
+ final FtileFactory factory = getFtileFactory(ug.getStringBounder());
+ full = root.createFtile(factory);
+ if (swimlanes.size() <= 1) {
+ // BUG42
+ full = new TextBlockInterceptorUDrawable(full);
+ }
+ }
ug = new UGraphicForSnake(ug);
if (swimlanes.size() <= 1) {
- full = new TextBlockInterceptorUDrawable(full);
- // BUG42
- // full.drawU(ug);
full.drawU(ug);
ug.flushUg();
return;
@@ -383,10 +387,21 @@ public class Swimlanes extends AbstractTextBlock implements TextBlock {
ug.apply(thickness).apply(new UChangeColor(color)).draw(new ULine(0, height));
}
+ // private Dimension2D cachedDimension;
+
public Dimension2D calculateDimension(StringBounder stringBounder) {
- return TextBlockUtils.getMinMax(this, stringBounder).getDimension();
+ return getMinMax(stringBounder).getDimension();
+ // if (cachedDimension == null) {
+ // cachedDimension = calculateDimensionSlow(stringBounder);
+ // }
+ // return cachedDimension;
}
+ // private Dimension2D calculateDimensionSlow(StringBounder stringBounder) {
+ // final Dimension2D result = TextBlockUtils.getMinMax(this, stringBounder).getDimension();
+ // return result;
+ // }
+
public Instruction getCurrent() {
return currentInstruction;
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/TextBlockInterceptorUDrawable.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/TextBlockInterceptorUDrawable.java
index ac7185725..fe4c0e982 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/TextBlockInterceptorUDrawable.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/TextBlockInterceptorUDrawable.java
@@ -41,7 +41,6 @@ import java.util.HashMap;
import net.sourceforge.plantuml.graphic.AbstractTextBlock;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
-import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@@ -59,7 +58,8 @@ public class TextBlockInterceptorUDrawable extends AbstractTextBlock implements
}
public Dimension2D calculateDimension(StringBounder stringBounder) {
- return TextBlockUtils.getMinMax(this, stringBounder).getDimension();
+ // return TextBlockUtils.getMinMax(this, stringBounder).getDimension();
+ throw new UnsupportedOperationException();
}
}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInner.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInner.java
index e598acb99..653ef848f 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInner.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInner.java
@@ -93,7 +93,8 @@ class FtileForkInner extends AbstractFtile {
}
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
double height = 0;
double width = 0;
for (Ftile ftile : forks) {
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInnerOverlapped.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInnerOverlapped.java
index 6e4a3918a..29938c489 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInnerOverlapped.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileForkInnerOverlapped.java
@@ -93,7 +93,8 @@ class FtileForkInnerOverlapped extends AbstractFtile {
}
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
double height = 0;
double width = 0;
for (Ftile ftile : forks) {
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileGroup.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileGroup.java
index 3b0c90ec8..5a2e71f92 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileGroup.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileGroup.java
@@ -130,12 +130,12 @@ public class FtileGroup extends AbstractFtile {
return new UTranslate(suppWidth / 2, diffHeightTitle(stringBounder) + headerNoteHeight(stringBounder));
}
- private static MinMax getMinMax(TextBlock tb, StringBounder stringBounder) {
+ private MinMax getInnerMinMax(StringBounder stringBounder) {
final LimitFinder limitFinder = new LimitFinder(stringBounder, false);
final UGraphicForSnake interceptor = new UGraphicForSnake(limitFinder);
final UGraphicInterceptorUDrawable interceptor2 = new UGraphicInterceptorUDrawable(interceptor);
- tb.drawU(interceptor2);
+ inner.drawU(interceptor2);
interceptor2.flushUg();
return limitFinder.getMinMax();
}
@@ -149,9 +149,19 @@ public class FtileGroup extends AbstractFtile {
return suppWidth;
}
+ private FtileGeometry cachedInnerDimension;
+
private FtileGeometry getInnerDimension(StringBounder stringBounder) {
+ if (cachedInnerDimension == null) {
+ cachedInnerDimension = getInnerDimensionSlow(stringBounder);
+ }
+ return cachedInnerDimension;
+
+ }
+
+ private FtileGeometry getInnerDimensionSlow(StringBounder stringBounder) {
final FtileGeometry orig = inner.calculateDimension(stringBounder);
- final MinMax minMax = getMinMax(inner, stringBounder);
+ final MinMax minMax = getInnerMinMax(stringBounder);
final double missingWidth = minMax.getMaxX() - orig.getWidth();
if (missingWidth > 0) {
return orig.addDim(missingWidth + 5, 0);
@@ -159,7 +169,8 @@ public class FtileGroup extends AbstractFtile {
return orig;
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry orig = getInnerDimension(stringBounder);
final double suppWidth = suppWidth(stringBounder);
final double width = orig.getWidth() + suppWidth;
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfAndStop.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfAndStop.java
index 638c292df..c7212f681 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfAndStop.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfAndStop.java
@@ -271,7 +271,8 @@ class FtileIfAndStop extends AbstractFtile {
ug.apply(getTranslateStop(stringBounder)).draw(stop2);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimStop2 = stop2.calculateDimension(stringBounder);
final FtileGeometry dim1 = tile1.calculateDimension(stringBounder).addDim(0,
getDiamondStopDistance() + dimStop2.getWidth());
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfDown.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfDown.java
index da7006566..a8c139917 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfDown.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfDown.java
@@ -341,7 +341,8 @@ public class FtileIfDown extends AbstractFtile {
}
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry geoDiamond1 = diamond1.calculateDimension(stringBounder);
final FtileGeometry geoThen = thenBlock.calculateDimension(stringBounder);
final FtileGeometry geoDiamond2 = diamond2.calculateDimension(stringBounder);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongHorizontal.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongHorizontal.java
index 1011a66e2..557ca5d14 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongHorizontal.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongHorizontal.java
@@ -38,7 +38,6 @@ package net.sourceforge.plantuml.activitydiagram3.ftile.vcompact;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -561,7 +560,8 @@ class FtileIfLongHorizontal extends AbstractFtile {
return new FtileGeometry(result, result.getWidth() / 2, 0);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
final List all = new ArrayList(tiles);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongVertical.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongVertical.java
index 8fef81746..b586b279e 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongVertical.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileIfLongVertical.java
@@ -571,7 +571,8 @@ class FtileIfLongVertical extends AbstractFtile {
return width;
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
final List all = new ArrayList(tiles);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileNoteAlone.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileNoteAlone.java
index 8083263ef..0a3ab2d78 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileNoteAlone.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileNoteAlone.java
@@ -113,7 +113,8 @@ public class FtileNoteAlone extends AbstractFtile implements Stencil {
opale.drawU(ug);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
if (withOutPoint) {
return new FtileGeometry(dimTotal, dimTotal.getWidth() / 2, 0, dimTotal.getHeight());
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileRepeat.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileRepeat.java
index 260d9e919..b6216db84 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileRepeat.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileRepeat.java
@@ -490,7 +490,8 @@ class FtileRepeat extends AbstractFtile {
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
return new FtileGeometry(dimTotal, getLeft(stringBounder), 0, dimTotal.getHeight());
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileSplit1.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileSplit1.java
index d4df51571..54686594c 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileSplit1.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileSplit1.java
@@ -91,7 +91,8 @@ class FtileSplit1 extends AbstractFtile {
}
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
double height = 0;
double width = 0;
for (Ftile ftile : forks) {
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWhile.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWhile.java
index cdf8eedb8..4f47eb80c 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWhile.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWhile.java
@@ -454,7 +454,8 @@ class FtileWhile extends AbstractFtile {
}
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry geoDiamond1 = diamond1.calculateDimension(stringBounder);
FtileGeometry geoWhile = whileBlock.calculateDimension(stringBounder);
final double diff = -geoWhile.getWidth();
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNoteOpale.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNoteOpale.java
index c47a3f660..d4b41bd88 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNoteOpale.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNoteOpale.java
@@ -199,7 +199,8 @@ public class FtileWithNoteOpale extends AbstractFtile implements Stencil {
ug.apply(getTranslate(stringBounder)).draw(tile);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
final FtileGeometry orig = tile.calculateDimension(stringBounder);
final UTranslate translate = getTranslate(stringBounder);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNotes.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNotes.java
index eb7395ff8..cf2e9063c 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNotes.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileWithNotes.java
@@ -173,7 +173,8 @@ public class FtileWithNotes extends AbstractFtile {
ug.apply(getTranslate(stringBounder)).draw(tile);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dimTotal = calculateDimensionInternal(stringBounder);
final FtileGeometry orig = tile.calculateDimension(stringBounder);
final UTranslate translate = getTranslate(stringBounder);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileIfNude.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileIfNude.java
index 1610b0cb8..aa6a02485 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileIfNude.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileIfNude.java
@@ -128,7 +128,8 @@ public class FtileIfNude extends FtileDimensionMemoize {
ug.apply(getTranslate2(stringBounder)).draw(tile2);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry dimTotal = calculateDimensionInternal(stringBounder);
if (tile1.calculateDimension(stringBounder).hasPointOut()
|| tile2.calculateDimension(stringBounder).hasPointOut()) {
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBlackBlock.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBlackBlock.java
index 2857a407e..92973f278 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBlackBlock.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBlackBlock.java
@@ -81,7 +81,8 @@ public class FtileBlackBlock extends AbstractFtile {
this.label = label;
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
double supp = label.calculateDimension(stringBounder).getWidth();
if (supp > 0) {
supp += labelMargin;
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBox.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBox.java
index d1269cadb..d9c85d14b 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBox.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileBox.java
@@ -151,7 +151,8 @@ public class FtileBox extends AbstractFtile {
tb.drawU(ug.apply(new UTranslate(MARGIN, MARGIN)));
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dim = tb.calculateDimension(stringBounder);
return new FtileGeometry(Dimension2DDouble.delta(dim, 2 * MARGIN, 2 * MARGIN), dim.getWidth() / 2 + MARGIN, 0,
dim.getHeight() + 2 * MARGIN);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleEnd.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleEnd.java
index bbf3a0e4a..0654f3383 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleEnd.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleEnd.java
@@ -111,7 +111,8 @@ public class FtileCircleEnd extends AbstractFtile {
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
return new FtileGeometry(SIZE, SIZE, SIZE / 2, 0);
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStart.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStart.java
index 1d6b1a839..d1bcc52e3 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStart.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStart.java
@@ -92,7 +92,8 @@ public class FtileCircleStart extends AbstractFtile {
ug.apply(new UChangeColor(null)).apply(new UChangeBackColor(backColor)).draw(circle);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
return new FtileGeometry(SIZE, SIZE, SIZE / 2, 0, SIZE);
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStop.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStop.java
index 4d51d6a16..c121fe010 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStop.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileCircleStop.java
@@ -108,7 +108,8 @@ public class FtileCircleStop extends AbstractFtile {
.draw(circleSmall);
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
return new FtileGeometry(SIZE, SIZE, SIZE / 2, 0);
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamond.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamond.java
index 942ba8148..fab646126 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamond.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamond.java
@@ -147,7 +147,8 @@ public class FtileDiamond extends AbstractFtile {
+ Diamond.diamondHalfSize)));
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final double suppY1 = north.calculateDimension(stringBounder).getHeight();
final Dimension2D dim = new Dimension2DDouble(Diamond.diamondHalfSize * 2, Diamond.diamondHalfSize * 2 + suppY1);
return new FtileGeometry(dim, dim.getWidth() / 2, suppY1, dim.getHeight());
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondFoo1.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondFoo1.java
index 3af0a2136..4d9501213 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondFoo1.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondFoo1.java
@@ -130,7 +130,8 @@ public class FtileDiamondFoo1 extends AbstractFtile {
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D dim = calculateDimensionInternal(stringBounder);
return new FtileGeometry(dim, dim.getWidth() / 2, 0, dim.getHeight());
}
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside.java
index 569c02d8e..d655fd45c 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside.java
@@ -161,7 +161,8 @@ public class FtileDiamondInside extends AbstractFtile {
return new FtileGeometry(dim, dim.getWidth() / 2, 0, dim.getHeight());
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final FtileGeometry dimDiamonAlone = calculateDimensionAlone(stringBounder);
final Dimension2D dimWest = west.calculateDimension(stringBounder);
final Dimension2D dimEast = east.calculateDimension(stringBounder);
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside2.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside2.java
index 11d28a249..979ef38ce 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside2.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside2.java
@@ -150,7 +150,8 @@ public class FtileDiamondInside2 extends AbstractFtile {
return new FtileGeometry(dim, dim.getWidth() / 2, 0, dim.getHeight());
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D diamond = calculateDimensionAlone(stringBounder);
final Dimension2D north = this.north.calculateDimension(stringBounder);
final double height = diamond.getHeight() + north.getHeight();
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside3.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside3.java
index 09c00f112..28eeab361 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside3.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileDiamondInside3.java
@@ -152,7 +152,8 @@ public class FtileDiamondInside3 extends AbstractFtile implements FtileOverpassi
return new FtileGeometry(dim, dim.getWidth() / 2, 0, dim.getHeight());
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
final Dimension2D diamond = calculateDimensionAlone(stringBounder);
final Dimension2D north = this.north.calculateDimension(stringBounder);
final double height = diamond.getHeight() + north.getHeight();
diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileThinSplit.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileThinSplit.java
index 122fffd53..4fbbf73f7 100644
--- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileThinSplit.java
+++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vertical/FtileThinSplit.java
@@ -44,7 +44,6 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.FtileGeometry;
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
-import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
@@ -73,7 +72,8 @@ public class FtileThinSplit extends AbstractFtile {
this.last = last;
}
- public FtileGeometry calculateDimension(StringBounder stringBounder) {
+ @Override
+ protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
return new FtileGeometry(width, height, width / 2, 0, height);
}
diff --git a/src/net/sourceforge/plantuml/ant/PlantUmlTask.java b/src/net/sourceforge/plantuml/ant/PlantUmlTask.java
index c3f555e90..e20d3260b 100644
--- a/src/net/sourceforge/plantuml/ant/PlantUmlTask.java
+++ b/src/net/sourceforge/plantuml/ant/PlantUmlTask.java
@@ -362,10 +362,10 @@ public class PlantUmlTask extends Task {
setNbThread(s);
}
- public void setSuggestEngine(String s) {
- OptionFlags.getInstance().setUseSuggestEngine(
- "true".equalsIgnoreCase(s) || "yes".equalsIgnoreCase(s) || "on".equalsIgnoreCase(s));
- }
+// public void setSuggestEngine(String s) {
+// OptionFlags.getInstance().setUseSuggestEngine(
+// "true".equalsIgnoreCase(s) || "yes".equalsIgnoreCase(s) || "on".equalsIgnoreCase(s));
+// }
public void setFailFast(String s) {
final boolean flag = "true".equalsIgnoreCase(s) || "yes".equalsIgnoreCase(s) || "on".equalsIgnoreCase(s);
diff --git a/src/net/sourceforge/plantuml/bpm/BpmElement.java b/src/net/sourceforge/plantuml/bpm/BpmElement.java
index b8573a4d5..3be07f799 100644
--- a/src/net/sourceforge/plantuml/bpm/BpmElement.java
+++ b/src/net/sourceforge/plantuml/bpm/BpmElement.java
@@ -52,6 +52,7 @@ import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.InnerStrategy;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UGraphic;
@@ -111,6 +112,10 @@ public class BpmElement extends AbstractConnectorPuzzle implements ConnectorPuzz
public Dimension2D calculateDimension(StringBounder stringBounder) {
return raw.calculateDimension(stringBounder);
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ return raw.getMinMax(stringBounder);
+ }
};
}
diff --git a/src/net/sourceforge/plantuml/bpm/ConnectorPuzzleEmpty.java b/src/net/sourceforge/plantuml/bpm/ConnectorPuzzleEmpty.java
index c6c5c655b..b2a36c768 100644
--- a/src/net/sourceforge/plantuml/bpm/ConnectorPuzzleEmpty.java
+++ b/src/net/sourceforge/plantuml/bpm/ConnectorPuzzleEmpty.java
@@ -44,6 +44,7 @@ import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.InnerStrategy;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
@@ -115,6 +116,11 @@ public class ConnectorPuzzleEmpty extends AbstractConnectorPuzzle implements Pla
public Dimension2D calculateDimension(StringBounder stringBounder) {
return new Dimension2DDouble(20, 20);
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ }
+
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
return null;
diff --git a/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java b/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java
index 40e431285..225f64330 100644
--- a/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java
+++ b/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java
@@ -58,16 +58,14 @@ import net.sourceforge.plantuml.ugraphic.ImageBuilder;
public class ClassDiagram extends AbstractClassOrObjectDiagram {
- private String namespaceSeparator = ".";
-
@Override
public ILeaf getOrCreateLeaf(Code code, LeafType type, USymbol symbol) {
- if (namespaceSeparator != null) {
- code = code.withSeparator(namespaceSeparator);
+ if (getNamespaceSeparator() != null) {
+ code = code.withSeparator(getNamespaceSeparator());
}
if (type == null) {
code = code.eventuallyRemoveStartingAndEndingDoubleQuote("\"([:");
- if (namespaceSeparator == null) {
+ if (getNamespaceSeparator() == null) {
return getOrCreateLeafDefault(code, LeafType.CLASS, symbol);
}
code = code.getFullyQualifiedCode(getCurrentGroup());
@@ -77,7 +75,7 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram {
return createEntityWithNamespace(code, Display.getWithNewlines(code.getShortName(getLeafs())),
LeafType.CLASS, symbol);
}
- if (namespaceSeparator == null) {
+ if (getNamespaceSeparator() == null) {
return getOrCreateLeafDefault(code, LeafType.CLASS, symbol);
}
code = code.getFullyQualifiedCode(getCurrentGroup());
@@ -87,42 +85,18 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram {
return createEntityWithNamespace(code, Display.getWithNewlines(code.getShortName(getLeafs())), type, symbol);
}
- public IGroup getOrCreateNamespace(Code namespace, Display display, GroupType type, IGroup parent) {
- if (namespaceSeparator != null) {
- namespace = namespace.withSeparator(namespaceSeparator).getFullyQualifiedCode(getCurrentGroup());
- }
- final IGroup g = getOrCreateNamespaceInternal(namespace, display, type, parent);
- currentGroup = g;
- return g;
- }
-
- private IGroup getOrCreateNamespaceInternal(Code namespace, Display display, GroupType type, IGroup parent) {
- IGroup result = entityFactory.getGroups().get(namespace);
- if (result != null) {
- return result;
- }
- if (entityFactory.getLeafs().containsKey(namespace)) {
- result = entityFactory.muteToGroup(namespace, namespace, type, parent);
- result.setDisplay(display);
- } else {
- result = entityFactory.createGroup(namespace, display, namespace, type, parent, getHides(),
- getNamespaceSeparator());
- }
- entityFactory.addGroup(result);
- return result;
- }
@Override
public ILeaf createLeaf(Code code, Display display, LeafType type, USymbol symbol) {
- if (namespaceSeparator != null) {
- code = code.withSeparator(namespaceSeparator);
+ if (getNamespaceSeparator() != null) {
+ code = code.withSeparator(getNamespaceSeparator());
}
if (type != LeafType.ABSTRACT_CLASS && type != LeafType.ANNOTATION && type != LeafType.CLASS
&& type != LeafType.INTERFACE && type != LeafType.ENUM && type != LeafType.LOLLIPOP
&& type != LeafType.NOTE) {
return super.createLeaf(code, display, type, symbol);
}
- if (namespaceSeparator == null) {
+ if (getNamespaceSeparator() == null) {
return super.createLeaf(code, display, type, symbol);
}
code = code.getFullyQualifiedCode(getCurrentGroup());
@@ -150,21 +124,21 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram {
private final String getNamespace(Code fullyCode) {
String name = fullyCode.getFullName();
do {
- final int x = name.lastIndexOf(namespaceSeparator);
+ final int x = name.lastIndexOf(getNamespaceSeparator());
if (x == -1) {
return null;
}
name = name.substring(0, x);
- } while (getLeafs().containsKey(Code.of(name, namespaceSeparator)));
+ } while (getLeafs().containsKey(Code.of(name, getNamespaceSeparator())));
return name;
}
@Override
public final boolean leafExist(Code code) {
- if (namespaceSeparator == null) {
+ if (getNamespaceSeparator() == null) {
return super.leafExist(code);
}
- code = code.withSeparator(namespaceSeparator);
+ code = code.withSeparator(getNamespaceSeparator());
return super.leafExist(code.getFullyQualifiedCode(getCurrentGroup()));
}
@@ -173,14 +147,6 @@ public class ClassDiagram extends AbstractClassOrObjectDiagram {
return UmlDiagramType.CLASS;
}
- public void setNamespaceSeparator(String namespaceSeparator) {
- this.namespaceSeparator = namespaceSeparator;
- }
-
- public String getNamespaceSeparator() {
- return namespaceSeparator;
- }
-
private boolean allowMixing;
public void setAllowMixing(boolean allowMixing) {
diff --git a/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java b/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java
index bbae26ae7..78f0276f1 100644
--- a/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java
+++ b/src/net/sourceforge/plantuml/command/UmlDiagramFactory.java
@@ -118,7 +118,7 @@ public abstract class UmlDiagramFactory extends PSystemAbstractFactory {
if (commandControl == CommandControl.NOT_OK) {
final ErrorUml err = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, "Syntax Error?", /* it.currentNum(), */it.peek()
.getLocation());
- if (OptionFlags.getInstance().isUseSuggestEngine()) {
+ if (OptionFlags.getInstance().isUseSuggestEngine2()) {
final SuggestEngine engine = new SuggestEngine(source, this);
final SuggestEngineResult result = engine.tryToSuggest(sys);
if (result.getStatus() == SuggestEngineStatus.ONE_SUGGESTION) {
diff --git a/src/net/sourceforge/plantuml/core/DiagramType.java b/src/net/sourceforge/plantuml/core/DiagramType.java
index 3b6de5813..8da57c9b6 100644
--- a/src/net/sourceforge/plantuml/core/DiagramType.java
+++ b/src/net/sourceforge/plantuml/core/DiagramType.java
@@ -38,7 +38,7 @@ package net.sourceforge.plantuml.core;
import net.sourceforge.plantuml.utils.StartUtils;
public enum DiagramType {
- UML, BPM, DITAA, DOT, PROJECT, JCCKIT, SALT, FLOW, CREOLE, JUNGLE, CUTE, MATH, LATEX, DEFINITION, UNKNOWN;
+ UML, BPM, DITAA, DOT, PROJECT, JCCKIT, SALT, FLOW, CREOLE, JUNGLE, CUTE, MATH, LATEX, DEFINITION, GANTT, UNKNOWN;
static public DiagramType getTypeFromArobaseStart(String s) {
s = s.toLowerCase();
@@ -87,6 +87,9 @@ public enum DiagramType {
if (StartUtils.startsWithSymbolAnd("startdef", s)) {
return DEFINITION;
}
+ if (StartUtils.startsWithSymbolAnd("startgantt", s)) {
+ return GANTT;
+ }
return UNKNOWN;
}
}
diff --git a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java
index 0545790d7..966e82318 100644
--- a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java
+++ b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java
@@ -80,10 +80,20 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
public abstract IEntity getOrCreateLeaf(Code code, LeafType type, USymbol symbol);
- public String getNamespaceSeparator() {
- return null;
+ private String namespaceSeparator = ".";
+
+ final public void setNamespaceSeparator(String namespaceSeparator) {
+ this.namespaceSeparator = namespaceSeparator;
}
+ final public String getNamespaceSeparator() {
+ return namespaceSeparator;
+ }
+
+ // public String getNamespaceSeparator() {
+ // return null;
+ // }
+
@Override
public boolean hasUrl() {
for (IEntity entity : getGroups(true)) {
@@ -157,13 +167,41 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
}
return Collections.unmodifiableCollection(result);
}
-
+
+ final public IGroup getOrCreateNamespace(Code namespace, Display display, GroupType type, IGroup parent) {
+ if (getNamespaceSeparator() != null) {
+ namespace = namespace.withSeparator(getNamespaceSeparator()).getFullyQualifiedCode(getCurrentGroup());
+ }
+ final IGroup g = getOrCreateNamespaceInternal(namespace, display, type, parent);
+ currentGroup = g;
+ return g;
+ }
+
final public IGroup getOrCreateGroup(Code code, Display display, GroupType type, IGroup parent) {
final IGroup g = getOrCreateGroupInternal(code, display, null, type, parent);
currentGroup = g;
return g;
}
+
+
+ final protected IGroup getOrCreateNamespaceInternal(Code namespace, Display display, GroupType type, IGroup parent) {
+ IGroup result = entityFactory.getGroups().get(namespace);
+ if (result != null) {
+ return result;
+ }
+ if (entityFactory.getLeafs().containsKey(namespace)) {
+ result = entityFactory.muteToGroup(namespace, namespace, type, parent);
+ result.setDisplay(display);
+ } else {
+ result = entityFactory.createGroup(namespace, display, namespace, type, parent, getHides(),
+ getNamespaceSeparator());
+ }
+ entityFactory.addGroup(result);
+ return result;
+ }
+
+
private IGroup getOrCreateGroupInternal(Code code, Display display, Code namespace2, GroupType type, IGroup parent) {
IGroup result = entityFactory.getGroups().get(code);
if (result != null) {
diff --git a/src/net/sourceforge/plantuml/cucadiagram/Display.java b/src/net/sourceforge/plantuml/cucadiagram/Display.java
index 3de4a1b95..72d9d276d 100644
--- a/src/net/sourceforge/plantuml/cucadiagram/Display.java
+++ b/src/net/sourceforge/plantuml/cucadiagram/Display.java
@@ -206,6 +206,19 @@ public class Display implements Iterable {
return new Display(result, this.naturalHorizontalAlignment, this.isNull, this.defaultCreoleMode);
}
+ public Display withPage(int page, int lastpage) {
+ if (display == null) {
+ return this;
+ }
+ final List result = new ArrayList();
+ for (CharSequence line : display) {
+ line = line.toString().replace("%page%", "" + page);
+ line = line.toString().replace("%lastpage%", "" + lastpage);
+ result.add(line);
+ }
+ return new Display(result, this.naturalHorizontalAlignment, this.isNull, this.defaultCreoleMode);
+ }
+
public Display underlined() {
final List result = new ArrayList();
for (CharSequence line : display) {
diff --git a/src/net/sourceforge/plantuml/cucadiagram/LinkStyle.java b/src/net/sourceforge/plantuml/cucadiagram/LinkStyle.java
index 9b17c8142..963680836 100644
--- a/src/net/sourceforge/plantuml/cucadiagram/LinkStyle.java
+++ b/src/net/sourceforge/plantuml/cucadiagram/LinkStyle.java
@@ -121,7 +121,15 @@ public class LinkStyle {
return thickness;
}
- public static LinkStyle fromString(String s) {
+ public static LinkStyle fromString1(String s) {
+ final LinkStyle result = fromString2(s);
+ if (result == null) {
+ return LinkStyle.NORMAL();
+ }
+ return result;
+ }
+
+ public static LinkStyle fromString2(String s) {
if ("dashed".equalsIgnoreCase(s)) {
return DASHED();
}
@@ -134,12 +142,7 @@ public class LinkStyle {
if ("hidden".equalsIgnoreCase(s)) {
return INVISIBLE();
}
- return LinkStyle.NORMAL();
- }
-
- @Deprecated
- public static LinkStyle valueOf(String s) {
- return fromString(s);
+ return null;
}
public boolean isThicknessOverrided() {
diff --git a/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java b/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java
index 487c3e9ad..34c53be02 100644
--- a/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java
+++ b/src/net/sourceforge/plantuml/descdiagram/DescriptionDiagram.java
@@ -45,14 +45,12 @@ import net.sourceforge.plantuml.graphic.USymbol;
public class DescriptionDiagram extends AbstractEntityDiagram {
- private String namespaceSeparator = null;
-
@Override
public ILeaf getOrCreateLeaf(Code code, LeafType type, USymbol symbol) {
- if (namespaceSeparator != null) {
- code = code.withSeparator(namespaceSeparator);
+ if (getNamespaceSeparator() != null) {
+ code = code.withSeparator(getNamespaceSeparator());
}
- if (namespaceSeparator != null && code.getFullName().contains(namespaceSeparator)) {
+ if (getNamespaceSeparator() != null && code.getFullName().contains(getNamespaceSeparator())) {
// System.err.println("code=" + code);
final Code fullyCode = code;
// final String namespace = fullyCode.getNamespace(getLeafs());
@@ -138,12 +136,4 @@ public class DescriptionDiagram extends AbstractEntityDiagram {
return UmlDiagramType.DESCRIPTION;
}
- public void setNamespaceSeparator(String namespaceSeparator) {
- this.namespaceSeparator = namespaceSeparator;
- }
-
- public String getNamespaceSeparator() {
- return namespaceSeparator;
- }
-
}
diff --git a/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementFull.java b/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementFull.java
index 13cb887c0..cc6dee34e 100644
--- a/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementFull.java
+++ b/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementFull.java
@@ -62,7 +62,7 @@ import net.sourceforge.plantuml.graphic.color.Colors;
public class CommandCreateElementFull extends SingleLineCommand2 {
- public static final String ALL_TYPES = "artifact|actor|folder|card|file|package|rectangle|node|frame|cloud|database|queue|stack|storage|agent|usecase|component|boundary|control|entity|interface|circle";
+ public static final String ALL_TYPES = "artifact|actor|folder|card|file|package|rectangle|node|frame|cloud|database|queue|stack|storage|agent|usecase|component|boundary|control|entity|interface|circle|collections";
public CommandCreateElementFull() {
super(getRegexConcat());
@@ -205,7 +205,8 @@ public class CommandCreateElementFull extends SingleLineCommand2 cols = getCols(getDonors(), 5);
+ return new UDrawable() {
+ public void drawU(UGraphic ug) {
+ final StringBounder stringBounder = ug.getStringBounder();
+ double x = 0;
+ double y = 0;
+ for (TextBlock tb : cols) {
+ final Dimension2D dim = tb.calculateDimension(stringBounder);
+ tb.drawU(ug.apply(new UTranslate(x, 0)));
+ x += dim.getWidth() + 10;
+ y = Math.max(y, dim.getHeight());
+ }
+ }
+ };
+ }
+
+ public static List getCols(List lines, final int nbCol) throws IOException {
+ final List result = new ArrayList();
+ final int maxLine = (lines.size() + (nbCol - 1)) / nbCol;
+ for (int i = 0; i < lines.size(); i += maxLine) {
+ final List current = lines.subList(i, Math.min(lines.size(), i + maxLine));
+ result.add(GraphicStrings.createBlackOnWhite(current));
+ }
+ return result;
+ }
+
+ private List getDonors() throws IOException {
+ final List lines = new ArrayList(SkinParam.getPossibleValues());
+ return lines;
+ }
+
+ public DiagramDescription getDescription() {
+ return new DiagramDescription("(Parameters)");
+ }
+
+ public static PSystemSkinparameterList create() {
+ return new PSystemSkinparameterList();
+ }
+
+}
diff --git a/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java b/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java
new file mode 100644
index 000000000..c12876259
--- /dev/null
+++ b/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java
@@ -0,0 +1,51 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.donors;
+
+import net.sourceforge.plantuml.AbstractPSystem;
+import net.sourceforge.plantuml.command.PSystemSingleLineFactory;
+
+public class PSystemSkinparameterListFactory extends PSystemSingleLineFactory {
+
+ @Override
+ protected AbstractPSystem executeLine(String line) {
+ if (line.matches("(?i)^(skinparameters)\\s*$")) {
+ return PSystemSkinparameterList.create();
+ }
+ return null;
+ }
+
+}
diff --git a/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java b/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java
index 8078eb848..8965621df 100644
--- a/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java
+++ b/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java
@@ -62,6 +62,7 @@ import net.sourceforge.plantuml.graphic.InnerStrategy;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.ugraphic.ColorMapperIdentity;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UEllipse;
@@ -209,4 +210,9 @@ public class FlowDiagram extends UmlDiagram implements TextBlock {
final MinMaxGolem minMax = getMinMax();
return new Dimension2DDouble(minMax.getWidth() * SINGLE_SIZE_X, minMax.getHeight() * SINGLE_SIZE_Y);
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ }
+
}
diff --git a/src/net/sourceforge/plantuml/graphic/AbstractTextBlock.java b/src/net/sourceforge/plantuml/graphic/AbstractTextBlock.java
index c93528151..5e79926a1 100644
--- a/src/net/sourceforge/plantuml/graphic/AbstractTextBlock.java
+++ b/src/net/sourceforge/plantuml/graphic/AbstractTextBlock.java
@@ -37,9 +37,15 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Rectangle2D;
+import net.sourceforge.plantuml.ugraphic.MinMax;
+
public abstract class AbstractTextBlock implements TextBlock {
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
throw new UnsupportedOperationException("member=" + member + " " + getClass().toString());
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException(getClass().toString());
+ }
}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/graphic/HtmlColorAndStyle.java b/src/net/sourceforge/plantuml/graphic/HtmlColorAndStyle.java
index 772688c6d..878002880 100644
--- a/src/net/sourceforge/plantuml/graphic/HtmlColorAndStyle.java
+++ b/src/net/sourceforge/plantuml/graphic/HtmlColorAndStyle.java
@@ -88,7 +88,7 @@ public class HtmlColorAndStyle {
LinkStyle style = LinkStyle.NORMAL();
final IHtmlColorSet set = skinParam.getIHtmlColorSet();
for (String s : definition.split(",")) {
- final LinkStyle tmpStyle = LinkStyle.fromString(s);
+ final LinkStyle tmpStyle = LinkStyle.fromString1(s);
if (tmpStyle.isNormal() == false) {
style = tmpStyle;
continue;
diff --git a/src/net/sourceforge/plantuml/graphic/QuoteUtils.java b/src/net/sourceforge/plantuml/graphic/QuoteUtils.java
index da21631f9..6343ef24a 100644
--- a/src/net/sourceforge/plantuml/graphic/QuoteUtils.java
+++ b/src/net/sourceforge/plantuml/graphic/QuoteUtils.java
@@ -243,7 +243,10 @@ public class QuoteUtils {
"P'rfg nh cvrq qh zhe dhr y'ba ibvg yr zvrhk yr zhe.",
"Jr xabj ubj uhznaf jbex. Gurl ner nyy fb cerqvpgnoyr.",
"Gur qbtznf bs gur dhvrg cnfg ner vanqrdhngr gb gur fgbezl cerfrag",
- "Ab jnl gb cerirag guvf, fnlf bayl angvba jurer guvf erthyneyl unccraf");
+ "Ab jnl gb cerirag guvf, fnlf bayl angvba jurer guvf erthyneyl unccraf",
+ "L'n dhrydhrf dhrfgvbaf dhv erfgrag fbhf fvyrapr...",
+ "Vs gurer vf ab fbyhgvba, gurer vf ab ceboyrz",
+ "V unir zrzbevrf, ohg V pna'g gryy vs gurl'er erny.");
private QuoteUtils() {
}
diff --git a/src/net/sourceforge/plantuml/graphic/SkinParameter.java b/src/net/sourceforge/plantuml/graphic/SkinParameter.java
index f55cecd49..9ff8471a9 100644
--- a/src/net/sourceforge/plantuml/graphic/SkinParameter.java
+++ b/src/net/sourceforge/plantuml/graphic/SkinParameter.java
@@ -92,6 +92,9 @@ public class SkinParameter {
public static final SkinParameter RECTANGLE = new SkinParameter("RECTANGLE", ColorParam.rectangleBackground,
ColorParam.rectangleBorder, FontParam.RECTANGLE, FontParam.RECTANGLE_STEREOTYPE);
+ public static final SkinParameter COLLECTIONS = new SkinParameter("COLLECTIONS", ColorParam.collectionsBackground,
+ ColorParam.collectionsBorder, FontParam.RECTANGLE, FontParam.RECTANGLE_STEREOTYPE);
+
public static final SkinParameter ACTOR = new SkinParameter("ACTOR", ColorParam.actorBackground,
ColorParam.actorBorder, FontParam.ACTOR, FontParam.ACTOR_STEREOTYPE);
diff --git a/src/net/sourceforge/plantuml/graphic/SymbolContext.java b/src/net/sourceforge/plantuml/graphic/SymbolContext.java
index ad0d32f99..5eb046737 100644
--- a/src/net/sourceforge/plantuml/graphic/SymbolContext.java
+++ b/src/net/sourceforge/plantuml/graphic/SymbolContext.java
@@ -68,17 +68,28 @@ public class SymbolContext {
}
final public UGraphic apply(UGraphic ug) {
- return applyStroke(applyColors(ug));
+ ug = applyColors(ug);
+ ug = applyStroke(ug);
+ return ug;
}
public UGraphic applyColors(UGraphic ug) {
- return ug.apply(new UChangeColor(foreColor)).apply(new UChangeBackColor(backColor));
+ ug = ug.apply(new UChangeColor(foreColor));
+ ug = ug.apply(new UChangeBackColor(backColor));
+ return ug;
}
public UGraphic applyStroke(UGraphic ug) {
return ug.apply(stroke);
}
+ public SymbolContext transparentBackColorToNull() {
+ if (backColor instanceof HtmlColorTransparent) {
+ return new SymbolContext(null, foreColor, stroke, shadowing, deltaShadow, roundCorner);
+ }
+ return this;
+ }
+
public SymbolContext(HtmlColor backColor, HtmlColor foreColor) {
this(backColor, foreColor, new UStroke(), false, 0, 0);
}
diff --git a/src/net/sourceforge/plantuml/graphic/TextBlock.java b/src/net/sourceforge/plantuml/graphic/TextBlock.java
index 2ff628f6e..c21a0da39 100644
--- a/src/net/sourceforge/plantuml/graphic/TextBlock.java
+++ b/src/net/sourceforge/plantuml/graphic/TextBlock.java
@@ -38,13 +38,15 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UShape;
public interface TextBlock extends UDrawable, UShape {
public Dimension2D calculateDimension(StringBounder stringBounder);
-
+
+ public MinMax getMinMax(StringBounder stringBounder);
+
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy);
-
}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/graphic/TextBlockCompressed.java b/src/net/sourceforge/plantuml/graphic/TextBlockCompressed.java
index 835e99362..21a88ebbb 100644
--- a/src/net/sourceforge/plantuml/graphic/TextBlockCompressed.java
+++ b/src/net/sourceforge/plantuml/graphic/TextBlockCompressed.java
@@ -39,6 +39,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.ugraphic.CompressionTransform;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.SlotFinder;
import net.sourceforge.plantuml.ugraphic.SlotSet;
import net.sourceforge.plantuml.ugraphic.UGraphic;
@@ -58,7 +59,26 @@ public class TextBlockCompressed extends AbstractTextBlock implements TextBlock
textBlock.drawU(new UGraphicCompress(ug, compressionTransform));
}
+ private MinMax cachedMinMax;
+
+ @Override
+ public MinMax getMinMax(StringBounder stringBounder) {
+ if (cachedMinMax == null) {
+ cachedMinMax = TextBlockUtils.getMinMax(this, stringBounder);
+ }
+ return cachedMinMax;
+ }
+
+ private CompressionTransform cachedCompressionTransform;
+
private CompressionTransform getCompressionTransform(final StringBounder stringBounder) {
+ if (cachedCompressionTransform == null) {
+ cachedCompressionTransform = getCompressionTransformSlow(stringBounder);
+ }
+ return cachedCompressionTransform;
+ }
+
+ private CompressionTransform getCompressionTransformSlow(final StringBounder stringBounder) {
final SlotFinder slotFinder = new SlotFinder(stringBounder);
textBlock.drawU(slotFinder);
final SlotSet ysSlotSet = slotFinder.getYSlotSet().reverse().smaller(5.0);
diff --git a/src/net/sourceforge/plantuml/graphic/TextBlockRecentred.java b/src/net/sourceforge/plantuml/graphic/TextBlockRecentred.java
index 94fd268d4..ea6a84def 100644
--- a/src/net/sourceforge/plantuml/graphic/TextBlockRecentred.java
+++ b/src/net/sourceforge/plantuml/graphic/TextBlockRecentred.java
@@ -37,6 +37,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
+import net.sourceforge.plantuml.Log;
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
@@ -51,12 +52,29 @@ public class TextBlockRecentred extends AbstractTextBlock implements TextBlockBa
}
public void drawU(final UGraphic ug) {
- final MinMax minMax = TextBlockUtils.getMinMax(textBlock, ug.getStringBounder());
+ StringBounder stringBounder = ug.getStringBounder();
+ final MinMax minMax = getMinMax(stringBounder);
textBlock.drawU(ug.apply(new UTranslate(-minMax.getMinX(), -minMax.getMinY())));
}
+ // private MinMax cachedMinMax;
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ return textBlock.getMinMax(stringBounder);
+ // if (cachedMinMax == null) {
+ // cachedMinMax = getMinMaxSlow(stringBounder);
+ // }
+ // // assert cachedMinMax.toString().equals(getMinMaxSlow(stringBounder).toString());
+ // return cachedMinMax;
+ }
+
+ // private MinMax getMinMaxSlow(StringBounder stringBounder) {
+ // final MinMax result = TextBlockUtils.getMinMax(textBlock, stringBounder);
+ // return result;
+ // }
+
public Dimension2D calculateDimension(StringBounder stringBounder) {
- final MinMax minMax = TextBlockUtils.getMinMax(textBlock, stringBounder);
+ final MinMax minMax = getMinMax(stringBounder);
return minMax.getDimension();
}
diff --git a/src/net/sourceforge/plantuml/graphic/TextBlockTitle.java b/src/net/sourceforge/plantuml/graphic/TextBlockTitle.java
index 0c449db1f..a67989b86 100644
--- a/src/net/sourceforge/plantuml/graphic/TextBlockTitle.java
+++ b/src/net/sourceforge/plantuml/graphic/TextBlockTitle.java
@@ -43,6 +43,7 @@ import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.LineBreakStrategy;
import net.sourceforge.plantuml.creole.CreoleMode;
import net.sourceforge.plantuml.cucadiagram.Display;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@@ -71,6 +72,10 @@ public class TextBlockTitle implements TextBlock {
return new Dimension2DDouble(width, height);
}
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ }
+
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
return null;
}
diff --git a/src/net/sourceforge/plantuml/graphic/TextBlockUtils.java b/src/net/sourceforge/plantuml/graphic/TextBlockUtils.java
index a6684346e..0accdf94f 100644
--- a/src/net/sourceforge/plantuml/graphic/TextBlockUtils.java
+++ b/src/net/sourceforge/plantuml/graphic/TextBlockUtils.java
@@ -164,6 +164,10 @@ public class TextBlockUtils {
public Dimension2D calculateDimension(StringBounder stringBounder) {
return bloc.calculateDimension(stringBounder);
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ return bloc.getMinMax(stringBounder);
+ }
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
if (strategy.check(display, member)) {
diff --git a/src/net/sourceforge/plantuml/graphic/TextBlockWithUrl.java b/src/net/sourceforge/plantuml/graphic/TextBlockWithUrl.java
index cf201594b..5c32a4c1d 100644
--- a/src/net/sourceforge/plantuml/graphic/TextBlockWithUrl.java
+++ b/src/net/sourceforge/plantuml/graphic/TextBlockWithUrl.java
@@ -39,6 +39,7 @@ import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;
import net.sourceforge.plantuml.Url;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
public class TextBlockWithUrl implements TextBlock {
@@ -68,6 +69,10 @@ public class TextBlockWithUrl implements TextBlock {
public Dimension2D calculateDimension(StringBounder stringBounder) {
return block.calculateDimension(stringBounder);
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ return block.getMinMax(stringBounder);
+ }
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
return block.getInnerPosition(member, stringBounder, strategy);
diff --git a/src/net/sourceforge/plantuml/graphic/USymbol.java b/src/net/sourceforge/plantuml/graphic/USymbol.java
index 013c93541..96b103b91 100644
--- a/src/net/sourceforge/plantuml/graphic/USymbol.java
+++ b/src/net/sourceforge/plantuml/graphic/USymbol.java
@@ -62,6 +62,8 @@ public abstract class USymbol {
public final static USymbol FILE = record("FILE", SkinParameter.FILE, new USymbolFile());
public final static USymbol RECTANGLE = record("RECTANGLE", SkinParameter.RECTANGLE, new USymbolRect(
SkinParameter.RECTANGLE, HorizontalAlignment.CENTER));
+ public final static USymbol COLLECTIONS = record("COLLECTIONS", SkinParameter.COLLECTIONS, new USymbolCollections(
+ SkinParameter.RECTANGLE, HorizontalAlignment.CENTER));
public final static USymbol AGENT = record("AGENT", SkinParameter.AGENT, new USymbolRect(SkinParameter.AGENT,
HorizontalAlignment.CENTER));
public final static USymbol ACTOR = record("ACTOR", SkinParameter.ACTOR, new USymbolActor());
@@ -197,6 +199,8 @@ public abstract class USymbol {
usymbol = USymbol.PACKAGE;
} else if (symbol.equalsIgnoreCase("rectangle")) {
usymbol = USymbol.RECTANGLE;
+ } else if (symbol.equalsIgnoreCase("collections")) {
+ usymbol = USymbol.COLLECTIONS;
} else if (symbol.equalsIgnoreCase("node")) {
usymbol = USymbol.NODE;
} else if (symbol.equalsIgnoreCase("frame")) {
diff --git a/src/net/sourceforge/plantuml/graphic/USymbolCollections.java b/src/net/sourceforge/plantuml/graphic/USymbolCollections.java
new file mode 100644
index 000000000..267268007
--- /dev/null
+++ b/src/net/sourceforge/plantuml/graphic/USymbolCollections.java
@@ -0,0 +1,145 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.graphic;
+
+import java.awt.geom.Dimension2D;
+
+import net.sourceforge.plantuml.Dimension2DDouble;
+import net.sourceforge.plantuml.ugraphic.UGraphic;
+import net.sourceforge.plantuml.ugraphic.UGraphicStencil;
+import net.sourceforge.plantuml.ugraphic.URectangle;
+import net.sourceforge.plantuml.ugraphic.UStroke;
+import net.sourceforge.plantuml.ugraphic.UTranslate;
+
+class USymbolCollections extends USymbol {
+
+ private final SkinParameter skinParameter;
+ private final HorizontalAlignment stereotypeAlignement;
+
+ public USymbolCollections(SkinParameter skinParameter, HorizontalAlignment stereotypeAlignement) {
+ this.skinParameter = skinParameter;
+ this.stereotypeAlignement = stereotypeAlignement;
+ }
+
+ @Override
+ public USymbol withStereoAlignment(HorizontalAlignment alignment) {
+ return new USymbolCollections(skinParameter, alignment);
+ }
+
+ @Override
+ public SkinParameter getSkinParameter() {
+ return skinParameter;
+ }
+
+ private void drawCollections(UGraphic ug, double width, double height, boolean shadowing, double roundCorner) {
+ final URectangle small = new URectangle(width - getDeltaCollection(), height - getDeltaCollection(),
+ roundCorner, roundCorner);
+ if (shadowing) {
+ small.setDeltaShadow(3.0);
+ }
+ ug.apply(new UTranslate(getDeltaCollection(), getDeltaCollection())).draw(small);
+ small.setDeltaShadow(0);
+ ug.apply(new UTranslate(0, 0)).draw(small);
+ }
+
+ private Margin getMargin() {
+ return new Margin(10, 10, 10, 10);
+ }
+
+ private double getDeltaCollection() {
+ return 4;
+ }
+
+ public TextBlock asSmall(TextBlock name, final TextBlock label, final TextBlock stereotype,
+ final SymbolContext symbolContext) {
+ return new AbstractTextBlock() {
+
+ public void drawU(UGraphic ug) {
+ final Dimension2D dim = calculateDimension(ug.getStringBounder());
+ ug = UGraphicStencil.create(ug, getRectangleStencil(dim), new UStroke());
+ ug = symbolContext.apply(ug);
+ drawCollections(ug, dim.getWidth(), dim.getHeight(), symbolContext.isShadowing(),
+ symbolContext.getRoundCorner());
+ final Margin margin = getMargin();
+ final TextBlock tb = TextBlockUtils.mergeTB(stereotype, label, stereotypeAlignement);
+ tb.drawU(ug.apply(new UTranslate(margin.getX1() - getDeltaCollection() / 2, margin.getY1()
+ - getDeltaCollection() / 2)));
+ }
+
+ public Dimension2D calculateDimension(StringBounder stringBounder) {
+ final Dimension2D dimLabel = label.calculateDimension(stringBounder);
+ final Dimension2D dimStereo = stereotype.calculateDimension(stringBounder);
+ return getMargin().addDimension(Dimension2DDouble.mergeTB(dimStereo, dimLabel));
+ }
+ };
+ }
+
+ public TextBlock asBig(final TextBlock title, final TextBlock stereotype, final double width, final double height,
+ final SymbolContext symbolContext) {
+ return new AbstractTextBlock() {
+ public void drawU(UGraphic ug) {
+ final Dimension2D dim = calculateDimension(ug.getStringBounder());
+ ug = symbolContext.apply(ug);
+ drawCollections(ug, dim.getWidth(), dim.getHeight(), symbolContext.isShadowing(),
+ symbolContext.getRoundCorner());
+ final Dimension2D dimStereo = stereotype.calculateDimension(ug.getStringBounder());
+ final double posStereoX;
+ final double posStereoY;
+ if (stereotypeAlignement == HorizontalAlignment.RIGHT) {
+ posStereoX = width - dimStereo.getWidth() - getMargin().getX1() / 2;
+ posStereoY = getMargin().getY1() / 2;
+ } else {
+ posStereoX = (width - dimStereo.getWidth()) / 2;
+ posStereoY = 2;
+ }
+ stereotype.drawU(ug.apply(new UTranslate(posStereoX, posStereoY)));
+ final Dimension2D dimTitle = title.calculateDimension(ug.getStringBounder());
+ final double posTitle = (width - dimTitle.getWidth()) / 2;
+ title.drawU(ug.apply(new UTranslate(posTitle, 2 + dimStereo.getHeight())));
+ }
+
+ public Dimension2D calculateDimension(StringBounder stringBounder) {
+ return new Dimension2DDouble(width, height);
+ }
+ };
+ }
+
+ @Override
+ public boolean manageHorizontalLine() {
+ return true;
+ }
+
+}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/graphic/color/Colors.java b/src/net/sourceforge/plantuml/graphic/color/Colors.java
index 7e732fa81..ae11537b3 100644
--- a/src/net/sourceforge/plantuml/graphic/color/Colors.java
+++ b/src/net/sourceforge/plantuml/graphic/color/Colors.java
@@ -170,7 +170,7 @@ public class Colors {
throw new IllegalArgumentException();
}
final Colors result = copy();
- result.lineStyle = LinkStyle.valueOf(StringUtils.goUpperCase(s));
+ result.lineStyle = LinkStyle.fromString1(StringUtils.goUpperCase(s));
return result;
}
diff --git a/src/net/sourceforge/plantuml/preproc/Preprocessor.java b/src/net/sourceforge/plantuml/preproc/Preprocessor.java
index 05252fd64..6b99e17cc 100644
--- a/src/net/sourceforge/plantuml/preproc/Preprocessor.java
+++ b/src/net/sourceforge/plantuml/preproc/Preprocessor.java
@@ -66,16 +66,35 @@ public class Preprocessor implements ReadLine {
private final Defines defines;
private final PreprocessorInclude rawSource;
private final ReadLineInsertable source;
+ private final SubPreprocessor subPreprocessor;
- public Preprocessor(ReadLine reader, String charset, Defines defines, File newCurrentDir,
+ public Sub getSub(String blocname) {
+ return subPreprocessor.getSub(blocname);
+ }
+
+ public Preprocessor(List config, ReadLine reader, String charset, Defines defines, File newCurrentDir,
DefinitionsContainer definitionsContainer) {
this.defines = defines;
this.defines.saveState();
- this.rawSource = new PreprocessorInclude(reader, defines, charset, newCurrentDir, definitionsContainer);
+ this.rawSource = new PreprocessorInclude(config, reader, defines, charset, newCurrentDir, definitionsContainer);
this.source = new ReadLineInsertable(new IfManager(rawSource, defines));
+ this.subPreprocessor = new SubPreprocessor(config, charset, defines, definitionsContainer, new ReadLine() {
+
+ public void close() throws IOException {
+ Preprocessor.this.close();
+ }
+
+ public CharSequence2 readLine() throws IOException {
+ return readLineInternal();
+ }
+ });
}
public CharSequence2 readLine() throws IOException {
+ return subPreprocessor.readLine();
+ }
+
+ private CharSequence2 readLineInternal() throws IOException {
final CharSequence2 s = source.readLine();
if (s == null) {
return null;
@@ -194,5 +213,5 @@ public class Preprocessor implements ReadLine {
public Set getFilesUsed() {
return Collections.unmodifiableSet(rawSource.getFilesUsedGlobal());
}
-
+
}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/preproc/PreprocessorInclude.java b/src/net/sourceforge/plantuml/preproc/PreprocessorInclude.java
index e0a259277..7b929b745 100644
--- a/src/net/sourceforge/plantuml/preproc/PreprocessorInclude.java
+++ b/src/net/sourceforge/plantuml/preproc/PreprocessorInclude.java
@@ -44,6 +44,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -72,6 +73,7 @@ public class PreprocessorInclude implements ReadLine {
private final ReadLine reader2;
private final String charset;
private final Defines defines;
+ private final List config;
private final DefinitionsContainer definitionsContainer;
private int numLine = 0;
@@ -82,19 +84,20 @@ public class PreprocessorInclude implements ReadLine {
private final Set filesUsedCurrent;
private final Set filesUsedGlobal;
- public PreprocessorInclude(ReadLine reader, Defines defines, String charset, File newCurrentDir,
- DefinitionsContainer definitionsContainer) {
- this(reader, defines, charset, newCurrentDir, new HashSet(), new HashSet(),
- definitionsContainer);
+ public PreprocessorInclude(List config, ReadLine reader, Defines defines, String charset,
+ File newCurrentDir, DefinitionsContainer definitionsContainer) {
+ this(config, reader, defines, charset, newCurrentDir, new HashSet(),
+ new HashSet(), definitionsContainer);
}
public Set getFilesUsedGlobal() {
return Collections.unmodifiableSet(filesUsedGlobal);
}
- private PreprocessorInclude(ReadLine reader, Defines defines, String charset, File newCurrentDir,
- Set filesUsedCurrent, Set filesUsedGlobal,
+ private PreprocessorInclude(List config, ReadLine reader, Defines defines, String charset,
+ File newCurrentDir, Set filesUsedCurrent, Set filesUsedGlobal,
DefinitionsContainer definitionsContainer) {
+ this.config = config;
this.defines = defines;
this.charset = charset;
this.reader2 = reader;
@@ -117,6 +120,11 @@ public class PreprocessorInclude implements ReadLine {
public CharSequence2 readLine() throws IOException {
final CharSequence2 result = readLineInternal();
+ if (result != null && StartUtils.isArobaseStartDiagram(result) && config.size() > 0) {
+ final List empty = new ArrayList();
+ included = new PreprocessorInclude(empty, new ReadLineList(config, result.getLocation()), defines, charset,
+ null, filesUsedCurrent, filesUsedGlobal, definitionsContainer);
+ }
if (result != null && (StartUtils.isArobaseEndDiagram(result) || StartUtils.isArobaseStartDiagram(result))) {
// http://plantuml.sourceforge.net/qa/?qa=3389/error-generating-when-same-file-included-different-diagram
filesUsedCurrent.clear();
@@ -173,8 +181,8 @@ public class PreprocessorInclude implements ReadLine {
}
try {
final URL url = new URL(urlString);
- included = new PreprocessorInclude(getReaderInclude(s, url, suf), defines, charset, null, filesUsedCurrent,
- filesUsedGlobal, definitionsContainer);
+ included = new PreprocessorInclude(config, getReaderInclude(s, url, suf), defines, charset, null,
+ filesUsedCurrent, filesUsedGlobal, definitionsContainer);
} catch (MalformedURLException e) {
return s.withErrorPreprocessor("Cannot include url " + urlString);
}
@@ -184,8 +192,8 @@ public class PreprocessorInclude implements ReadLine {
private CharSequence2 manageDefinitionInclude(CharSequence2 s, Matcher2 matcher) throws IOException {
final String definitionName = matcher.group(1);
final List extends CharSequence> definition = definitionsContainer.getDefinition(definitionName);
- included = new PreprocessorInclude(new ReadLineList(definition, s.getLocation()), defines, charset, null,
- filesUsedCurrent, filesUsedGlobal, definitionsContainer);
+ included = new PreprocessorInclude(config, new ReadLineList(definition, s.getLocation()), defines, charset,
+ null, filesUsedCurrent, filesUsedGlobal, definitionsContainer);
return this.readLine();
}
@@ -197,8 +205,8 @@ public class PreprocessorInclude implements ReadLine {
if (strlibReader == null) {
return s.withErrorPreprocessor("Cannot include " + fileName);
}
- included = new PreprocessorInclude(strlibReader, defines, charset, null, filesUsedCurrent, filesUsedGlobal,
- definitionsContainer);
+ included = new PreprocessorInclude(config, strlibReader, defines, charset, null, filesUsedCurrent,
+ filesUsedGlobal, definitionsContainer);
return this.readLine();
}
final int idx = fileName.lastIndexOf('!');
@@ -214,12 +222,11 @@ public class PreprocessorInclude implements ReadLine {
} else if (allowMany == false && filesUsedCurrent.contains(f2)) {
// return CharSequence2Impl.errorPreprocessor("File already included " + f.getAbsolutePath(), lineLocation);
return this.readLine();
- } else {
- filesUsedCurrent.add(f2);
- filesUsedGlobal.add(f2);
- included = new PreprocessorInclude(getReaderInclude(s, f, suf), defines, charset, f.getParentFile(),
- filesUsedCurrent, filesUsedGlobal, definitionsContainer);
}
+ filesUsedCurrent.add(f2);
+ filesUsedGlobal.add(f2);
+ included = new PreprocessorInclude(config, getReaderInclude(s, f, suf), defines, charset, f.getParentFile(),
+ filesUsedCurrent, filesUsedGlobal, definitionsContainer);
return this.readLine();
}
diff --git a/src/net/sourceforge/plantuml/preproc/ReadLineConcat.java b/src/net/sourceforge/plantuml/preproc/ReadLineConcat.java
new file mode 100644
index 000000000..4ebfa0a01
--- /dev/null
+++ b/src/net/sourceforge/plantuml/preproc/ReadLineConcat.java
@@ -0,0 +1,72 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.preproc;
+
+import java.io.IOException;
+
+import net.sourceforge.plantuml.CharSequence2;
+
+public class ReadLineConcat implements ReadLine {
+
+ private ReadLine file1;
+ final private ReadLine file2;
+
+ public ReadLineConcat(ReadLine file1, ReadLine file2) {
+ this.file1 = file1;
+ this.file2 = file2;
+ }
+
+ public void close() throws IOException {
+ if (file1 != null) {
+ throw new IllegalStateException();
+ }
+ file2.close();
+ }
+
+ public CharSequence2 readLine() throws IOException {
+ CharSequence2 result = null;
+ if (file1 != null) {
+ result = file1.readLine();
+ if (result == null) {
+ file1.close();
+ file1 = null;
+ }
+ return readLine();
+ }
+ return file2.readLine();
+ }
+
+}
diff --git a/src/net/sourceforge/plantuml/preproc/Sub.java b/src/net/sourceforge/plantuml/preproc/Sub.java
new file mode 100644
index 000000000..99a2474ab
--- /dev/null
+++ b/src/net/sourceforge/plantuml/preproc/Sub.java
@@ -0,0 +1,61 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.preproc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sourceforge.plantuml.CharSequence2;
+import net.sourceforge.plantuml.LineLocation;
+
+public class Sub {
+
+ private final String name;
+ private final List lines = new ArrayList();
+
+ public Sub(String name) {
+ this.name = name;
+ }
+
+ public void add(CharSequence2 s) {
+ this.lines.add(s);
+ }
+
+ public ReadLine getReadLine(LineLocation lineLocation) {
+ return new ReadLineList(lines, lineLocation);
+ }
+
+}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/preproc/SubPreprocessor.java b/src/net/sourceforge/plantuml/preproc/SubPreprocessor.java
new file mode 100644
index 000000000..1ab34d8b4
--- /dev/null
+++ b/src/net/sourceforge/plantuml/preproc/SubPreprocessor.java
@@ -0,0 +1,183 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.preproc;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sourceforge.plantuml.CharSequence2;
+import net.sourceforge.plantuml.DefinitionsContainer;
+import net.sourceforge.plantuml.FileSystem;
+import net.sourceforge.plantuml.Log;
+import net.sourceforge.plantuml.command.regex.Matcher2;
+import net.sourceforge.plantuml.command.regex.MyPattern;
+import net.sourceforge.plantuml.command.regex.Pattern2;
+
+public class SubPreprocessor implements ReadLine {
+
+ private static final String ID = "[A-Za-z_][A-Za-z_0-9]*";
+
+ private static final Pattern2 includeSubPattern = MyPattern.cmpile("^[%s]*!includesub[%s]+[%g]?([^%g]+)[%g]?$");
+
+ private static final Pattern2 startsub = MyPattern.cmpile("^[%s]*!startsub[%s]+(" + ID + ")");
+ private static final Pattern2 endsub = MyPattern.cmpile("^[%s]*!endsub[%s]*");
+
+ private final ReadLine source;
+ private final Defines defines;
+ private final DefinitionsContainer definitionsContainer;
+ private final String charset;
+ private final Map subs = new HashMap();
+ private final List config;
+ private Sub learningSub;
+ private ReadLine includedSub;
+
+ public SubPreprocessor(List config, String charset, Defines defines,
+ DefinitionsContainer definitionsContainer, ReadLine source) {
+ this.config = config;
+ this.source = source;
+ this.charset = charset;
+ this.defines = defines;
+ this.definitionsContainer = definitionsContainer;
+ }
+
+ public CharSequence2 readLine() throws IOException {
+ if (includedSub != null) {
+ final CharSequence2 s = includedSub.readLine();
+ if (s != null) {
+ eventuallyLearn(s);
+ return s;
+ }
+ includedSub = null;
+ }
+
+ final CharSequence2 s = source.readLine();
+ if (s == null) {
+ return null;
+ }
+
+ final Matcher2 m1 = includeSubPattern.matcher(s);
+ if (m1.find()) {
+ return manageIncludeSub(s, m1);
+ }
+
+ Matcher2 m = startsub.matcher(s);
+ if (m.find()) {
+ return manageStartsub(m);
+ }
+
+ m = endsub.matcher(s);
+ if (m.find()) {
+ return manageEndsub(m);
+ }
+ eventuallyLearn(s);
+ return s;
+ }
+
+ private void eventuallyLearn(final CharSequence2 s) {
+ if (learningSub != null) {
+ learningSub.add(s);
+ }
+ }
+
+ private CharSequence2 manageIncludeSub(CharSequence2 s, Matcher2 m) throws IOException {
+ final String name = m.group(1);
+ final int idx = name.indexOf('!');
+ if (idx != -1) {
+ final String filename = name.substring(0, idx);
+ final String blocname = name.substring(idx + 1);
+ final File f = FileSystem.getInstance().getFile(PreprocessorInclude.withEnvironmentVariable(filename));
+ if (f.exists() == false || f.isDirectory()) {
+ return s.withErrorPreprocessor("Cannot include " + f.getAbsolutePath());
+ }
+ final Preprocessor data = new Preprocessor(config, getReaderInclude(s, f), charset, defines, null,
+ definitionsContainer);
+ while (data.readLine() != null) {
+ // Read file
+ }
+ data.close();
+ this.includedSub = data.getSub(blocname).getReadLine(s.getLocation());
+ } else {
+ this.includedSub = getSub(name).getReadLine(s.getLocation());
+ }
+ return this.readLine();
+ }
+
+ private ReadLine getReaderInclude(CharSequence2 s, final File f) {
+ try {
+ if (charset == null) {
+ Log.info("Using default charset");
+ return new ReadLineReader(new FileReader(f), f.getAbsolutePath(), s.getLocation());
+ }
+ Log.info("Using charset " + charset);
+ return new ReadLineReader(new InputStreamReader(new FileInputStream(f), charset), f.getAbsolutePath(),
+ s.getLocation());
+ } catch (IOException e) {
+ return new ReadLineSimple(s, e.toString());
+ }
+
+ }
+
+ private CharSequence2 manageStartsub(Matcher2 m) throws IOException {
+ final String name = m.group(1);
+ this.learningSub = getSub(name);
+ return this.readLine();
+ }
+
+ private CharSequence2 manageEndsub(Matcher2 m) throws IOException {
+ this.learningSub = null;
+ return this.readLine();
+ }
+
+ Sub getSub(String name) {
+ Sub result = subs.get(name);
+ if (result == null) {
+ result = new Sub(name);
+ subs.put(name, result);
+ }
+ return result;
+ }
+
+ public void close() throws IOException {
+ source.close();
+ }
+
+}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/project3/CommandGanttArrow.java b/src/net/sourceforge/plantuml/project3/CommandGanttArrow.java
new file mode 100644
index 000000000..5cd0757f3
--- /dev/null
+++ b/src/net/sourceforge/plantuml/project3/CommandGanttArrow.java
@@ -0,0 +1,83 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.project3;
+
+import net.sourceforge.plantuml.command.CommandExecutionResult;
+import net.sourceforge.plantuml.command.SingleLineCommand2;
+import net.sourceforge.plantuml.command.regex.RegexConcat;
+import net.sourceforge.plantuml.command.regex.RegexLeaf;
+import net.sourceforge.plantuml.command.regex.RegexResult;
+
+public class CommandGanttArrow extends SingleLineCommand2 {
+
+ public CommandGanttArrow() {
+ super(getRegexConcat());
+ }
+
+ static RegexConcat getRegexConcat() {
+ return new RegexConcat(new RegexLeaf("^"), //
+ new RegexLeaf("CODE1", "([\\p{L}0-9_.]+)"), //
+ new RegexLeaf("[%s]*"), //
+ new RegexLeaf("ARROW", "(-+)\\>"), //
+ new RegexLeaf("[%s]*"), //
+ new RegexLeaf("CODE2", "([\\p{L}0-9_.]+)"), //
+ new RegexLeaf("[%s]*"), //
+ new RegexLeaf("$"));
+ }
+
+ @Override
+ protected CommandExecutionResult executeArg(GanttDiagram diagram, RegexResult arg) {
+
+ final String code1 = arg.get("CODE1", 0);
+ final String code2 = arg.get("CODE2", 0);
+ final Task task1 = diagram.getExistingTask(code1);
+ if (task1 == null) {
+ return CommandExecutionResult.error("No such task " + code1);
+ }
+ final Task task2 = diagram.getExistingTask(code2);
+ if (task2 == null) {
+ return CommandExecutionResult.error("No such task " + code2);
+ }
+
+ final TaskInstant end1 = new TaskInstant(task1, TaskAttribute.END);
+
+ task2.setStart(end1.getInstantPrecise());
+ diagram.addContraint(new GanttConstraint(end1, new TaskInstant(task2, TaskAttribute.START)));
+
+ return CommandExecutionResult.ok();
+ }
+
+}
diff --git a/src/net/sourceforge/plantuml/project3/DayAsDate.java b/src/net/sourceforge/plantuml/project3/DayAsDate.java
index c8d5e6cf6..34281c91e 100644
--- a/src/net/sourceforge/plantuml/project3/DayAsDate.java
+++ b/src/net/sourceforge/plantuml/project3/DayAsDate.java
@@ -35,7 +35,7 @@
*/
package net.sourceforge.plantuml.project3;
-public class DayAsDate implements Complement {
+public class DayAsDate implements Complement, Comparable {
private final int year;
private final int dayOfMonth;
@@ -55,6 +55,10 @@ public class DayAsDate implements Complement {
this.month = month;
}
+ private int internalNumber() {
+ return year * 100 * 100 + month.ordinal() * 100 + dayOfMonth;
+ }
+
@Override
public String toString() {
return "" + year + "/" + month + "/" + dayOfMonth;
@@ -94,4 +98,21 @@ public class DayAsDate implements Complement {
final int h = ((q + 13 * (m + 1) / 5) + k + k / 4 + j / 4 + 5 * j) % 7;
return DayOfWeek.fromH(h);
}
+
+ public InstantDay asInstantDay(DayAsDate reference) {
+ // if (this.compareTo(reference) < 0) {
+ // throw new IllegalArgumentException();
+ // }
+ int cmp = 0;
+ DayAsDate current = reference;
+ while (current.compareTo(this) < 0) {
+ current = current.next();
+ cmp++;
+ }
+ return new InstantDay(cmp);
+ }
+
+ public int compareTo(DayAsDate other) {
+ return this.internalNumber() - other.internalNumber();
+ }
}
diff --git a/src/net/sourceforge/plantuml/project3/GCalendar.java b/src/net/sourceforge/plantuml/project3/GCalendar.java
index a7277b393..d8d2b3311 100644
--- a/src/net/sourceforge/plantuml/project3/GCalendar.java
+++ b/src/net/sourceforge/plantuml/project3/GCalendar.java
@@ -41,4 +41,6 @@ public interface GCalendar {
public DayAsDate toDayAsDate(InstantDay day);
+ public DayAsDate getStartingDate();
+
}
diff --git a/src/net/sourceforge/plantuml/project3/GCalendarSimple.java b/src/net/sourceforge/plantuml/project3/GCalendarSimple.java
index 5200b527b..e21897c6f 100644
--- a/src/net/sourceforge/plantuml/project3/GCalendarSimple.java
+++ b/src/net/sourceforge/plantuml/project3/GCalendarSimple.java
@@ -51,4 +51,8 @@ public class GCalendarSimple implements GCalendar {
return result;
}
+ public DayAsDate getStartingDate() {
+ return start;
+ }
+
}
diff --git a/src/net/sourceforge/plantuml/project3/GanttDiagram.java b/src/net/sourceforge/plantuml/project3/GanttDiagram.java
index 6ca4226bf..3b83983ce 100644
--- a/src/net/sourceforge/plantuml/project3/GanttDiagram.java
+++ b/src/net/sourceforge/plantuml/project3/GanttDiagram.java
@@ -75,7 +75,7 @@ public class GanttDiagram extends AbstractPSystem implements Subject {
private final IHtmlColorSet colorSet = new HtmlColorSetSimple();
private GCalendar calendar;
- private Instant min;
+ private final Instant min = new InstantDay(0);
private Instant max;
public DiagramDescription getDescription() {
@@ -95,7 +95,8 @@ public class GanttDiagram extends AbstractPSystem implements Subject {
final ImageBuilder imageBuilder = new ImageBuilder(new ColorMapperIdentity(), 1, null, "", "", 0, 0, null,
false);
- imageBuilder.setUDrawable(getUDrawable());
+ final UDrawable result = getUDrawable();
+ imageBuilder.setUDrawable(result);
return imageBuilder.writeImageTOBEMOVED(fileFormatOption, seed, os);
}
@@ -226,14 +227,14 @@ public class GanttDiagram extends AbstractPSystem implements Subject {
}
private void initMinMax() {
- min = tasks.values().iterator().next().getStart();
+ // min = tasks.values().iterator().next().getStart();
max = tasks.values().iterator().next().getEnd();
for (Task task : tasks.values()) {
final Instant start = task.getStart();
final Instant end = task.getEnd();
- if (min.compareTo(start) > 0) {
- min = start;
- }
+ // if (min.compareTo(start) > 0) {
+ // min = start;
+ // }
if (max.compareTo(end) < 0) {
max = end;
}
@@ -320,4 +321,8 @@ public class GanttDiagram extends AbstractPSystem implements Subject {
this.calendar = new GCalendarSimple(start);
}
+ public DayAsDate getStartingDate() {
+ return this.calendar.getStartingDate();
+ }
+
}
diff --git a/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java b/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java
index 68d8603ee..2b1d7f6a0 100644
--- a/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java
+++ b/src/net/sourceforge/plantuml/project3/GanttDiagramFactory.java
@@ -54,20 +54,21 @@ public class GanttDiagramFactory extends UmlDiagramFactory {
return Arrays. asList(new SubjectTask(), new SubjectProject(), new SubjectDayOfWeek());
}
- public GanttDiagramFactory() {
- super(DiagramType.UML);
+ public GanttDiagramFactory(DiagramType type) {
+ super(type);
}
@Override
protected List createCommands() {
final List cmds = new ArrayList();
+ //addCommonCommands(cmds);
cmds.add(new CommandNope());
cmds.add(new CommandComment());
cmds.add(new CommandMultilinesComment());
-
for (Command cmd : getLanguageCommands()) {
cmds.add(cmd);
}
+ cmds.add(new CommandGanttArrow());
return cmds;
}
diff --git a/src/net/sourceforge/plantuml/project3/SubjectTask.java b/src/net/sourceforge/plantuml/project3/SubjectTask.java
index 17ac2637f..7b8c65516 100644
--- a/src/net/sourceforge/plantuml/project3/SubjectTask.java
+++ b/src/net/sourceforge/plantuml/project3/SubjectTask.java
@@ -45,8 +45,8 @@ import net.sourceforge.plantuml.command.regex.RegexResult;
public class SubjectTask implements SubjectPattern {
public Collection getVerbs() {
- return Arrays. asList(new VerbLasts(), new VerbStarts(), new VerbHappens(), new VerbEnds(),
- new VerbIsColored());
+ return Arrays. asList(new VerbLasts(), new VerbTaskStarts(), new VerbTaskStartsAbsolute(),
+ new VerbHappens(), new VerbEnds(), new VerbIsColored());
}
public IRegex toRegex() {
diff --git a/src/net/sourceforge/plantuml/project3/VerbStarts.java b/src/net/sourceforge/plantuml/project3/VerbTaskStarts.java
similarity index 97%
rename from src/net/sourceforge/plantuml/project3/VerbStarts.java
rename to src/net/sourceforge/plantuml/project3/VerbTaskStarts.java
index 89550d966..3cec23abd 100644
--- a/src/net/sourceforge/plantuml/project3/VerbStarts.java
+++ b/src/net/sourceforge/plantuml/project3/VerbTaskStarts.java
@@ -43,7 +43,7 @@ import net.sourceforge.plantuml.command.regex.IRegex;
import net.sourceforge.plantuml.command.regex.RegexLeaf;
import net.sourceforge.plantuml.command.regex.RegexResult;
-public class VerbStarts implements VerbPattern {
+public class VerbTaskStarts implements VerbPattern {
public Collection getComplements() {
return Arrays. asList(new ComplementBeforeOrAfterOrAtTaskStartOrEnd());
diff --git a/src/net/sourceforge/plantuml/project3/VerbTaskStartsAbsolute.java b/src/net/sourceforge/plantuml/project3/VerbTaskStartsAbsolute.java
new file mode 100644
index 000000000..f1d18ec72
--- /dev/null
+++ b/src/net/sourceforge/plantuml/project3/VerbTaskStartsAbsolute.java
@@ -0,0 +1,67 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.project3;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import net.sourceforge.plantuml.command.CommandExecutionResult;
+import net.sourceforge.plantuml.command.regex.IRegex;
+import net.sourceforge.plantuml.command.regex.RegexLeaf;
+import net.sourceforge.plantuml.command.regex.RegexResult;
+
+public class VerbTaskStartsAbsolute implements VerbPattern {
+
+ public Collection getComplements() {
+ return Arrays. asList(new ComplementDate());
+ }
+
+ public IRegex toRegex() {
+ return new RegexLeaf("starts[%s]*(the[%s]*|on[%s]*)*");
+ }
+
+ public Verb getVerb(final GanttDiagram project, RegexResult arg) {
+ return new Verb() {
+ public CommandExecutionResult execute(Subject subject, Complement complement) {
+ final Task task = (Task) subject;
+ final DayAsDate start = (DayAsDate) complement;
+ task.setStart(start.asInstantDay(project.getStartingDate()));
+ return CommandExecutionResult.ok();
+ }
+
+ };
+ }
+}
diff --git a/src/net/sourceforge/plantuml/sequencediagram/graphic/SequenceDiagramFileMakerPuma2.java b/src/net/sourceforge/plantuml/sequencediagram/graphic/SequenceDiagramFileMakerPuma2.java
index e38d32dd7..7fc041ab9 100644
--- a/src/net/sourceforge/plantuml/sequencediagram/graphic/SequenceDiagramFileMakerPuma2.java
+++ b/src/net/sourceforge/plantuml/sequencediagram/graphic/SequenceDiagramFileMakerPuma2.java
@@ -158,8 +158,8 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
final Dimension2D dimTitle = compTitle.calculateDimension(stringBounder);
area.setTitleArea(dimTitle.getWidth(), dimTitle.getHeight());
}
- area.initFooter(getPngTitler(FontParam.FOOTER), stringBounder);
- area.initHeader(getPngTitler(FontParam.HEADER), stringBounder);
+ area.initFooter(getPngTitler(FontParam.FOOTER, index), stringBounder);
+ area.initHeader(getPngTitler(FontParam.HEADER, index), stringBounder);
final DisplayPositionned legend = diagram.getLegend();
final TextBlock legendBlock;
@@ -178,8 +178,8 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
final String metadata = fileFormatOption.isWithMetadata() ? diagram.getMetadata() : null;
- final ImageBuilder imageBuilder = new ImageBuilder(diagram.getSkinParam(), oneOf(scale, dpiFactor), metadata, null, 3,
- 10, diagram.getAnimation());
+ final ImageBuilder imageBuilder = new ImageBuilder(diagram.getSkinParam(), oneOf(scale, dpiFactor), metadata,
+ null, 3, 10, diagram.getAnimation());
imageBuilder.setUDrawable(new UDrawable() {
public void drawU(UGraphic ug) {
@@ -213,8 +213,8 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
drawableSet.drawU22(ug.apply(new UTranslate(area.getSequenceAreaX() + delta1 / 2, sequenceAreaY)),
delta, fullDimension.getWidth(), page, diagram.isShowFootbox());
- drawHeader(area, ug);
- drawFooter(area, ug);
+ drawHeader(area, ug, index);
+ drawFooter(area, ug, index);
if (DisplayPositionned.isNull(legend) == false) {
final double delta2;
@@ -234,8 +234,8 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
return imageBuilder.writeImageTOBEMOVED(fileFormatOption, diagram.seed(), os);
}
- private void drawFooter(SequenceDiagramArea area, UGraphic ug) {
- final PngTitler pngTitler = getPngTitler(FontParam.FOOTER);
+ private void drawFooter(SequenceDiagramArea area, UGraphic ug, int page) {
+ final PngTitler pngTitler = getPngTitler(FontParam.FOOTER, page);
final TextBlock text = pngTitler.getTextBlock();
if (text == null) {
return;
@@ -244,8 +244,8 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
.getFooterY())));
}
- private void drawHeader(SequenceDiagramArea area, UGraphic ug) {
- final PngTitler pngTitler = getPngTitler(FontParam.HEADER);
+ private void drawHeader(SequenceDiagramArea area, UGraphic ug, int page) {
+ final PngTitler pngTitler = getPngTitler(FontParam.HEADER, page);
final TextBlock text = pngTitler.getTextBlock();
if (text == null) {
return;
@@ -281,14 +281,14 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
return diagram.getScale().getScale(width, height);
}
- private PngTitler getPngTitler(final FontParam fontParam) {
+ private PngTitler getPngTitler(final FontParam fontParam, int page) {
final HtmlColor hyperlinkColor = diagram.getSkinParam().getHyperlinkColor();
final HtmlColor titleColor = diagram.getSkinParam().getFontHtmlColor(null, fontParam);
final String fontFamily = diagram.getSkinParam().getFont(null, false, fontParam).getFamily(null);
final int fontSize = diagram.getSkinParam().getFont(null, false, fontParam).getSize();
- return new PngTitler(titleColor, diagram.getFooterOrHeaderTeoz(fontParam).getDisplay(), fontSize, fontFamily,
- diagram.getFooterOrHeaderTeoz(fontParam).getHorizontalAlignment(), hyperlinkColor, diagram
- .getSkinParam().useUnderlineForHyperlink());
+ final Display display = diagram.getFooterOrHeaderTeoz(fontParam).getDisplay().withPage(page + 1, pages.size());
+ return new PngTitler(titleColor, display, fontSize, fontFamily, diagram.getFooterOrHeaderTeoz(fontParam)
+ .getHorizontalAlignment(), hyperlinkColor, diagram.getSkinParam().useUnderlineForHyperlink());
}
}
diff --git a/src/net/sourceforge/plantuml/skin/rose/ComponentRoseEnglober.java b/src/net/sourceforge/plantuml/skin/rose/ComponentRoseEnglober.java
index 5eb76be8a..34c70acfc 100644
--- a/src/net/sourceforge/plantuml/skin/rose/ComponentRoseEnglober.java
+++ b/src/net/sourceforge/plantuml/skin/rose/ComponentRoseEnglober.java
@@ -54,15 +54,17 @@ public class ComponentRoseEnglober extends AbstractTextualComponent {
private final SymbolContext symbolContext;
- public ComponentRoseEnglober(SymbolContext symbolContext, Display strings, FontConfiguration font, ISkinSimple spriteContainer) {
- super(LineBreakStrategy.NONE, strings, font, HorizontalAlignment.CENTER, 3, 3, 1, spriteContainer, false, null, null);
+ public ComponentRoseEnglober(SymbolContext symbolContext, Display strings, FontConfiguration font,
+ ISkinSimple spriteContainer) {
+ super(LineBreakStrategy.NONE, strings, font, HorizontalAlignment.CENTER, 3, 3, 1, spriteContainer, false, null,
+ null);
this.symbolContext = symbolContext;
}
@Override
protected void drawBackgroundInternalU(UGraphic ug, Area area) {
final Dimension2D dimensionToUse = area.getDimensionToUse();
- ug = symbolContext.apply(ug);
+ ug = symbolContext.transparentBackColorToNull().apply(ug);
ug.draw(new URectangle(dimensionToUse.getWidth(), dimensionToUse.getHeight()));
final double xpos = (dimensionToUse.getWidth() - getPureTextWidth(ug.getStringBounder())) / 2;
getTextBlock().drawU(ug.apply(new UTranslate(xpos, 0)));
diff --git a/src/net/sourceforge/plantuml/svek/DecorateEntityImage.java b/src/net/sourceforge/plantuml/svek/DecorateEntityImage.java
index b8d119771..e718952d2 100644
--- a/src/net/sourceforge/plantuml/svek/DecorateEntityImage.java
+++ b/src/net/sourceforge/plantuml/svek/DecorateEntityImage.java
@@ -44,6 +44,7 @@ import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.VerticalAlignment;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@@ -140,6 +141,11 @@ public class DecorateEntityImage extends AbstractTextBlock implements TextBlockB
getTextDim(text2, stringBounder));
return Dimension2DDouble.mergeTB(dimOriginal, dimText);
}
+
+ @Override
+ public MinMax getMinMax(StringBounder stringBounder) {
+ return MinMax.fromDim(calculateDimension(stringBounder));
+ }
public final double getDeltaX() {
if (original instanceof DecorateEntityImage) {
diff --git a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java
index ad9694a8b..f2050e850 100644
--- a/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java
+++ b/src/net/sourceforge/plantuml/svek/extremity/ExtremityFactoryCrowfoot.java
@@ -47,4 +47,10 @@ public class ExtremityFactoryCrowfoot extends AbstractExtremityFactory implement
final double ortho = atan2(p0, p2);
return new ExtremityCrowfoot(p1, ortho, side);
}
+
+ @Override
+ public UDrawable createUDrawable(Point2D p0, double angle, Side side) {
+ throw new UnsupportedOperationException(getClass().toString());
+ }
+
}
\ No newline at end of file
diff --git a/src/net/sourceforge/plantuml/swing/ImageHelper.java b/src/net/sourceforge/plantuml/swing/ImageHelper.java
index a012b2dc1..01a87853a 100644
--- a/src/net/sourceforge/plantuml/swing/ImageHelper.java
+++ b/src/net/sourceforge/plantuml/swing/ImageHelper.java
@@ -145,7 +145,6 @@ public class ImageHelper {
* dimensions of the area the image is to be drawn in.
*/
public static Dimension getScaledDimension(Dimension imgSize, Dimension boundary) {
-
final int originalWidth = imgSize.width;
final int originaHeight = imgSize.height;
final int boundWidth = boundary.width;
@@ -172,6 +171,25 @@ public class ImageHelper {
return new Dimension(newWidth, newHeight);
}
+ public static Dimension getScaledDimensionWidthFit(Dimension imgSize, Dimension boundary) {
+ final int originalWidth = imgSize.width;
+ final int originaHeight = imgSize.height;
+ final int boundWidth = boundary.width;
+ final int boundHeight = boundary.height;
+ int newWidth = originalWidth;
+ int newHeight = originaHeight;
+
+ // first check if we need to scale width
+ if (originalWidth != boundWidth) {
+ // scale width to fit
+ newWidth = boundWidth;
+ // scale height to maintain aspect ratio
+ newHeight = (newWidth * originaHeight) / originalWidth;
+ }
+
+ return new Dimension(newWidth, newHeight);
+ }
+
public static Dimension getScaledDimension(Dimension dim, double zoom) {
return new Dimension((int) (dim.getWidth() * zoom), (int) (dim.getHeight() * zoom));
}
diff --git a/src/net/sourceforge/plantuml/swing/ImageWindow2.java b/src/net/sourceforge/plantuml/swing/ImageWindow2.java
index a508dc1e4..4a8b0f1eb 100644
--- a/src/net/sourceforge/plantuml/swing/ImageWindow2.java
+++ b/src/net/sourceforge/plantuml/swing/ImageWindow2.java
@@ -85,6 +85,7 @@ class ImageWindow2 extends JFrame {
private final static Preferences prefs = Preferences.userNodeForPackage(ImageWindow2.class);
private final static String KEY_ZOOM_FIT = "zoomfit";
+ private final static String KEY_WIDTH_FIT = "widthfit";
private SimpleLine2 simpleLine2;
private final JScrollPane scrollPane;
@@ -92,6 +93,7 @@ class ImageWindow2 extends JFrame {
private final JButton copy = new JButton("Copy");
private final JButton previous = new JButton("Previous");
private final JCheckBox zoomFitButt = new JCheckBox("Zoom fit");
+ private final JCheckBox widthFitButt = new JCheckBox("Width fit");
private final JButton zoomMore = new JButton("+");
private final JButton zoomLess = new JButton("-");
private final MainWindow2 main;
@@ -101,7 +103,7 @@ class ImageWindow2 extends JFrame {
private int zoomFactor = 0;
private enum SizeMode {
- FULL_SIZE, ZOOM_FIT
+ FULL_SIZE, ZOOM_FIT, WIDTH_FIT
};
private SizeMode sizeMode = SizeMode.FULL_SIZE;
@@ -121,6 +123,7 @@ class ImageWindow2 extends JFrame {
north.add(copy);
north.add(next);
north.add(zoomFitButt);
+ north.add(widthFitButt);
north.add(zoomMore);
north.add(zoomLess);
copy.setFocusable(false);
@@ -144,6 +147,14 @@ class ImageWindow2 extends JFrame {
zoomFitButt.setFocusable(false);
zoomFitButt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
+ widthFitButt.setSelected(false);
+ zoomFit();
+ }
+ });
+ widthFitButt.setFocusable(false);
+ widthFitButt.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ zoomFitButt.setSelected(false);
zoomFit();
}
});
@@ -189,6 +200,11 @@ class ImageWindow2 extends JFrame {
if (zoomChecked) {
sizeMode = SizeMode.ZOOM_FIT;
}
+ final boolean widthZoomChecked = prefs.getBoolean(KEY_WIDTH_FIT, false);
+ widthFitButt.setSelected(widthZoomChecked);
+ if (widthZoomChecked) {
+ sizeMode = SizeMode.WIDTH_FIT;
+ }
this.setFocusable(true);
this.addKeyListener(new KeyAdapter() {
@@ -251,11 +267,15 @@ class ImageWindow2 extends JFrame {
}
private void zoomFit() {
- final boolean selected = zoomFitButt.isSelected();
- prefs.putBoolean(KEY_ZOOM_FIT, selected);
+ final boolean selectedZoom = zoomFitButt.isSelected();
+ final boolean selectedWidth = widthFitButt.isSelected();
+ prefs.putBoolean(KEY_ZOOM_FIT, selectedZoom);
+ prefs.putBoolean(KEY_WIDTH_FIT, selectedWidth);
zoomFactor = 0;
- if (selected) {
+ if (selectedZoom) {
sizeMode = SizeMode.ZOOM_FIT;
+ } else if (selectedWidth) {
+ sizeMode = SizeMode.WIDTH_FIT;
} else {
sizeMode = SizeMode.FULL_SIZE;
}
@@ -297,6 +317,11 @@ class ImageWindow2 extends JFrame {
final Dimension newImgDim = ImageHelper
.getScaledDimension(imageDim, scrollPane.getViewport().getSize());
image = ImageHelper.getScaledInstance(image, newImgDim, getHints(), true);
+ } else if (sizeMode == SizeMode.WIDTH_FIT) {
+ final Dimension imageDim = new Dimension(image.getWidth(), image.getHeight());
+ final Dimension newImgDim = ImageHelper.getScaledDimensionWidthFit(imageDim, scrollPane.getViewport()
+ .getSize());
+ image = ImageHelper.getScaledInstance(image, newImgDim, getHints(), false);
} else if (zoomFactor != 0) {
final Dimension imageDim = new Dimension(image.getWidth(), image.getHeight());
final Dimension newImgDim = ImageHelper.getScaledDimension(imageDim, getZoom());
diff --git a/src/net/sourceforge/plantuml/swing/MainWindow2.java b/src/net/sourceforge/plantuml/swing/MainWindow2.java
index 5750aaea2..ba0da1a1e 100644
--- a/src/net/sourceforge/plantuml/swing/MainWindow2.java
+++ b/src/net/sourceforge/plantuml/swing/MainWindow2.java
@@ -289,7 +289,6 @@ public class MainWindow2 extends JFrame {
final JFileChooser chooser = new JFileChooser();
chooser.setDialogType(JFileChooser.CUSTOM_DIALOG);
chooser.setDialogTitle("Directory to watch:");
- chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);
final String currentPath = prefs.get(KEY_DIR, ".");
chooser.setCurrentDirectory(new File(currentPath));
@@ -298,7 +297,11 @@ public class MainWindow2 extends JFrame {
Log.info("Closing OpenDialog");
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File dir = chooser.getSelectedFile();
- changeDir(dir);
+ if (dir.isDirectory()) {
+ changeDir(dir);
+ } else {
+ changeDir(dir.getParentFile());
+ }
}
}
diff --git a/src/net/sourceforge/plantuml/tikz/TikzGraphics.java b/src/net/sourceforge/plantuml/tikz/TikzGraphics.java
index 5b824de32..68d294042 100644
--- a/src/net/sourceforge/plantuml/tikz/TikzGraphics.java
+++ b/src/net/sourceforge/plantuml/tikz/TikzGraphics.java
@@ -40,11 +40,14 @@ import java.awt.geom.PathIterator;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import net.sourceforge.plantuml.Log;
+import net.sourceforge.plantuml.SignatureUtils;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.eps.EpsGraphics;
import net.sourceforge.plantuml.ugraphic.UPath;
@@ -75,6 +78,29 @@ public class TikzGraphics {
this.scale = scale;
}
+ private final Map styles = new LinkedHashMap();
+ private final Map stylesID = new HashMap();
+
+ private void addCommand(final StringBuilder sb) {
+ final String s = sb.toString();
+ cmd.add(s);
+ if (s.startsWith("\\draw[") || s.startsWith("\\shade[")) {
+ final int end = s.indexOf(']');
+ if (end != -1) {
+ final int start = s.indexOf('[');
+ final String style = s.substring(start + 1, end);
+ Integer count = styles.get(style);
+ if (count == null) {
+ count = 1;
+ stylesID.put(style, "pstyle" + stylesID.size());
+ } else {
+ count++;
+ }
+ styles.put(style, count);
+ }
+ }
+ }
+
private String getColorName(Color c) {
if (c.equals(Color.WHITE)) {
return "white";
@@ -142,9 +168,14 @@ public class TikzGraphics {
if (scale != 1) {
out(os, "\\scalebox{" + format(scale) + "}{");
}
- out(os, "\\begin{tikzpicture}[yscale=-1]");
+ out(os, "\\begin{tikzpicture}[yscale=-1");
+ purgeStyles();
+ for (String style : styles.keySet()) {
+ out(os, "," + stylesID.get(style) + "/.style={" + style + "}");
+ }
+ out(os, "]");
for (String s : cmd) {
- out(os, s);
+ out(os, useStyle(s));
}
out(os, "\\end{tikzpicture}");
if (scale != 1) {
@@ -155,6 +186,31 @@ public class TikzGraphics {
}
}
+ private String useStyle(String s) {
+ for (String style : styles.keySet()) {
+ final String start1 = "\\draw[" + style + "]";
+ if (s.startsWith(start1)) {
+ final String newStart = "\\draw[" + stylesID.get(style) + "]";
+ return newStart + s.substring(start1.length());
+ }
+ final String start2 = "\\shade[" + style + "]";
+ if (s.startsWith(start2)) {
+ final String newStart = "\\shade[" + stylesID.get(style) + "]";
+ return newStart + s.substring(start2.length());
+ }
+ }
+ return s;
+ }
+
+ private void purgeStyles() {
+ for (Iterator> it = styles.entrySet().iterator(); it.hasNext();) {
+ final Map.Entry ent = it.next();
+ if (ent.getValue().intValue() == 1) {
+ it.remove();
+ }
+ }
+ }
+
private String definecolor(String name, Color color) {
return "\\definecolor{" + name + "}{RGB}{" + color.getRed() + "," + color.getGreen() + "," + color.getBlue()
+ "}";
@@ -162,23 +218,8 @@ public class TikzGraphics {
public void rectangle(double x, double y, double width, double height) {
final StringBuilder sb = new StringBuilder();
- final boolean gradient = this.fillcolorGradient2 != null;
if (pendingUrl == null) {
- sb.append(gradient ? "\\shade[" : "\\draw[");
- if (color != null) {
- sb.append(gradient ? "draw=" : "color=");
- sb.append(getColorName(color) + ",");
- }
- if (gradient) {
- sb.append("top color=" + getColorName(fillcolor) + ",");
- sb.append("bottom color=" + getColorName(fillcolorGradient2) + ",");
- sb.append("shading=axis,shading angle=" + getAngleFromGradientPolicy() + ",");
- } else if (fillcolor != null) {
- sb.append("fill=" + getColorName(fillcolor) + ",");
- if (color == null) {
- sb.append("color=" + getColorName(fillcolor) + ",");
- }
- }
+ appendShadeOrDraw(sb);
sb.append("line width=" + thickness + "pt] ");
sb.append(couple(x, y) + " rectangle " + couple(x + width, y + height));
sb.append(";");
@@ -207,7 +248,7 @@ public class TikzGraphics {
sb.append(" {};");
urlIgnoreText = true;
}
- cmd.add(sb.toString());
+ addCommand(sb);
}
private String getAngleFromGradientPolicy() {
@@ -235,11 +276,11 @@ public class TikzGraphics {
}
private void out(OutputStream os, String s) throws IOException {
- os.write(s.getBytes());
- os.write("\n".getBytes());
+ os.write(s.getBytes("UTF-8"));
+ os.write("\n".getBytes("UTF-8"));
}
- public void text(double x, double y, String text) {
+ public void text(double x, double y, String text, boolean underline, boolean italic, boolean bold) {
final StringBuilder sb = new StringBuilder("\\node at " + couple(x, y));
sb.append("[below right");
if (color != null) {
@@ -248,7 +289,25 @@ public class TikzGraphics {
}
sb.append("]{");
if (pendingUrl == null || urlIgnoreText) {
+ if (underline) {
+ sb.append("\\underline{");
+ }
+ if (italic) {
+ sb.append("\\textit{");
+ }
+ if (bold) {
+ sb.append("\\textbf{");
+ }
sb.append(protectText(text));
+ if (bold) {
+ sb.append("}");
+ }
+ if (italic) {
+ sb.append("}");
+ }
+ if (underline) {
+ sb.append("}");
+ }
} else {
appendPendingUrl(sb);
sb.append("{");
@@ -256,7 +315,7 @@ public class TikzGraphics {
sb.append("}");
}
sb.append("};");
- cmd.add(sb.toString());
+ addCommand(sb);
}
private void appendPendingUrl(final StringBuilder sb) {
@@ -279,11 +338,14 @@ public class TikzGraphics {
}
private String protectText(String text) {
+ text = text.replaceAll("\\\\", "\\\\\\\\");
text = text.replaceAll("_", "\\\\_");
text = text.replaceAll("\u00AB", "\\\\guillemotleft ");
text = text.replaceAll("\u00BB", "\\\\guillemotright ");
text = text.replaceAll("<", "\\\\textless ");
text = text.replaceAll(">", "\\\\textgreater ");
+ text = text.replaceAll("&", "\\\\&");
+ text = text.replaceAll("~", "\\\\~{}");
return text;
}
@@ -302,17 +364,13 @@ public class TikzGraphics {
sb.append(" -- ");
sb.append(couple(x2, y2));
sb.append(";");
- cmd.add(sb.toString());
+ addCommand(sb);
}
public void polygon(double[] points) {
- final StringBuilder sb = new StringBuilder("\\draw[");
- if (color != null) {
- sb.append("color=" + getColorName(color) + ",");
- }
- if (fillcolor != null) {
- sb.append("fill=" + getColorName(fillcolor) + ",");
- }
+
+ final StringBuilder sb = new StringBuilder();
+ appendShadeOrDraw(sb);
sb.append("line width=" + thickness + "pt]");
sb.append(" ");
for (int i = 0; i < points.length; i += 2) {
@@ -320,17 +378,12 @@ public class TikzGraphics {
sb.append(" -- ");
}
sb.append("cycle;");
- cmd.add(sb.toString());
+ addCommand(sb);
}
private void round(double r, double[] points) {
- final StringBuilder sb = new StringBuilder("\\draw[");
- if (color != null) {
- sb.append("color=" + getColorName(color) + ",");
- }
- if (fillcolor != null) {
- sb.append("fill=" + getColorName(fillcolor) + ",");
- }
+ final StringBuilder sb = new StringBuilder();
+ appendShadeOrDraw(sb);
sb.append("line width=" + thickness + "pt]");
sb.append(" ");
int i = 0;
@@ -351,7 +404,26 @@ public class TikzGraphics {
sb.append(couple(points[i++], points[i++]));
sb.append(" -- ");
sb.append("cycle;");
- cmd.add(sb.toString());
+ addCommand(sb);
+ }
+
+ private void appendShadeOrDraw(final StringBuilder sb) {
+ final boolean gradient = this.fillcolorGradient2 != null;
+ sb.append(gradient ? "\\shade[" : "\\draw[");
+ if (color != null) {
+ sb.append(gradient ? "draw=" : "color=");
+ sb.append(getColorName(color) + ",");
+ }
+ if (gradient) {
+ sb.append("top color=" + getColorName(fillcolor) + ",");
+ sb.append("bottom color=" + getColorName(fillcolorGradient2) + ",");
+ sb.append("shading=axis,shading angle=" + getAngleFromGradientPolicy() + ",");
+ } else if (fillcolor != null) {
+ sb.append("fill=" + getColorName(fillcolor) + ",");
+ if (color == null) {
+ sb.append("color=" + getColorName(fillcolor) + ",");
+ }
+ }
}
public void rectangleRound(double x, double y, double width, double height, double r) {
@@ -381,23 +453,12 @@ public class TikzGraphics {
public void upath(double x, double y, UPath path) {
final StringBuilder sb = new StringBuilder();
- final boolean gradient = this.fillcolorGradient2 != null;
- sb.append(gradient ? "\\shade[" : "\\draw[");
- if (color != null) {
- sb.append(gradient ? "draw=" : "color=");
- sb.append(getColorName(color) + ",");
+ appendShadeOrDraw(sb);
+ sb.append("line width=" + thickness + "pt");
+ if (dash != null) {
+ sb.append(",dash pattern=" + dash);
}
- if (gradient) {
- sb.append("top color=" + getColorName(fillcolor) + ",");
- sb.append("bottom color=" + getColorName(fillcolorGradient2) + ",");
- sb.append("shading=axis,shading angle=" + getAngleFromGradientPolicy() + ",");
- } else if (fillcolor != null) {
- sb.append("fill=" + getColorName(fillcolor) + ",");
- if (color == null) {
- sb.append("color=" + getColorName(fillcolor) + ",");
- }
- }
- sb.append("line width=" + thickness + "pt] ");
+ sb.append("] ");
for (USegment seg : path) {
final USegmentType type = seg.getSegmentType();
final double coord[] = seg.getCoord();
@@ -423,7 +484,7 @@ public class TikzGraphics {
}
}
sb.append(";");
- cmd.add(sb.toString());
+ addCommand(sb);
}
public void ellipse(double x, double y, double width, double height) {
@@ -437,7 +498,7 @@ public class TikzGraphics {
}
sb.append("line width=" + thickness + "pt] " + couple(x, y) + " ellipse (" + format(width) + "pt and "
+ format(height) + "pt);");
- cmd.add(sb.toString());
+ addCommand(sb);
}
public void drawSingleCharacter(double x, double y, char c) {
@@ -445,7 +506,7 @@ public class TikzGraphics {
sb.append("\\node at ");
sb.append(couple(x, y));
sb.append("[]{\\textbf{\\Large " + c + "}};");
- cmd.add(sb.toString());
+ addCommand(sb);
}
public void drawPathIterator(double x, double y, PathIterator path) {
@@ -461,7 +522,7 @@ public class TikzGraphics {
sb.append(couple(coord[0] + x, coord[1] + y));
} else if (code == PathIterator.SEG_CLOSE) {
sb.append(";");
- cmd.add(sb.toString());
+ addCommand(sb);
sb.setLength(0);
sb.append("\\draw ");
} else if (code == PathIterator.SEG_CUBICTO) {
diff --git a/src/net/sourceforge/plantuml/timingdiagram/CommandTimeMessage.java b/src/net/sourceforge/plantuml/timingdiagram/CommandTimeMessage.java
index 267fad3a4..39b4815d8 100644
--- a/src/net/sourceforge/plantuml/timingdiagram/CommandTimeMessage.java
+++ b/src/net/sourceforge/plantuml/timingdiagram/CommandTimeMessage.java
@@ -66,7 +66,13 @@ public class CommandTimeMessage extends SingleLineCommand2 {
@Override
final protected CommandExecutionResult executeArg(TimingDiagram diagram, RegexResult arg) {
final Player player1 = diagram.getPlayer(arg.get("PART1", 0));
+ if (player1 == null) {
+ return CommandExecutionResult.error("No such element: " + arg.get("PART1", 0));
+ }
final Player player2 = diagram.getPlayer(arg.get("PART2", 0));
+ if (player2 == null) {
+ return CommandExecutionResult.error("No such element: " + arg.get("PART2", 0));
+ }
final TimeTick tick1 = TimeTickBuilder.parseTimeTick("TIME1", arg, diagram);
final TimeTick tick2 = TimeTickBuilder.parseTimeTick("TIME2", arg, diagram);
diagram.createTimeMessage(player1, tick1, player2, tick2, arg.get("MESSAGE", 0));
diff --git a/src/net/sourceforge/plantuml/timingdiagram/Histogram.java b/src/net/sourceforge/plantuml/timingdiagram/Histogram.java
index af319f447..d01c56705 100644
--- a/src/net/sourceforge/plantuml/timingdiagram/Histogram.java
+++ b/src/net/sourceforge/plantuml/timingdiagram/Histogram.java
@@ -55,6 +55,7 @@ import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.color.Colors;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UStroke;
@@ -253,6 +254,10 @@ public class Histogram implements TimeDrawing {
}
return new Dimension2DDouble(width, getFullDeltaY());
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ }
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
return null;
diff --git a/src/net/sourceforge/plantuml/timingdiagram/Player.java b/src/net/sourceforge/plantuml/timingdiagram/Player.java
index fb5c775b2..8d213a5ac 100644
--- a/src/net/sourceforge/plantuml/timingdiagram/Player.java
+++ b/src/net/sourceforge/plantuml/timingdiagram/Player.java
@@ -52,6 +52,7 @@ import net.sourceforge.plantuml.graphic.InnerStrategy;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.color.Colors;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
@@ -160,6 +161,11 @@ public class Player implements TextBlock, TimeProjected {
final double zoneHeight = getZoneHeight();
return new Dimension2DDouble(width, title.calculateDimension(stringBounder).getHeight() * 2 + zoneHeight);
}
+
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ }
+
private double getZoneHeight() {
return getTimeDrawing().getHeight();
diff --git a/src/net/sourceforge/plantuml/timingdiagram/TickInPlayer.java b/src/net/sourceforge/plantuml/timingdiagram/TickInPlayer.java
index 3a7c0904b..3fa20038e 100644
--- a/src/net/sourceforge/plantuml/timingdiagram/TickInPlayer.java
+++ b/src/net/sourceforge/plantuml/timingdiagram/TickInPlayer.java
@@ -40,6 +40,9 @@ public class TickInPlayer {
private final TimeTick tick;
public TickInPlayer(Player player, TimeTick tick) {
+ if (player == null) {
+ throw new IllegalArgumentException();
+ }
this.player = player;
this.tick = tick;
}
diff --git a/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java b/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java
index 6a9d26587..a86a9cde2 100644
--- a/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java
+++ b/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java
@@ -61,6 +61,7 @@ import net.sourceforge.plantuml.graphic.TextBlockRecentred;
import net.sourceforge.plantuml.graphic.UDrawable;
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
import net.sourceforge.plantuml.ugraphic.ImageBuilder;
+import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
@@ -130,6 +131,10 @@ public class TimingDiagram extends UmlDiagram implements Clock {
return new Dimension2DDouble(totalWith, lastTranslate.getDy() + ruler.getHeight(stringBounder));
}
+ public MinMax getMinMax(StringBounder stringBounder) {
+ throw new UnsupportedOperationException();
+ }
+
public HtmlColor getBackcolor() {
return null;
}
diff --git a/src/net/sourceforge/plantuml/ugraphic/UEllipse.java b/src/net/sourceforge/plantuml/ugraphic/UEllipse.java
index 23e64fc26..1b37b1f37 100644
--- a/src/net/sourceforge/plantuml/ugraphic/UEllipse.java
+++ b/src/net/sourceforge/plantuml/ugraphic/UEllipse.java
@@ -39,7 +39,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
-public class UEllipse extends AbstractShadowable implements Scalable {
+public class UEllipse extends AbstractShadowable implements Scalable, UShapeSized {
private final double width;
private final double height;
diff --git a/src/net/sourceforge/plantuml/ugraphic/ULine.java b/src/net/sourceforge/plantuml/ugraphic/ULine.java
index 966edb8e2..a42767f6b 100644
--- a/src/net/sourceforge/plantuml/ugraphic/ULine.java
+++ b/src/net/sourceforge/plantuml/ugraphic/ULine.java
@@ -35,7 +35,7 @@
*/
package net.sourceforge.plantuml.ugraphic;
-public class ULine extends AbstractShadowable implements Scalable {
+public class ULine extends AbstractShadowable implements Scalable, UShapeSized {
private final double dx;
private final double dy;
@@ -71,4 +71,12 @@ public class ULine extends AbstractShadowable implements Scalable {
return Math.sqrt(dx * dx + dy * dy);
}
+ public double getWidth() {
+ return dx;
+ }
+
+ public double getHeight() {
+ return dy;
+ }
+
}
diff --git a/src/net/sourceforge/plantuml/ugraphic/URectangle.java b/src/net/sourceforge/plantuml/ugraphic/URectangle.java
index 7c1ce100e..e5c54014d 100644
--- a/src/net/sourceforge/plantuml/ugraphic/URectangle.java
+++ b/src/net/sourceforge/plantuml/ugraphic/URectangle.java
@@ -36,7 +36,7 @@ package net.sourceforge.plantuml.ugraphic;
import java.awt.geom.Dimension2D;
-public class URectangle extends AbstractShadowable implements Scalable {
+public class URectangle extends AbstractShadowable implements Scalable, UShapeSized {
private final double width;
private final double height;
diff --git a/src/net/sourceforge/plantuml/ugraphic/UShapeSized.java b/src/net/sourceforge/plantuml/ugraphic/UShapeSized.java
new file mode 100644
index 000000000..cff295e8c
--- /dev/null
+++ b/src/net/sourceforge/plantuml/ugraphic/UShapeSized.java
@@ -0,0 +1,44 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2017, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://plantuml.com/paypal
+ *
+ * This file is part of PlantUML.
+ *
+ * PlantUML is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PlantUML distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ *
+ *
+ * Original Author: Arnaud Roques
+ *
+ *
+ */
+package net.sourceforge.plantuml.ugraphic;
+
+public interface UShapeSized extends UShape {
+
+ public double getWidth();
+
+ public double getHeight();
+
+}
diff --git a/src/net/sourceforge/plantuml/ugraphic/g2d/DriverEllipseG2d.java b/src/net/sourceforge/plantuml/ugraphic/g2d/DriverEllipseG2d.java
index 89b46bd5b..b639b55a9 100644
--- a/src/net/sourceforge/plantuml/ugraphic/g2d/DriverEllipseG2d.java
+++ b/src/net/sourceforge/plantuml/ugraphic/g2d/DriverEllipseG2d.java
@@ -62,76 +62,45 @@ public class DriverEllipseG2d extends DriverShadowedG2d implements UDriver {
@@ -68,57 +69,57 @@ public class DriverRectangleG2d extends DriverShadowedG2d implements UDriver {
final String backcolor = StringUtils.getAsSvg(mapper, back);
svg.setFillColor(backcolor);
}
- final String color = StringUtils.getAsSvg(mapper, param.getColor());
- svg.setStrokeColor(color);
+ DriverRectangleSvg.applyColor(svg, mapper, param);
+ // svg.setStrokeColor(StringUtils.getAsSvg(mapper, param.getColor()));
svg.setStrokeWidth(param.getStroke().getThickness(), param.getStroke().getDasharraySvg());
double start = shape.getStart();
diff --git a/src/net/sourceforge/plantuml/ugraphic/svg/DriverLineSvg.java b/src/net/sourceforge/plantuml/ugraphic/svg/DriverLineSvg.java
index cc29a4228..0478f0618 100644
--- a/src/net/sourceforge/plantuml/ugraphic/svg/DriverLineSvg.java
+++ b/src/net/sourceforge/plantuml/ugraphic/svg/DriverLineSvg.java
@@ -37,6 +37,8 @@ package net.sourceforge.plantuml.ugraphic.svg;
import java.awt.geom.Line2D;
import net.sourceforge.plantuml.StringUtils;
+import net.sourceforge.plantuml.graphic.HtmlColor;
+import net.sourceforge.plantuml.graphic.HtmlColorGradient;
import net.sourceforge.plantuml.svg.SvgGraphics;
import net.sourceforge.plantuml.ugraphic.ClipContainer;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
@@ -77,10 +79,13 @@ public class DriverLineSvg implements UDriver {
// svg.svgLineShadow(x, y, x2, y2, shape.getDeltaShadow());
// }
- // svg.setStroke(new BasicStroke((float)
- // param.getStroke().getThickness()));
- final String color = StringUtils.getAsSvg(mapper, param.getColor());
- svg.setStrokeColor(color);
+ final HtmlColor color = param.getColor();
+ if (color instanceof HtmlColorGradient) {
+ final HtmlColorGradient gr = (HtmlColorGradient) color;
+ svg.setStrokeColor(StringUtils.getAsSvg(mapper, gr.getColor1()));
+ } else {
+ svg.setStrokeColor(StringUtils.getAsSvg(mapper, color));
+ }
svg.setStrokeWidth(param.getStroke().getThickness(), param.getStroke().getDasharraySvg());
svg.svgLine(x, y, x2, y2, shape.getDeltaShadow());
}
diff --git a/src/net/sourceforge/plantuml/ugraphic/svg/DriverRectangleSvg.java b/src/net/sourceforge/plantuml/ugraphic/svg/DriverRectangleSvg.java
index 28fa2c167..4bebbef66 100644
--- a/src/net/sourceforge/plantuml/ugraphic/svg/DriverRectangleSvg.java
+++ b/src/net/sourceforge/plantuml/ugraphic/svg/DriverRectangleSvg.java
@@ -64,18 +64,17 @@ public class DriverRectangleSvg implements UDriver {
double width = rect.getWidth();
double height = rect.getHeight();
- final String color = StringUtils.getAsSvg(mapper, param.getColor());
final HtmlColor back = param.getBackcolor();
if (back instanceof HtmlColorGradient) {
final HtmlColorGradient gr = (HtmlColorGradient) back;
final String id = svg.createSvgGradient(StringUtils.getAsHtml(mapper.getMappedColor(gr.getColor1())),
StringUtils.getAsHtml(mapper.getMappedColor(gr.getColor2())), gr.getPolicy());
svg.setFillColor("url(#" + id + ")");
- svg.setStrokeColor(color);
+ applyColor(svg, mapper, param);
} else {
final String backcolor = StringUtils.getAsSvg(mapper, back);
svg.setFillColor(backcolor);
- svg.setStrokeColor(color);
+ applyColor(svg, mapper, param);
}
svg.setStrokeWidth(param.getStroke().getThickness(), param.getStroke().getDasharraySvg());
@@ -93,4 +92,16 @@ public class DriverRectangleSvg implements UDriver {
}
svg.svgRectangle(x, y, width, height, rx / 2, ry / 2, rect.getDeltaShadow(), rect.getComment());
}
+
+ public static void applyColor(SvgGraphics svg, ColorMapper mapper, UParam param) {
+ final HtmlColor color = param.getColor();
+ if (color instanceof HtmlColorGradient) {
+ final HtmlColorGradient gr = (HtmlColorGradient) color;
+ final String id = svg.createSvgGradient(StringUtils.getAsHtml(mapper.getMappedColor(gr.getColor1())),
+ StringUtils.getAsHtml(mapper.getMappedColor(gr.getColor2())), gr.getPolicy());
+ svg.setStrokeColor("url(#" + id + ")");
+ } else {
+ svg.setStrokeColor(StringUtils.getAsSvg(mapper, color));
+ }
+ }
}
diff --git a/src/net/sourceforge/plantuml/ugraphic/tikz/DriverAtomTextTikz.java b/src/net/sourceforge/plantuml/ugraphic/tikz/DriverAtomTextTikz.java
index 35fc3a1ae..a2fa16c1f 100644
--- a/src/net/sourceforge/plantuml/ugraphic/tikz/DriverAtomTextTikz.java
+++ b/src/net/sourceforge/plantuml/ugraphic/tikz/DriverAtomTextTikz.java
@@ -36,6 +36,7 @@ package net.sourceforge.plantuml.ugraphic.tikz;
import net.sourceforge.plantuml.creole.AtomText;
import net.sourceforge.plantuml.graphic.FontConfiguration;
+import net.sourceforge.plantuml.graphic.FontStyle;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.tikz.TikzGraphics;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
@@ -52,9 +53,10 @@ public class DriverAtomTextTikz implements UDriver {
final UFont font = fontConfiguration.getFont();
final HtmlColor col = fontConfiguration.getColor();
tikz.setStrokeColor(mapper.getMappedColor(col));
- // tikz.setStrokeColor(mapper.getMappedColor(param.getColor()));
-
- tikz.text(x, y, text.getText());
+ final boolean underline = fontConfiguration.containsStyle(FontStyle.UNDERLINE);
+ final boolean italic = font.isItalic();
+ final boolean bold = font.isBold();
+ tikz.text(x, y, text.getText(), underline, italic, bold);
}
diff --git a/src/net/sourceforge/plantuml/ugraphic/tikz/DriverPolygonTikz.java b/src/net/sourceforge/plantuml/ugraphic/tikz/DriverPolygonTikz.java
index f001e316a..42a147cd9 100644
--- a/src/net/sourceforge/plantuml/ugraphic/tikz/DriverPolygonTikz.java
+++ b/src/net/sourceforge/plantuml/ugraphic/tikz/DriverPolygonTikz.java
@@ -34,6 +34,10 @@
*/
package net.sourceforge.plantuml.ugraphic.tikz;
+import java.awt.Color;
+
+import net.sourceforge.plantuml.graphic.HtmlColor;
+import net.sourceforge.plantuml.graphic.HtmlColorGradient;
import net.sourceforge.plantuml.tikz.TikzGraphics;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
import net.sourceforge.plantuml.ugraphic.UDriver;
@@ -47,7 +51,15 @@ public class DriverPolygonTikz implements UDriver {
final UPolygon poly = (UPolygon) shape;
final double points[] = poly.getPointArray(x, y);
- tikz.setFillColor(mapper.getMappedColor(param.getBackcolor()));
+ final HtmlColor back = param.getBackcolor();
+ if (back instanceof HtmlColorGradient) {
+ final HtmlColorGradient gr = (HtmlColorGradient) back;
+ final Color color1 = mapper.getMappedColor(gr.getColor1());
+ final Color color2 = mapper.getMappedColor(gr.getColor2());
+ tikz.setGradientColor(color1, color2, gr.getPolicy());
+ } else {
+ tikz.setFillColor(mapper.getMappedColor(back));
+ }
tikz.setStrokeColor(mapper.getMappedColor(param.getColor()));
tikz.setStrokeWidth(param.getStroke().getThickness(), param.getStroke().getDashTikz());
diff --git a/src/net/sourceforge/plantuml/ugraphic/tikz/DriverUTextTikz.java b/src/net/sourceforge/plantuml/ugraphic/tikz/DriverUTextTikz.java
index 960adfcaa..2e378af84 100644
--- a/src/net/sourceforge/plantuml/ugraphic/tikz/DriverUTextTikz.java
+++ b/src/net/sourceforge/plantuml/ugraphic/tikz/DriverUTextTikz.java
@@ -35,6 +35,7 @@
package net.sourceforge.plantuml.ugraphic.tikz;
import net.sourceforge.plantuml.graphic.FontConfiguration;
+import net.sourceforge.plantuml.graphic.FontStyle;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.tikz.TikzGraphics;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
@@ -52,8 +53,10 @@ public class DriverUTextTikz implements UDriver {
final UFont font = fontConfiguration.getFont();
final HtmlColor col = fontConfiguration.getColor();
tikz.setStrokeColor(mapper.getMappedColor(col));
- // tikz.setStrokeColor(mapper.getMappedColor(param.getColor()));
- tikz.text(x, y, shape.getText());
+ final boolean underline = fontConfiguration.containsStyle(FontStyle.UNDERLINE);
+ final boolean italic = font.isItalic();
+ final boolean bold = font.isBold();
+ tikz.text(x, y, shape.getText(), underline, italic, bold);
}
diff --git a/src/net/sourceforge/plantuml/version/License.java b/src/net/sourceforge/plantuml/version/License.java
index 90090a59e..47c61ae58 100644
--- a/src/net/sourceforge/plantuml/version/License.java
+++ b/src/net/sourceforge/plantuml/version/License.java
@@ -456,6 +456,8 @@ public enum License {
text.add("");
text.add("Icons provided by OpenIconic : https://useiconic.com/open");
text.add("Archimate sprites provided by Archi : http://www.archimatetool.com");
+ text.add("Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML");
+ text.add("Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites");
text.add("ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen");
text.add("ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman");
text.add("");
diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java
index 4ff98c278..acc3fe1ae 100644
--- a/src/net/sourceforge/plantuml/version/Version.java
+++ b/src/net/sourceforge/plantuml/version/Version.java
@@ -43,7 +43,7 @@ public class Version {
private static final int MAJOR_SEPARATOR = 1000000;
public static int version() {
- return 1201718;
+ return 1201719;
}
public static int versionPatched() {
@@ -88,7 +88,7 @@ public class Version {
}
public static long compileTime() {
- return 1507308992029L;
+ return 1510487182424L;
}
public static String compileTimeString() {
diff --git a/stdlib/devicons/android.puml b/stdlib/devicons/android.puml
new file mode 100644
index 000000000..c2d279782
--- /dev/null
+++ b/stdlib/devicons/android.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $android [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000230000000000000050000000000000000
+0000000000000001D00000000000001D0000000000000000
+000000000000000087000000000000A50000000000000000
+00000000000000000D127ACDDCA622C00000000000000000
+00000000000000000AFFFFFFFFFFFF800000000000000000
+0000000000000004EFFFFFFFFFFFFFFD2000000000000000
+000000000000007FFFFFFFFFFFFFFFFFF500000000000000
+00000000000007FFFFFFFFFFFFFFFFFFFF50000000000000
+0000000000003FFFF41EFFFFFFFFD15FFFF1000000000000
+000000000000DFFFF20DFFFFFFFFC03FFFFA000000000000
+000000000003FFFFFFEFFFFFFFFFFEFFFFFF100000000000
+000000000008FFFFFFFFFFFFFFFFFFFFFFFF600000000000
+00000000000BFFFFFFFFFFFFFFFFFFFFFFFF900000000000
+00000000000CFFFFFFFFFFFFFFFFFFFFFFFFA00000000000
+000000000008AAAAAAAAAAAAAAAAAAAAAAAA600000000000
+000002BD80023333333333333333333333332008DA100000
+00000DFFF90DFFFFFFFFFFFFFFFFFFFFFFFFB09FFFD00000
+00005FFFFF0DFFFFFFFFFFFFFFFFFFFFFFFFB0FFFFF50000
+00007FFFFF2DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF70000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00008FFFFF3DFFFFFFFFFFFFFFFFFFFFFFFFB3FFFFF80000
+00007FFFFF2DFFFFFFFFFFFFFFFFFFFFFFFFB2FFFFF70000
+00004FFFFF0DFFFFFFFFFFFFFFFFFFFFFFFFB0FFFFF40000
+00000CFFF70DFFFFFFFFFFFFFFFFFFFFFFFFB08FFFC00000
+0000008B600DFFFFFFFFFFFFFFFFFFFFFFFFB006B8000000
+00000000000DFFFFFFFFFFFFFFFFFFFFFFFFB00000000000
+00000000000CFFFFFFFFFFFFFFFFFFFFFFFFA00000000000
+000000000007FFFFFFFFFFFFFFFFFFFFFFFF500000000000
+000000000000AFFFFFFFFFFFFFFFFFFFFFF8000000000000
+0000000000000255BEEEEE6556DDDDDA5410000000000000
+00000000000000009FFFFF1001FFFFFA0000000000000000
+00000000000000009FFFFF1001FFFFFA0000000000000000
+00000000000000009FFFFF1001FFFFFA0000000000000000
+00000000000000009FFFFF1001FFFFFA0000000000000000
+00000000000000009FFFFF1001FFFFFA0000000000000000
+00000000000000008FFFFF0000FFFFF80000000000000000
+00000000000000004FFFFC0000CFFFF40000000000000000
+000000000000000009FFE300002EFFA00000000000000000
+000000000000000000351000000154000000000000000000
+}
+
+
+!define DEV_ANDROID(_alias) ENTITY(rectangle,black,android,_alias,DEV ANDROID)
+!define DEV_ANDROID(_alias,_label) ENTITY(rectangle,black,android,_label,_alias,DEV ANDROID)
+!define DEV_ANDROID(_alias,_label,_shape) ENTITY(_shape,black,android,_label,_alias,DEV ANDROID)
+!define DEV_ANDROID(_alias,_label,_shape,_color) ENTITY(_shape,_color,android,_label,_alias,DEV ANDROID)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/angular_simple.puml b/stdlib/devicons/angular_simple.puml
new file mode 100644
index 000000000..2ace3b0e5
--- /dev/null
+++ b/stdlib/devicons/angular_simple.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $angular_simple [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000016600000000000000000000000
+000000000000000000016CFFFFC610000000000000000000
+000000000000000005BFFFFFFFFFFB500000000000000000
+0000000000000039EFFFFFFEFFFFFFFF9400000000000000
+0000000000039EFFFFFFFFF79FFFFFFFFFFA400000000000
+0000000028DFFFFFFFFFFFF02FFFFFFFFFFFFEA400000000
+0000000BFFFFFFFFFFFFFF800BFFFFFFFFFFFFFFC0000000
+0000000DFFFFFFFFFFFFFF1003FFFFFFFFFFFFFFD0000000
+0000000BFFFFFFFFFFFFFA0000CFFFFFFFFFFFFFB0000000
+00000009FFFFFFFFFFFFF200004FFFFFFFFFFFFF90000000
+00000007FFFFFFFFFFFFC000000DFFFFFFFFFFFF70000000
+00000005FFFFFFFFFFFF40043006FFFFFFFFFFFF50000000
+00000003FFFFFFFFFFFD000BA000EFFFFFFFFFFF30000000
+00000001FFFFFFFFFFF6002FF2006FFFFFFFFFFF10000000
+00000000FFFFFFFFFFE0009FFA000EFFFFFFFFFF00000000
+00000000EFFFFFFFFF7000FFFF2008FFFFFFFFFD00000000
+00000000CFFFFFFFFF1006FFFF9001FFFFFFFFFB00000000
+00000000AFFFFFFFF9000DFFFFF1009FFFFFFFF900000000
+000000008FFFFFFFF20005555552002FFFFFFFF700000000
+000000006FFFFFFFB00000000000000AFFFFFFF500000000
+000000004FFFFFFF3000000000000002FFFFFFF400000000
+000000002FFFFFFC0006999999998000BFFFFFF200000000
+000000000FFFFFF5000FFFFFFFFFF4003FFFFFF000000000
+000000000EFFFFE0006FFFFFFFFFFB000CFFFFE000000000
+000000000CFFFF7000CFFFFFFFFFFF2004FFFFC000000000
+000000000AFFFF0003FFFFFFFFFFFF9000DFFFA000000000
+0000000008FFFB444AFFFFFFFFFFFFF4449FFF8000000000
+0000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000
+0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFD2000000000
+000000000008FFFFFFFFFFFFFFFFFFFFFFFE500000000000
+00000000000019FFFFFFFFFFFFFFFFFFFF70000000000000
+000000000000002BFFFFFFFFFFFFFFFF9100000000000000
+00000000000000004DFFFFFFFFFFFFB30000000000000000
+0000000000000000005EFFFFFFFFD4000000000000000000
+000000000000000000007FFFFFE600000000000000000000
+00000000000000000000019FF80000000000000000000000
+000000000000000000000002200000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ANGULAR_SIMPLE(_alias) ENTITY(rectangle,black,angular_simple,_alias,DEV ANGULAR_SIMPLE)
+!define DEV_ANGULAR_SIMPLE(_alias,_label) ENTITY(rectangle,black,angular_simple,_label,_alias,DEV ANGULAR_SIMPLE)
+!define DEV_ANGULAR_SIMPLE(_alias,_label,_shape) ENTITY(_shape,black,angular_simple,_label,_alias,DEV ANGULAR_SIMPLE)
+!define DEV_ANGULAR_SIMPLE(_alias,_label,_shape,_color) ENTITY(_shape,_color,angular_simple,_label,_alias,DEV ANGULAR_SIMPLE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/appcelerator.puml b/stdlib/devicons/appcelerator.puml
new file mode 100644
index 000000000..021ebfa16
--- /dev/null
+++ b/stdlib/devicons/appcelerator.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $appcelerator [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000004200000000000000000000000
+00000000000000000000005FF20000000000000000000000
+0000000000000000000000EFFB0000000000000000000000
+0000000000000000000008FFFF5000000000000000000000
+000000000000000000002FFFFFD000000000000000000000
+00000000000000000000BFFFFFF700000000000000000000
+00000000000000000004FFFFFFFF10000000000000000000
+0000000000000000000DFFFFFFFFA0000000000000000000
+0000000000000000007FFFFFFFFFF3000000000000000000
+000000000000000001FFFFFFFFFFFC000000000000000000
+000000000000000009FFFFFFFFFFFF600000000000000000
+00000000000000003FFFFFFFFFFFFFE00000000000000000
+0000000000000000BFECAA9889DFFFF80000000000000000
+0000000000000005FFA000000005FFFF2000000000000000
+000000000000000DFFA0000000005FFFA000000000000000
+000000000000007FFFD9BCCC91000EFFF400000000000000
+00000000000001FFFFFFFFFFFC000CFFFD00000000000000
+0000000000000AFFFFFFFFFFFF000CFFFF60000000000000
+0000000000003FFFFFFFFFFDDD000CFFFFE1000000000000
+000000000000CFFFFFFB300000000CFFFFF9000000000000
+000000000006FFFFFF80000000000CFFFFFF200000000000
+00000000000EFFFFFD0005BCDD000CFFFFFFB00000000000
+00000000008FFFFFF8004FFFFF000CFFFFFFF40000000000
+0000000002FFFFFFF6007FFFFF000CCEFFFFFD0000000000
+000000000BFFFFFFF7003FFFF6000A805CFFFF7000000000
+000000004FFFFFFFFA0003762000000000DFFFF100000000
+00000000DFFFFFFFFF100000082000001CFFFFFA00000000
+00000006FFFFFFFFFFE40002BF568BE5DFFFFFFF30000000
+0000001EFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFC0000000
+0000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000
+000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000
+000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF100000
+000000455555555555555555555555555555555553000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_APPCELERATOR(_alias) ENTITY(rectangle,black,appcelerator,_alias,DEV APPCELERATOR)
+!define DEV_APPCELERATOR(_alias,_label) ENTITY(rectangle,black,appcelerator,_label,_alias,DEV APPCELERATOR)
+!define DEV_APPCELERATOR(_alias,_label,_shape) ENTITY(_shape,black,appcelerator,_label,_alias,DEV APPCELERATOR)
+!define DEV_APPCELERATOR(_alias,_label,_shape,_color) ENTITY(_shape,_color,appcelerator,_label,_alias,DEV APPCELERATOR)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/apple.puml b/stdlib/devicons/apple.puml
new file mode 100644
index 000000000..2db84133e
--- /dev/null
+++ b/stdlib/devicons/apple.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $apple [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000005B90000000000000000
+0000000000000000000000000004DFFA0000000000000000
+000000000000000000000000008FFFF70000000000000000
+00000000000000000000000005FFFFF30000000000000000
+0000000000000000000000000EFFFFC00000000000000000
+0000000000000000000000007FFFFF300000000000000000
+000000000000000000000000CFFFF7000000000000000000
+000000000000000000000000FFFF60000000000000000000
+000000000000000000000000FE8100000000000000000000
+000000000000000156530000000016896300000000000000
+00000000000003BFFFFFE930016CFFFFFFE8000000000000
+0000000000008FFFFFFFFFFEDFFFFFFFFFFFD20000000000
+00000000000AFFFFFFFFFFFFFFFFFFFFFFFFFE2000000000
+00000000007FFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000
+0000000002FFFFFFFFFFFFFFFFFFFFFFFFFFF40000000000
+0000000009FFFFFFFFFFFFFFFFFFFFFFFFFF400000000000
+000000000FFFFFFFFFFFFFFFFFFFFFFFFFF9000000000000
+000000004FFFFFFFFFFFFFFFFFFFFFFFFFF2000000000000
+000000007FFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000
+00000000AFFFFFFFFFFFFFFFFFFFFFFFFFA0000000000000
+00000000AFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000
+00000000BFFFFFFFFFFFFFFFFFFFFFFFFFA0000000000000
+00000000AFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000
+000000008FFFFFFFFFFFFFFFFFFFFFFFFFF1000000000000
+000000006FFFFFFFFFFFFFFFFFFFFFFFFFF7000000000000
+000000002FFFFFFFFFFFFFFFFFFFFFFFFFFF200000000000
+000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFD10000000000
+000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFE3000000000
+0000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000000
+0000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000
+00000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000
+00000000001FFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+000000000007FFFFFFFFFFFFFFFFFFFFFFFFFD0000000000
+000000000000DFFFFFFFFFFFFFFFFFFFFFFFF40000000000
+0000000000002FFFFFFFFFFFFFFFFFFFFFFF900000000000
+00000000000006FFFFFFFFFFFFFFFFFFFFFD000000000000
+000000000000008FFFFFFFFFFFFFFFFFFFE1000000000000
+0000000000000008FFFFFD84335BFFFFFD20000000000000
+000000000000000039A840000000169A6000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_APPLE(_alias) ENTITY(rectangle,black,apple,_alias,DEV APPLE)
+!define DEV_APPLE(_alias,_label) ENTITY(rectangle,black,apple,_label,_alias,DEV APPLE)
+!define DEV_APPLE(_alias,_label,_shape) ENTITY(_shape,black,apple,_label,_alias,DEV APPLE)
+!define DEV_APPLE(_alias,_label,_shape,_color) ENTITY(_shape,_color,apple,_label,_alias,DEV APPLE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/appstore.puml b/stdlib/devicons/appstore.puml
new file mode 100644
index 000000000..e780f394b
--- /dev/null
+++ b/stdlib/devicons/appstore.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $appstore [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000003000000000000000000000000
+00000000000000000000000F200000000000000000000000
+00000000000000000000000CD00000000000000000000000
+000000000000000000000007F70000000000000000000000
+000000000000000000000001FF1000000000000000000000
+000000000000000000000000AFA000000000000000000000
+0000000000000000000000003FF400000000000000000000
+0000000000000000000000000CFD00000000000000000000
+00000000000000000000460006FF60000000000000000000
+00000000000000000001EFD400EFE1000000000000000000
+00000000000000000009FFFC008FF9000000000000000000
+0000000000000000002FFFF6001FFF200000000000000000
+000000000000000000BFFFC0000AFFC00000000000000000
+000000000000000004FFFF300003FFF40000000000000000
+00000009BBBBBBB50DFFFA08BB80CFFC06BBBBBB80000000
+0000000FFFFFFFE07FFFF14FFFF25FFF51FFFFFFE0000000
+0000000FFFFFFF51FFFF80DFFFF90EFFD08FFFFFE0000000
+0000000FFFFFFC09FFFE06FFFFFF16FFF61EFFFFE0000000
+0000000FFFFFF32FFFF51EFFFFFF80EFFE07FFFFE0000000
+0000000FFFFFA0BFFFC09FFFFFFFE07FFF70EFFFE0000000
+00000003444415FFFF3034444444410EFFE0244420000000
+0000000000000DFFFA00000000000006FFC0000000000000
+0000000000007FFFF1000000000000006600000000000000
+000000000001FFFF800000000000000001BF400000000000
+000000000009FFFE000000000000000005FFD00000000000
+00000000001FFFF5000000000000000000DFF40000000000
+000000000008FFC00000000000000000003FB00000000000
+0000000001A2292000000000000000000000036000000000
+0000000005FF7000000000000000000000007FF600000000
+0000000007FF5000000000000000000000007FFC00000000
+0000000008B10000000000000000000000000BFD00000000
+000000000100000000000000000000000000004B00000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_APPSTORE(_alias) ENTITY(rectangle,black,appstore,_alias,DEV APPSTORE)
+!define DEV_APPSTORE(_alias,_label) ENTITY(rectangle,black,appstore,_label,_alias,DEV APPSTORE)
+!define DEV_APPSTORE(_alias,_label,_shape) ENTITY(_shape,black,appstore,_label,_alias,DEV APPSTORE)
+!define DEV_APPSTORE(_alias,_label,_shape,_color) ENTITY(_shape,_color,appstore,_label,_alias,DEV APPSTORE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/aptana.puml b/stdlib/devicons/aptana.puml
new file mode 100644
index 000000000..07c6251b5
--- /dev/null
+++ b/stdlib/devicons/aptana.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $aptana [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000000000018B950000000000000000000000
+000000000000000000000CFFFF9000000000000000000000
+000000000000000000002FFFFFF000000000000000000000
+000000000000000000005FFFFFF000000000000000000000
+000000000000000000008FFFFFF200000000000000000000
+00000000005BB2000000CFFFFFF70000007DC40000000000
+0000000008FFFF400008FFFFFFFF600009FFFF6000000000
+000000003FFFFFFB78EFFFFFFFFFFD99EFFFFFF100000000
+000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF300000000
+000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000
+0000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000
+0000000000BFFFFFFFFFFFEDDFFFFFFFFFFFF60000000000
+00000000004FFFFFFFFF82000039FFFFFFFFE00000000000
+00000000002FFFFFFFB1000000002DFFFFFFD00000000000
+00000000004FFFFFFA000000000000CFFFFFF10000000000
+0000000000BFFFFFC00000000000001EFFFFF90000000000
+0000000007FFFFFF3000000000000005FFFFFF7000000000
+00000699DFFFFFFC0000000000000000EFFFFFFFDC700000
+0000AFFFFFFFFFF700000000000000009FFFFFFFFFF90000
+0000EFFFFFFFFFF500000000000000007FFFFFFFFFFF0000
+0000FFFFFFFFFFF300000000000000006FFFFFFFFFFF0000
+0000FFFFFFFFFFF500000000000000007FFFFFFFFFFD0000
+0000AFFFFFFFFFF700000000000000009FFFFFFFFFF80000
+0000068AEFFFFFFC0000000000000000EFFFFFFA87400000
+0000000007FFFFFF3000000000000005FFFFFF3000000000
+00000000009FFFFFC00000000000001EFFFFF70000000000
+00000000002FFFFFF9000000000000BFFFFFF10000000000
+00000000000FFFFFFFA1000000001CFFFFFFF00000000000
+00000000002FFFFFFFFE72000038FFFFFFFFF00000000000
+00000000009FFFFFFFFFFFEDDFFFFFFFFFFFF70000000000
+0000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000
+000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200000000
+000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF400000000
+000000001FFFFFFC89EFFFFFFFFFFD77CFFFFFF100000000
+0000000007FFFF800006FFFFFFFF700006FFFF4000000000
+00000000005CD70000008FFFFFF80000004CC30000000000
+000000000000000000002FFFFFF100000000000000000000
+000000000000000000001FFFFFF000000000000000000000
+000000000000000000000FFFFFF000000000000000000000
+0000000000000000000009FFFFA000000000000000000000
+000000000000000000000058850000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_APTANA(_alias) ENTITY(rectangle,black,aptana,_alias,DEV APTANA)
+!define DEV_APTANA(_alias,_label) ENTITY(rectangle,black,aptana,_label,_alias,DEV APTANA)
+!define DEV_APTANA(_alias,_label,_shape) ENTITY(_shape,black,aptana,_label,_alias,DEV APTANA)
+!define DEV_APTANA(_alias,_label,_shape,_color) ENTITY(_shape,_color,aptana,_label,_alias,DEV APTANA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/asterisk.puml b/stdlib/devicons/asterisk.puml
new file mode 100644
index 000000000..98f14fb01
--- /dev/null
+++ b/stdlib/devicons/asterisk.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $asterisk [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000003699AAA974000000000000000
+0000000000000000000029FFFFFEEEFFFE82300000000000
+0000000000000000002BFFC8410000049EFE780000000000
+000000000000000008FE820000000000009FF9A000000000
+0000000000000001CF800000000000000006FFD800000000
+000000000000003EC20000888800000000007FFF30000000
+00000000000003FA000000FFFF00000000000DFFB0000000
+0000000000054F80000000FFFF000000000006FFF2000000
+000000000065E800191000FFFF000190000000FFF7000000
+0000000003ACA0009FE600FFFE006FF8000000BFFA000000
+000000000DCE0002FFFFC3FFFE2CFFFF2000009FFC000000
+000000009FF50008FFFFFFFFFFFFFFFF9000008FFC000000
+00000003FFC000005EFFFFFFFFFFFFE60000009FFB000000
+0000000AFF500000008FFFFFFFFFF800000000BFF8000000
+0000001FFF0000000005FFFFFFFF3000000000EFF6000000
+0000007FFA000000008FFFFFFFFFF800000003FFF1000000
+000000BFF80000006EFFFFFFFFFFFFE6000009FFB0000000
+000000FFF7000008FFFFFFFFFFFFFFFF80000FFF40000000
+000000FFF7000002FFFFD4FFFF3DFFFF20008FFC00000000
+000000FFF90000009FF700FFFF008FF80002FFF300000000
+000000DFFE000000191000FFFF000290001DFF9000000000
+000000BFFF400000000000FFFF00000000BFFC0000000000
+0000005FFFC00000000000FFFF00000009FFE10000000000
+0000000EFFF8000000000077770000000DFF400000000000
+00000007FFFF8000000000000000000004FB000000000000
+00000000BFFFFA10000000000000047300AF200000000000
+000000001DFFFFE8200000000049EFFFE94FA00000000000
+0000000001CFFFFFFDA76678CFFFFFFFFFFFF20000000000
+000000000009FFFFFFFFFFFFFFFFF92159CFF90000000000
+00000000000029EFFFFFFFFFFEA400000000470000000000
+000000000000000379AAA985200000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ASTERISK(_alias) ENTITY(rectangle,black,asterisk,_alias,DEV ASTERISK)
+!define DEV_ASTERISK(_alias,_label) ENTITY(rectangle,black,asterisk,_label,_alias,DEV ASTERISK)
+!define DEV_ASTERISK(_alias,_label,_shape) ENTITY(_shape,black,asterisk,_label,_alias,DEV ASTERISK)
+!define DEV_ASTERISK(_alias,_label,_shape,_color) ENTITY(_shape,_color,asterisk,_label,_alias,DEV ASTERISK)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/atlassian.puml b/stdlib/devicons/atlassian.puml
new file mode 100644
index 000000000..4c798dfc7
--- /dev/null
+++ b/stdlib/devicons/atlassian.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $atlassian [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000007B40000000000000000000000000000000029100000
+000008FFD500000000000000000000000000003AFF800000
+0000005EFFE94000000000000000000000027CFFF9000000
+000000019FFFFEA6300000000000000258DFFFFC30000000
+0000000003AFFFFFFFDA987667889CFFFFFFFD5000000000
+0000000000029EFFFFFFFFFFFFFFFFFFFFFB500000000000
+0000000000000059EFFFFFFFFFFFFFFFB610000000000000
+00000000000000000258BDDDDDDB97300000000000000000
+000000000003300000000000000000000002200000000000
+00000000000CFE95100000000000000038DFF10000000000
+000000000009FFFFF30002433330000DFFFFF00000000000
+000000000006FFFFFB000CFFFFF2006FFFFFB00000000000
+000000000001FFFFFF4006FFFFB000EFFFFF600000000000
+000000000000AFFFFFE100CFFF200AFFFFFE000000000000
+0000000000002FFFFFFB002EF5006FFFFFF7000000000000
+00000000000008FFFFFF80025004FFFFFFD0000000000000
+00000000000000DFFFFFF700002FFFFFFF30000000000000
+000000000000001EFFFFFF7002EFFFFFF700000000000000
+0000000000000004FFFFFFF52EFFFFFFA000000000000000
+00000000000000007FFFFFFFFFFFFFFC0000000000000000
+000000000000000008FFFFFFFFFFFFC00000000000000000
+0000000000000000008FFFFFFFFFFC000000000000000000
+0000000000000000000AFFFFFFFFD1000000000000000000
+00000000000000000000AFFFFFFF40000000000000000000
+000000000000000000000AFFFFFFC0000000000000000000
+0000000000000000001100BFFFFFF7000000000000000000
+000000000000000000CE200DFFFFFF200000000000000000
+000000000000000006FFD102EFFFFFB00000000000000000
+00000000000000000EFFFC004FFFFFF30000000000000000
+00000000000000005FFFFF8009FFFFFA0000000000000000
+0000000000000000BFFFFF6001FFFFFF0000000000000000
+0000000000000000FFFFFE00009FFFFF5000000000000000
+0000000000000003FFFFF900004FFFFF8000000000000000
+0000000000000005FFFFF600001FFFFFA000000000000000
+0000000000000002AAAAA1000008AAAA5000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ATLASSIAN(_alias) ENTITY(rectangle,black,atlassian,_alias,DEV ATLASSIAN)
+!define DEV_ATLASSIAN(_alias,_label) ENTITY(rectangle,black,atlassian,_label,_alias,DEV ATLASSIAN)
+!define DEV_ATLASSIAN(_alias,_label,_shape) ENTITY(_shape,black,atlassian,_label,_alias,DEV ATLASSIAN)
+!define DEV_ATLASSIAN(_alias,_label,_shape,_color) ENTITY(_shape,_color,atlassian,_label,_alias,DEV ATLASSIAN)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/atom.puml b/stdlib/devicons/atom.puml
new file mode 100644
index 000000000..896d8fb20
--- /dev/null
+++ b/stdlib/devicons/atom.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $atom [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000002CFFC60000000000156300000000000000
+00000000000000DF98DFD30000004CFFFFA0000000000000
+00000000000006F50005EF20001BFE8339F6000000000000
+0000000000000BE00000050004EF800000DD000000000000
+0000000000000EA0000000005FE40000009F000000000000
+0000000000000EA000000006FD100000008F000000000000
+0000000000000FA00000007FD1000000008F000000000000
+0000000000000EA0000005FD10000000009E000000000000
+0000000000000CC000003FD100000000008A000000000000
+0000000000000AF01245EF86543100000000000000000000
+0000000000016CFFFFFFFFFFFFFFEC962000000000000000
+0000000006DFFFFC75BF72344568ADFFFEB5000000000000
+00000007EFD830EB03FB0000000000026AEFFA3000000000
+000000BFC400009F1DF20000000000000005BFFB10000000
+000009F70000004FCF600000000000810000019FE3000000
+00001F900000000FFC00002AB50000F900000004EF300000
+00003F600000000BF40000DFFF2000AF100000002FD00000
+00001FA00000002FF80000FFFF50003F7000000007F20000
+000008F8000000AFDF1000CFFF10000CE000000007F20000
+000000BFB10001FA4F70001893000006F40000001ED00000
+00000008FF1008F30CE0000000000001F9000005EF300000
+0000000026000EC003F7000000000000BE0002CFE3000000
+0000000000004F6000BF2000000000006F3008E810000000
+0000000000009F10003FB000000000001F80000000000000
+000000000000EB000008F400000000000DB0000000000000
+000000000002F7000000DE10000000000AE0000000000000
+000000000005F40000003FB00000000007F0000000000000
+000000000007F100000008F80000000006F2000000000000
+000000000008F000000000BF4000000005F2000000000000
+000000000008F0000000000DF400000005F3000000000000
+000000000007F20000039002EF30000006F2000000000000
+000000000002F90002AFD0001DF500000AF0000000000000
+000000000000AFB9CFF8000001DFA1002FA0000000000000
+00000000000008EED81000000009FFBBFF20000000000000
+000000000000000000000000000029EEB200000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ATOM(_alias) ENTITY(rectangle,black,atom,_alias,DEV ATOM)
+!define DEV_ATOM(_alias,_label) ENTITY(rectangle,black,atom,_label,_alias,DEV ATOM)
+!define DEV_ATOM(_alias,_label,_shape) ENTITY(_shape,black,atom,_label,_alias,DEV ATOM)
+!define DEV_ATOM(_alias,_label,_shape,_color) ENTITY(_shape,_color,atom,_label,_alias,DEV ATOM)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/aws.puml b/stdlib/devicons/aws.puml
new file mode 100644
index 000000000..f23580ece
--- /dev/null
+++ b/stdlib/devicons/aws.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $aws [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000014000000000330000000000
+000000000000000000000038CFFFB610059EFFE930000000
+000000000000000000000458DFFFC76265AFFFFA66000000
+0000000000000000000009FD85669EF5FFB6566BFF000000
+0000000000000000000009FFFF3FFFF5FFFF89FFFF000000
+0000000000000000000009FFFF3FFFF5FFFF89FFFF000000
+0000000000000000000009FFFF3FFFF5FFFF89FFFF000000
+0000000000000000000009FFFF3FFFF5FFFF89FFFF000000
+0000000000000000000009FFFF3FFFF5FFFF89FFFF000000
+00000000000000000000017DFF3FFB6049FF89FE94000000
+000000048DFC7200016AEEA5382710000005554000000000
+0000026CFFFFFB3139EFFFFE820000000000000000000000
+000009FA67A77CF5FD859979EE0000000000000000000000
+000009FFFD3FFFF5FFFF78FFFE0000000000000000000000
+000009FFFE3FFFF5FFFF89FFFE0000000000000000000000
+000009FFFE3FFFF5FFFF89FFFE0000000000000000000000
+000009FFFE3FFFF5FFFF89FFFE0000000000000000000000
+000009FFFE3FFFF5FFFF89FFFE0000000000000000000000
+000004CFFE3FFFA28EFF89FFD70000000000000000000000
+000000017C3B526A94497893000000000000000000000000
+000000000002BFFFFFE60000000000000000000000000000
+00000000003D848DC65AB000000000000000000000000000
+00000000003FFFB27EFFB000000000000000000000000000
+00000000003FFFF5DFFFB000000000000000000000000000
+00000000003FFFF5DFFFB000000000000000000000000000
+00000000003FFFF5DFFFB000000000000000000000000000
+00000000003FFFF5DFFFB000000000000000000000000000
+00000000002EFFF5DFFF8000000000000000000000000000
+00000000000028D5CB500000000000000000000000000000
+000000000000000010000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_AWS(_alias) ENTITY(rectangle,black,aws,_alias,DEV AWS)
+!define DEV_AWS(_alias,_label) ENTITY(rectangle,black,aws,_label,_alias,DEV AWS)
+!define DEV_AWS(_alias,_label,_shape) ENTITY(_shape,black,aws,_label,_alias,DEV AWS)
+!define DEV_AWS(_alias,_label,_shape,_color) ENTITY(_shape,_color,aws,_label,_alias,DEV AWS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/backbone.puml b/stdlib/devicons/backbone.puml
new file mode 100644
index 000000000..c602310a1
--- /dev/null
+++ b/stdlib/devicons/backbone.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $backbone [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000100000000000000000000000000001000000000
+0000000004E60000000000000000000000006E4000000000
+0000000004FFC3000000000000000000003CFF4000000000
+0000000004FFFFA200000000000000002AFFFF4000000000
+0000000004FFFFFF8000000000000008FFFFFF4000000000
+0000000004FFFFFFFE500000000006EFFFFFFF4000000000
+0000000004FFFFFFFFFC30000003CFFFFFFFFF4000000000
+0000000004FFFFFFFFFFFA1001AFFFFFFFFFFF4000000000
+0000000004FFFFCFFFFFFFF77FFFFFFFFCFFFF4000000000
+0000000004FFFF619FFFFFFFFFFFFFF916FFFF4000000000
+0000000004FFFF6002BFFFFFFFFFFB2006FFFF4000000000
+0000000004FFFF60001DFFFFFFFFD10006FFFF4000000000
+0000000004FFFF6008FFFFFFFFFFFF8006FFFF4000000000
+0000000004FFFF65EFFFFFFFFFFFFFFE56FFFF4000000000
+0000000004FFFFEFFFFFFFFAAFFFFFFFFEFFFF4000000000
+0000000004FFFFFFFFFFFC3003CFFFFFFFFFFF4000000000
+0000000004FFFFFFFFFD40000004DFFFFFFFFF4000000000
+0000000004FFFFFFFF600000000006FFFFFFFF4000000000
+0000000004FFFFFFF50000000000005FFFFFFF4000000000
+0000000004FFFFFFFFB2000000002BFFFFFFFF4000000000
+0000000004FFFFFFFFFF90000009FFFFFFFFFF4000000000
+0000000004FFFFFFFFFFFE6006EFFFFFFFFFFF4000000000
+0000000004FFFFDFFFFFFFFCCFFFFFFFFDFFFF4000000000
+0000000004FFFF62AFFFFFFFFFFFFFFA26FFFF4000000000
+0000000004FFFF6004DFFFFFFFFFFD4006FFFF4000000000
+0000000004FFFF60006FFFFFFFFFF60006FFFF4000000000
+0000000004FFFF604DFFFFFFFFFFFFD406FFFF4000000000
+0000000004FFFF8AFFFFFFFFFFFFFFFFA8FFFF4000000000
+0000000004FFFFFFFFFFFFD55DFFFFFFFFFFFF4000000000
+0000000004FFFFFFFFFFE600006EFFFFFFFFFF4000000000
+0000000004FFFFFFFFF8100000018FFFFFFFFF4000000000
+0000000004FFFFFFFB200000000002BFFFFFFF4000000000
+0000000004FFFFFD4000000000000004DFFFFF4000000000
+0000000004FFFE60000000000000000006EFFF4000000000
+0000000004FF910000000000000000000019FF4000000000
+0000000004B20000000000000000000000002B4000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BACKBONE(_alias) ENTITY(rectangle,black,backbone,_alias,DEV BACKBONE)
+!define DEV_BACKBONE(_alias,_label) ENTITY(rectangle,black,backbone,_label,_alias,DEV BACKBONE)
+!define DEV_BACKBONE(_alias,_label,_shape) ENTITY(_shape,black,backbone,_label,_alias,DEV BACKBONE)
+!define DEV_BACKBONE(_alias,_label,_shape,_color) ENTITY(_shape,_color,backbone,_label,_alias,DEV BACKBONE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/bing_small.puml b/stdlib/devicons/bing_small.puml
new file mode 100644
index 000000000..547ac0f5d
--- /dev/null
+++ b/stdlib/devicons/bing_small.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $bing_small [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000010000000000000000000000000000000000000
+00000000006FC83000000000000000000000000000000000
+00000000006FFFFD94000000000000000000000000000000
+00000000006FFFFFFF400000000000000000000000000000
+00000000006FFFFFFF400000000000000000000000000000
+00000000006FFFFFFF400000000000000000000000000000
+00000000006FFFFFFF400000000000000000000000000000
+00000000006FFFFFFF400000000000000000000000000000
+00000000006FFFFFFF400000000000000000000000000000
+00000000006FFFFFFF402500000000000000000000000000
+00000000006FFFFFFF400EFC830000000000000000000000
+00000000006FFFFFFF4007FFFFD940000000000000000000
+00000000006FFFFFFF4000FFFFFFFEA50000000000000000
+00000000006FFFFFFF40008FFFFFFFFFFB61000000000000
+00000000006FFFFFFF40001FFFFFFFFFFFFFC30000000000
+00000000006FFFFFFF400009FFFFFFFFFFFFF50000000000
+00000000006FFFFFFF400002FFFFFFFFFFFFF50000000000
+00000000006FFFFFFF40000006DFFFFFFFFFF50000000000
+00000000006FFFFFFF4000000004CFFFFFFFF50000000000
+00000000006FFFFFFF4000000003BFFFFFFFF50000000000
+00000000006FFFFFFF40000003BFFFFFFFFFF50000000000
+00000000006FFFFFFF4000019FFFFFFFFFFFF50000000000
+00000000006FFFFFFA00018FFFFFFFFFFFFFF50000000000
+00000000006FFFFF80019FFFFFFFFFFFFFFD300000000000
+00000000006FFFF6008FFFFFFFFFFFFFFF60000000000000
+00000000006FFF407EFFFFFFFFFFFFFF9100000000000000
+00000000006FE36EFFFFFFFFFFFFFFC30000000000000000
+00000000006D8DFFFFFFFFFFFFFFE5000000000000000000
+00000000005EFFFFFFFFFFFFFFFA10000000000000000000
+000000000005FFFFFFFFFFFFFC3000000000000000000000
+0000000000002CFFFFFFFFFE500000000000000000000000
+000000000000007FFFFFFF91000000000000000000000000
+0000000000000003DFFFC300000000000000000000000000
+000000000000000009E50000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BING_SMALL(_alias) ENTITY(rectangle,black,bing_small,_alias,DEV BING_SMALL)
+!define DEV_BING_SMALL(_alias,_label) ENTITY(rectangle,black,bing_small,_label,_alias,DEV BING_SMALL)
+!define DEV_BING_SMALL(_alias,_label,_shape) ENTITY(_shape,black,bing_small,_label,_alias,DEV BING_SMALL)
+!define DEV_BING_SMALL(_alias,_label,_shape,_color) ENTITY(_shape,_color,bing_small,_label,_alias,DEV BING_SMALL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/bintray.puml b/stdlib/devicons/bintray.puml
new file mode 100644
index 000000000..a3e0adb5f
--- /dev/null
+++ b/stdlib/devicons/bintray.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $bintray [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000001002AA511000000000000000000000000
+00000000000000FF706FFB9A000000000000000000000000
+00000000000001FF905FFA00000000000000000000000000
+00000000CEEB008932676375000000000000000000000000
+00000002FFFF00000DF702FF000000000000000000000000
+00000002FFFF19B90CF501B9000000000000000000000000
+00000001FFFF4FFF37002800BFE000000000000000000000
+0000000035533FFF37003C10EFF100000000000000000000
+0000000002CC1ACA17000000BFE000000000000000000000
+0000000225FF375335007FFC000000000000000000000000
+0000000DD2BB1C757400AFFF12F400000000000000000000
+0000000551442000D300AFFF006100000000000000000000
+000000000EFFF20092276BB8000000000000000000000000
+000000000FFFF300AC600000000000000000000000000000
+000000000FFFF300B1000000000000000000000000000000
+000000000CFFE600D1000000000000000000000000000000
+000000000000029AF1000000000000000000000000000000
+0000000003443201F0000000000000000000000000000000
+000000000BF97FB0F0000000000000000000000000000000
+0000000008F20CE0F0000000880000000000000000000000
+0000000008F59F41F1898B45FE587865AA60AA0880000000
+0000000008FB6DC2F2BF2BB0F90AF94438F2CC0890000000
+0000000008F205F8F38E09D0F904F10AD8F59E0950000000
+0000000009F31BF5F5AF0AE0FA07F10F96F64F7E10000000
+00000000079999509379278179579305B78604DA00000000
+0000000000000000000000000000000000006AE100000000
+000000000000000000000000000000000000251000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BINTRAY(_alias) ENTITY(rectangle,black,bintray,_alias,DEV BINTRAY)
+!define DEV_BINTRAY(_alias,_label) ENTITY(rectangle,black,bintray,_label,_alias,DEV BINTRAY)
+!define DEV_BINTRAY(_alias,_label,_shape) ENTITY(_shape,black,bintray,_label,_alias,DEV BINTRAY)
+!define DEV_BINTRAY(_alias,_label,_shape,_color) ENTITY(_shape,_color,bintray,_label,_alias,DEV BINTRAY)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/bitbucket.puml b/stdlib/devicons/bitbucket.puml
new file mode 100644
index 000000000..981f709f4
--- /dev/null
+++ b/stdlib/devicons/bitbucket.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $bitbucket [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000124555555421000000000000000000
+0000000000000169CFFFFFFFFFFFFFFC9610000000000000
+000000000017DFFFFFFFFFFFFFFFFFFFFFFD710000000000
+0000000009FFFFFFFDA8766556678ADFFFFFFF8000000000
+00000000CFFFFF94000000000000000049FFFFFC00000000
+00000008FFFFF6000000000000000000006FFFFF80000000
+0000000AFFFFFE72000000000000000016EFFFFFA0000000
+00000007FFFFFFFFDA854433334458ADFFFFFFFF70000000
+00000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50000000
+00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000000
+00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000
+00000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000
+00000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000
+000000008FFFFFFFFFFFFFFEEFFFFFFFFFFFFFF800000000
+000000006FFFFFFFFFFFF810018FFFFFFFFFFFF500000000
+000000003FFFFFFFFFFF40000004FFFFFFFFFFF300000000
+000000000FFFFFFFFFF7002884007FFFFFFFFFF000000000
+000000000DFFFFFFFFF002FFFF600FFFFFFFFFD000000000
+000000000BFFFFFFFFC009FFFFE00CFFFFFFFFA000000000
+0000000008FFFFFFFFB00AFFFFF00BFFFFFFFF8000000000
+0000000005FFFFFFFFE006FFFFB00EFFFFFFFF5000000000
+0000000002FFFFFFFFF4008FFB104FFFFFFFFF2000000000
+0000000000FFFFFFFFFD00000000DFFFFFFFFF0000000000
+0000000000BFFFFFFFFFC200002CFFFFFFFFFB0000000000
+00000000001DFFFFFFFFFFB99CFFFFFFFFFFD10000000000
+0000000000009FFFFFFFFFFFFFFFFFFFFFF9000000000000
+000000000000029EFFFFFFFFFFFFFFFFE920000000000000
+000000000008E50047BDFFFFFFFFDB74005E800000000000
+000000000006FFD500000223322000005DFF600000000000
+000000000003FFFFFA620000000026AFFFFF300000000000
+000000000000FFFFFFFFFDCBBCDFFFFFFFFF000000000000
+000000000000DFFFFFFFFFFFFFFFFFFFFFFD000000000000
+000000000000AFFFFFFFFFFFFFFFFFFFFFFA000000000000
+0000000000007FFFFFFFFFFFFFFFFFFFFFF7000000000000
+0000000000001FFFFFFFFFFFFFFFFFFFFFF1000000000000
+00000000000004FFFFFFFFFFFFFFFFFFFE40000000000000
+0000000000000019FFFFFFFFFFFFFFFF9100000000000000
+0000000000000000059DFFFFFFFFD9500000000000000000
+000000000000000000000133331000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BITBUCKET(_alias) ENTITY(rectangle,black,bitbucket,_alias,DEV BITBUCKET)
+!define DEV_BITBUCKET(_alias,_label) ENTITY(rectangle,black,bitbucket,_label,_alias,DEV BITBUCKET)
+!define DEV_BITBUCKET(_alias,_label,_shape) ENTITY(_shape,black,bitbucket,_label,_alias,DEV BITBUCKET)
+!define DEV_BITBUCKET(_alias,_label,_shape,_color) ENTITY(_shape,_color,bitbucket,_label,_alias,DEV BITBUCKET)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/blackberry.puml b/stdlib/devicons/blackberry.puml
new file mode 100644
index 000000000..4b4324872
--- /dev/null
+++ b/stdlib/devicons/blackberry.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $blackberry [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000288887500000078888520000000000000000000
+0000000006FFFFFFE30000FFFFFFF7000000000000000000
+0000000009FFFFFFFB0004FFFFFFFF100000000000000000
+000000000DFFFFFFFB0007FFFFFFFF100000000000000000
+000000000FFFFFFFF7000BFFFFFFFC000000000000000000
+000000004FFFFFFF80000EFFFFFFC1000444431000000000
+000000002555554100000555555200004FFFFFFC20000000
+000000000000000000000000000000007FFFFFFFB0000000
+00000000000000000000000000000000AFFFFFFFD0000000
+00000000ABBBB95000006BBBB9710000EFFFFFFFA0000000
+00000000FFFFFFFB0000BFFFFFFE2001FFFFFFFD10000000
+00000004FFFFFFFF2000EFFFFFFF70029999974000000000
+00000007FFFFFFFF1002FFFFFFFF60000000000000000000
+0000000BFFFFFFFB0005FFFFFFFF10000000000000000000
+0000000EFFFFFF900008FFFFFFC3000DEEEEC91000000000
+0000000222221000000122222000001FFFFFFFD000000000
+0000000000000000000000000000005FFFFFFFF200000000
+0000000000000000000000000000008FFFFFFFF000000000
+000000000000000000188887510000CFFFFFFF8000000000
+0000000000000000005FFFFFFE3000DDDDDDB50000000000
+0000000000000000009FFFFFFFB000000000000000000000
+000000000000000000CFFFFFFFC000000000000000000000
+000000000000000000FFFFFFFF7000000000000000000000
+000000000000000003FFFFFFF80000000000000000000000
+000000000000000001444443000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BLACKBERRY(_alias) ENTITY(rectangle,black,blackberry,_alias,DEV BLACKBERRY)
+!define DEV_BLACKBERRY(_alias,_label) ENTITY(rectangle,black,blackberry,_label,_alias,DEV BLACKBERRY)
+!define DEV_BLACKBERRY(_alias,_label,_shape) ENTITY(_shape,black,blackberry,_label,_alias,DEV BLACKBERRY)
+!define DEV_BLACKBERRY(_alias,_label,_shape,_color) ENTITY(_shape,_color,blackberry,_label,_alias,DEV BLACKBERRY)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/bootstrap.puml b/stdlib/devicons/bootstrap.puml
new file mode 100644
index 000000000..4fb41df86
--- /dev/null
+++ b/stdlib/devicons/bootstrap.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $bootstrap [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000004888888888888999999999999500000000000
+0000000005EFFFFFFFFFFFFFFFFFFFFFFFFFFE4000000000
+000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000000
+00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000000
+00000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000000
+0000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000
+0000000FFFFFFFFD99999AAAABBBDFFFFFFFFFFFE0000000
+0000000FFFFFFFF9000000000000018FFFFFFFFFE0000000
+0000000FFFFFFFF90000000000000004FFFFFFFFE0000000
+0000000FFFFFFFF900000000000000009FFFFFFFE0000000
+0000000FFFFFFFF900005AA9995000003FFFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFD00002FFFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFF30002FFFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFF20004FFFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFB0000AFFFFFFFE0000000
+0000000FFFFFFFF90000377765300007FFFFFFFFE0000000
+0000000FFFFFFFF9000000000000007FFFFFFFFFE0000000
+0000000FFFFFFFF90000000000000005EFFFFFFFE0000000
+0000000FFFFFFFF900002443332000002FFFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFD300009FFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFFD00003FFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFFF10001FFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFFF10000FFFFFFE0000000
+0000000FFFFFFFF900008FFFFFFFA00002FFFFFFE0000000
+0000000FFFFFFFF900006BBBBBB6000008FFFFFFE0000000
+0000000FFFFFFFF900000000000000001EFFFFFFE0000000
+0000000FFFFFFFF90000000000000001CFFFFFFFE0000000
+0000000FFFFFFFF9000000000000016EFFFFFFFFE0000000
+0000000FFFFFFFFD88888888888ACFFFFFFFFFFFE0000000
+0000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000000
+00000001EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE10000000
+000000003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFE300000000
+0000000002BFFFFFFFFFFFFFFFFFFFFFFFFFFB2000000000
+000000000002455555555555555555555554200000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BOOTSTRAP(_alias) ENTITY(rectangle,black,bootstrap,_alias,DEV BOOTSTRAP)
+!define DEV_BOOTSTRAP(_alias,_label) ENTITY(rectangle,black,bootstrap,_label,_alias,DEV BOOTSTRAP)
+!define DEV_BOOTSTRAP(_alias,_label,_shape) ENTITY(_shape,black,bootstrap,_label,_alias,DEV BOOTSTRAP)
+!define DEV_BOOTSTRAP(_alias,_label,_shape,_color) ENTITY(_shape,_color,bootstrap,_label,_alias,DEV BOOTSTRAP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/bower.puml b/stdlib/devicons/bower.puml
new file mode 100644
index 000000000..7b1e42731
--- /dev/null
+++ b/stdlib/devicons/bower.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $bower [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000002467510000000000000000000000000
+0000000000000019DFFFFFFB300000000001000000000000
+00000000000009FE9410016EF50000003AEFD00000000000
+000000000001CF8100000000BF300008D61D200000000000
+00000000002EE300000000001DC000AA2359000000000000
+0000000001DD10000000000005F307A080A4000000000000
+000000000AF200000005610009EEAE1810D1000000000000
+000000003F60000000751A002D004CC801E0000000000000
+00000000CE000000008FFD007700125D5790000000000000
+00000002F6000000001CD4008844C878FE10000000000000
+00000007F100000000000000597EDA7AD300000000000000
+0000000BD0000000000000001FF409840000000000000000
+0000000DA0000000000000000DFECA853000000000000000
+0000000F8000000000000000AE78ACEFFFD9620000000000
+0000000F700000000000002CE300000146ADFFD600000000
+0000000E80000000000049B600000243100005DF90000000
+0000000DA0000000000000000000000258ACB9BFE0000000
+0000000BD00000000000000000000000000025DFE0000000
+00000007F2000000000000000000000000028CFF80000000
+00000003F900000000000000000000000007FFC400000000
+00000000EF20000000000000000000004EEFFF3000000000
+000000008FB000000000000005747EBBFFCA930000000000
+000000001FF8000000000000099AB84AA700000000000000
+0000000008FF8000000000001FE000000000000000000000
+0000000000DFFC2000000000AFF700000000000000000000
+00000000003FFFFA4000002BFFFE00000000000000000000
+000000000005FFFFFECA9CFFFFFF10000000000000000000
+0000000000003EFFC3FFFFFFFFF800000000000000000000
+000000000000004400CFFFFFFFC000000000000000000000
+0000000000000000005FFFFE760000000000000000000000
+000000000000000000022251000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BOWER(_alias) ENTITY(rectangle,black,bower,_alias,DEV BOWER)
+!define DEV_BOWER(_alias,_label) ENTITY(rectangle,black,bower,_label,_alias,DEV BOWER)
+!define DEV_BOWER(_alias,_label,_shape) ENTITY(_shape,black,bower,_label,_alias,DEV BOWER)
+!define DEV_BOWER(_alias,_label,_shape,_color) ENTITY(_shape,_color,bower,_label,_alias,DEV BOWER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/brackets.puml b/stdlib/devicons/brackets.puml
new file mode 100644
index 000000000..18a081a41
--- /dev/null
+++ b/stdlib/devicons/brackets.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $brackets [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000001111111111111111111111111100000000000
+000000001BFFFFFFFFFFFFFFFFFFFFFFFFFFFFC300000000
+00000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10000000
+00000007FFFFFFEEEEEEEEEEEEEEEEEEEEFFFFFF90000000
+0000000CFFFC200000000000000000000001AFFFE0000000
+0000000FFFE10000000000000000000000000DFFF0000000
+0000000FFF8000000000000000000000000006FFF0000000
+0000000FFF5008CCCCCCCCB00BCCCCCCCC8005FFF0000000
+0000000FFF500AFFFFFFFFE00EFFFFFFFFA005FFF0000000
+0000000FFF500AFFFFFFFFE00EFFFFFFFFA005FFF0000000
+0000000FFF500AFFFFFFFFE00EFFFFFFFFA005FFF0000000
+0000000FFF500AFFFB666650056666BFFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFF80000000000008FFFA005FFF0000000
+0000000FFF500AFFFC999980089999CFFFA005FFF0000000
+0000000FFF500AFFFFFFFFE00EFFFFFFFFA005FFF0000000
+0000000FFF500AFFFFFFFFE00EFFFFFFFFA005FFF0000000
+0000000FFF500AFFFFFFFFE00EFFFFFFFFA005FFF0000000
+0000000FFF5006999999998008999999996005FFF0000000
+0000000FFF8000000000000000000000000008FFF0000000
+0000000FFFE10000000000000000000000001EFFF0000000
+0000000DFFFD322222222222222222222224DFFFD0000000
+00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000000
+00000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000
+0000000019DDDDDDDDDDDDDDDDDDDDDDDDDDDD9100000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BRACKETS(_alias) ENTITY(rectangle,black,brackets,_alias,DEV BRACKETS)
+!define DEV_BRACKETS(_alias,_label) ENTITY(rectangle,black,brackets,_label,_alias,DEV BRACKETS)
+!define DEV_BRACKETS(_alias,_label,_shape) ENTITY(_shape,black,brackets,_label,_alias,DEV BRACKETS)
+!define DEV_BRACKETS(_alias,_label,_shape,_color) ENTITY(_shape,_color,brackets,_label,_alias,DEV BRACKETS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/bugsense.puml b/stdlib/devicons/bugsense.puml
new file mode 100644
index 000000000..cade95161
--- /dev/null
+++ b/stdlib/devicons/bugsense.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $bugsense [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000007710000000000000000000000
+0000000000000000003C409FD00730000001100000000000
+000000000000000002FF02FF50AFF200004E200000000000
+000000000000000007FD09FF05FF802003FF000000000000
+000000000000000009FD0DFD0EFD05F50CF9000000000000
+000000000000000709FF0FFB4FF83FFE3FD0000000000000
+000000000000001F47FF5EFD8FF4DFFF6F92000000000000
+000000000000006FC3FFCBFFAFF7FFFF7FFF700000000000
+00000000000000CFF9CFFDFFEFFBFFFF7FF0C90000000000
+00000000000000FFFFCFFFFFFFFFFFFE8FFDFF6000000000
+00000000000002FFFFFFFFFFFFFFFFFCBFFFFFF100000000
+00000000000004AFFFFFFFFFFFFFFFF7ADC9CFF800000000
+0000000000000E5EFFFFFFFFFFFFFFF1000008FE00000000
+0000000000005FE5EFFFFFEFFFFFFF700000009F20000000
+000000000000DFFE2677700026ACB6000000000C50000000
+000000000008FFE31FFFE00005CAB9000000000110000000
+00000000008FF8001FFFF70006FFFF300000000000000000
+000000004CC7100008AAAA6001AAAAA30000000000000000
+000000024000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_BUGSENSE(_alias) ENTITY(rectangle,black,bugsense,_alias,DEV BUGSENSE)
+!define DEV_BUGSENSE(_alias,_label) ENTITY(rectangle,black,bugsense,_label,_alias,DEV BUGSENSE)
+!define DEV_BUGSENSE(_alias,_label,_shape) ENTITY(_shape,black,bugsense,_label,_alias,DEV BUGSENSE)
+!define DEV_BUGSENSE(_alias,_label,_shape,_color) ENTITY(_shape,_color,bugsense,_label,_alias,DEV BUGSENSE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/celluloid.puml b/stdlib/devicons/celluloid.puml
new file mode 100644
index 000000000..3e22bcb5d
--- /dev/null
+++ b/stdlib/devicons/celluloid.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $celluloid [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000003300000000000000000000000
+0000000000000000000007FFFE5000000000000000000000
+000000000000000000006F934AF600000000000000000000
+00000000000000000000E90000BE00000000000000000000
+00000000000000000004F400004F20000000000000000000
+000000000000000005CFF500005FFC400000000000000000
+00000000000000006FC78A0000B76BF50000000000000000
+0000000000000001F90001B67C10009F0000000000000000
+0000000000000006F000009FF900002F5000000000000000
+000000000000039EF000008FF900002FE930000000000000
+0000000000007FECD50000CBBC00007DBEF6000000000000
+000000000003F80008623A2002932770008F200000000000
+000000000008E00000EFF500006FFD00000F800000000000
+000000000009C00000DFF400003FFB00000D900000000000
+000000000008F00001FFF700008FFE00001F700000000000
+000000000002FA001A3009400571038001BE100000000000
+0000000000005FFDF30000CEEB00005FEFF4000000000000
+000000000000016DF000008FF800001FC610000000000000
+0000000000000005F10000AFFA00003F4000000000000000
+0000000000000000EA0003923A3000BD0000000000000000
+00000000000000004FEAA90000BA9EF30000000000000000
+0000000000000000039EF400005FE9200000000000000000
+00000000000000000003F400006F10000000000000000000
+00000000000000000000DB0000DC00000000000000000000
+000000000000000000004FC66CF300000000000000000000
+0000000000000000000003CFFB2000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CELLULOID(_alias) ENTITY(rectangle,black,celluloid,_alias,DEV CELLULOID)
+!define DEV_CELLULOID(_alias,_label) ENTITY(rectangle,black,celluloid,_label,_alias,DEV CELLULOID)
+!define DEV_CELLULOID(_alias,_label,_shape) ENTITY(_shape,black,celluloid,_label,_alias,DEV CELLULOID)
+!define DEV_CELLULOID(_alias,_label,_shape,_color) ENTITY(_shape,_color,celluloid,_label,_alias,DEV CELLULOID)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/chrome.puml b/stdlib/devicons/chrome.puml
new file mode 100644
index 000000000..b5c35ac1b
--- /dev/null
+++ b/stdlib/devicons/chrome.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $chrome [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000002577765200000000000000000000
+0000000000000000039EFFFFFFFFE9300000000000000000
+0000000000000003CFFFFFFFFFFFFFFC3000000000000000
+000000000000009FFFFFFFFFFFFFFFFFF900000000000000
+0000000000002DFFFFFFFFFFFFFFFFFFFFD1000000000000
+000000000002EFFFFFFFFFFFFFFFFFFFFFFD100000000000
+00000000001DFFFFFFFFFFFFFFFFFFFFFFFFD00000000000
+00000000000EFFFFFFFFFFFFFFFFFFFFFFFFFB0000000000
+000000000635FFFFFFFFFFFFFFFFFFFFFFFFFF6000000000
+000000000EC0CFFFFFFFFFFFDDDDDDDDDDDDDDC000000000
+000000007FF63FFFFFFFC500000000000000000000000000
+00000000DFFE19FFFFF705BDDA506EEEEEEEEEED00000000
+00000003FFFF81FFFF61CFFFFFFC16FFFFFFFFFF20000000
+00000007FFFFF27FFA0DFFFFFFFFD0AFFFFFFFFF70000000
+0000000BFFFFFB0DF19FFFFFFFFFF82FFFFFFFFFB0000000
+0000000DFFFFFF54B0FFFFFFFFFFFF0CFFFFFFFFD0000000
+0000000EFFFFFFD043FFFFFFFFFFFF39FFFFFFFFE0000000
+0000000FFFFFFFF704FFFFFFFFFFFF48FFFFFFFFF0000000
+0000000DFFFFFFFF13FFFFFFFFFFFF29FFFFFFFFE0000000
+0000000CFFFFFFFFA0EFFFFFFFFFFE0CFFFFFFFFD0000000
+0000000AFFFFFFFFF27FFFFFFFFFF73FFFFFFFFFA0000000
+00000006FFFFFFFFFB0CFFFFFFFFC0AFFFFFFFFF70000000
+00000002FFFFFFFFFF70AFFFFFF903FFFFFFFFFF20000000
+00000000DFFFFFFFFFF9038BB8300CFFFFFFFFFD00000000
+000000005FFFFFFFFFFFE83114816FFFFFFFFFF600000000
+000000000DFFFFFFFFFFFFFFFF91EFFFFFFFFFD000000000
+0000000004FFFFFFFFFFFFFFFF18FFFFFFFFFF4000000000
+00000000008FFFFFFFFFFFFFF62FFFFFFFFFF90000000000
+00000000000CFFFFFFFFFFFFD0BFFFFFFFFFC00000000000
+000000000000CFFFFFFFFFFF44FFFFFFFFFC100000000000
+0000000000000BFFFFFFFFFB0DFFFFFFFFB0000000000000
+000000000000006FFFFFFFF27FFFFFFFF700000000000000
+00000000000000029FFFFF81FFFFFFFA2000000000000000
+0000000000000000017BFE09FFFFC7100000000000000000
+000000000000000000000105552000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CHROME(_alias) ENTITY(rectangle,black,chrome,_alias,DEV CHROME)
+!define DEV_CHROME(_alias,_label) ENTITY(rectangle,black,chrome,_label,_alias,DEV CHROME)
+!define DEV_CHROME(_alias,_label,_shape) ENTITY(_shape,black,chrome,_label,_alias,DEV CHROME)
+!define DEV_CHROME(_alias,_label,_shape,_color) ENTITY(_shape,_color,chrome,_label,_alias,DEV CHROME)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/cisco.puml b/stdlib/devicons/cisco.puml
new file mode 100644
index 000000000..4ea4f4a94
--- /dev/null
+++ b/stdlib/devicons/cisco.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $cisco [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000006600000000000000006600000000000000
+00000000000000CD0000000000000000DC00000000000000
+00000000000000CD0000000000000000DC00000000000000
+00000000008100CD0018100000018100DC00181000000000
+0000000004F500CD004F50000004F500DC004F4000000000
+0000022004F500CD004F50022004F500DC005F5002200000
+00000CC004F500CD004F500CC004F500DC005F500CC00000
+00000CD004F500CD004F500CD004F500DC005F500DC00000
+0000099002E300CD002E20099002E200DC002E2009900000
+00000000000000CC0000000000000000DC00000000000000
+000000000000004400000000000000004400000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CISCO(_alias) ENTITY(rectangle,black,cisco,_alias,DEV CISCO)
+!define DEV_CISCO(_alias,_label) ENTITY(rectangle,black,cisco,_label,_alias,DEV CISCO)
+!define DEV_CISCO(_alias,_label,_shape) ENTITY(_shape,black,cisco,_label,_alias,DEV CISCO)
+!define DEV_CISCO(_alias,_label,_shape,_color) ENTITY(_shape,_color,cisco,_label,_alias,DEV CISCO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/clojure.puml b/stdlib/devicons/clojure.puml
new file mode 100644
index 000000000..aeaa4ad85
--- /dev/null
+++ b/stdlib/devicons/clojure.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $clojure [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000001366663100000000000000000000
+0000000000000000028DFFFFFFFFD8200000000000000000
+0000000000000002AFFE96433469EFFA2000000000000000
+000000000000007FFB300000000003AFF700000000000000
+0000000000000BFC3000000000000003CFB0000000000000
+000000000001DF80000000000000000009FC100000000000
+00000000000CF7000000000000000000006FC00000000000
+00000000009F747997200012210000000008F90000000000
+0000000004FFEFFFFFFB9EFFFFD920000000BF4000000000
+000000000DFFFFFFFFFFFD8669DFF80000001FD000000000
+000000005FFFD6100CFFFE100003CFB0000008F500000000
+00000000CFF900009F91BFA0000009F9000000FC00000000
+00000001FF900004FA000EF2000000AF4000009F10000000
+00000006FD00000DE10005F80000001FD000004F50000000
+00000009F500002F800000DD00000008F200001F90000000
+0000000BF000007F3000006F20000003F700000EB0000000
+0000000CD000009F0000004F70000000F900000DC0000000
+0000000DC00000AF000000CFC0000000FA00000CD0000000
+0000000CD000009F100004F7F1000001F900000DC0000000
+0000000BE000006F30000D91F7000004F600000FB0000000
+00000009F100002F90005F20CE000009F200004F80000000
+00000005F500000BF200DC007F60002FC00000CF50000000
+00000001FA000003FC04F7001FE100CF300009FF10000000
+00000000BF1000007FB9F4000AFC3CF70004CFFB00000000
+000000004F90000008FFF30001EFFFFAABEFFFF400000000
+000000000CF20000005EFEA88AEFFFFFFFFFFFC000000000
+0000000003FC000000007BFFFEB6269BBA85EF2000000000
+00000000007FA0000000000000000000000AF70000000000
+00000000000BF9000000000000000000009FB00000000000
+000000000000BFC100000000000000001BFB000000000000
+00000000000009FE6000000000000005EF90000000000000
+000000000000004EFD600000000016DFE400000000000000
+00000000000000008FFFC866669CFFE70000000000000000
+0000000000000000005AEFFFFFFEA5000000000000000000
+000000000000000000000124421000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CLOJURE(_alias) ENTITY(rectangle,black,clojure,_alias,DEV CLOJURE)
+!define DEV_CLOJURE(_alias,_label) ENTITY(rectangle,black,clojure,_label,_alias,DEV CLOJURE)
+!define DEV_CLOJURE(_alias,_label,_shape) ENTITY(_shape,black,clojure,_label,_alias,DEV CLOJURE)
+!define DEV_CLOJURE(_alias,_label,_shape,_color) ENTITY(_shape,_color,clojure,_label,_alias,DEV CLOJURE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/clojure_alt.puml b/stdlib/devicons/clojure_alt.puml
new file mode 100644
index 000000000..6e98cbf08
--- /dev/null
+++ b/stdlib/devicons/clojure_alt.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $clojure_alt [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000357653000000000000000000000
+0000000000000000005BFFFFFFFEA5000000000000000000
+00000000000000005EFFFFFFFFFFFFD50000000000000000
+000000000000001BFFFFFFFFFFFFFFFFB100000000000000
+00000000000002EFFFFFFFFFFFFFFFFFFD20000000000000
+0000000000001DCA9CFFFFFFFFFFFFFFFFE1000000000000
+00000000000041000006A510015AFFFFFFFC000000000000
+00000000000000000000003664002CFFFFFF800000000000
+00000000000005ADD50002FFFFF9109FFFFFF10000000000
+000000000002CFFFB02C307FFFFFE30BFFFFF90000000000
+00000000001EFFFE12FFF10EFFFFFE21EFFFFE0000000000
+0000000000CFFFF70CFFFB08FFFFFFC07FFFFF4000000000
+0000000004FFFFF13FFFFF22FFFFFFF41FFFFF8000000000
+000000000AFFFFC09FFFFF90DFFFFFF90CFFFFB000000000
+000000000DFFFFA0BFFFFFB09FFFFFFC0AFFFFC000000000
+000000000DFFFF90DFFFFF304FFFFFFD09FFFFD000000000
+000000000CFFFFA0BFFFFB080EFFFFFB0AFFFFC000000000
+000000000BFFFFD08FFFF36E08FFFFF80DFFFFA000000000
+0000000008FFFFF12FFFB0DF32FFFFF22FFFFF5000000000
+0000000003FFFFF80AFF32FF809FFFA08FFFFC0000000000
+0000000000EFFFFF11DD07FFE01EFD11FFFFD10000000000
+00000000008FFFFFC0150AFFF702A10CFFD7000000000000
+00000000001EFFFFFB100AFFFF2000133100000000000000
+000000000006FFFFFFE50013310000000000000000000000
+000000000000AFFFFFFFD842247DFC9889BA000000000000
+0000000000000CFFFFFFFFFFFFFFFFFFFFD1000000000000
+00000000000001BFFFFFFFFFFFFFFFFFFC10000000000000
+0000000000000009FFFFFFFFFFFFFFFF9000000000000000
+00000000000000003BFFFFFFFFFFFFC30000000000000000
+00000000000000000028CFFFFFFD93000000000000000000
+000000000000000000000024320000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CLOJURE_ALT(_alias) ENTITY(rectangle,black,clojure_alt,_alias,DEV CLOJURE_ALT)
+!define DEV_CLOJURE_ALT(_alias,_label) ENTITY(rectangle,black,clojure_alt,_label,_alias,DEV CLOJURE_ALT)
+!define DEV_CLOJURE_ALT(_alias,_label,_shape) ENTITY(_shape,black,clojure_alt,_label,_alias,DEV CLOJURE_ALT)
+!define DEV_CLOJURE_ALT(_alias,_label,_shape,_color) ENTITY(_shape,_color,clojure_alt,_label,_alias,DEV CLOJURE_ALT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/cloud9.puml b/stdlib/devicons/cloud9.puml
new file mode 100644
index 000000000..2c6fd2287
--- /dev/null
+++ b/stdlib/devicons/cloud9.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $cloud9 [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000025652000000000000000000000
+000000000000000000006EFFFFFC40000000000000000000
+0000000000000000001CFFFFFFFFF9000000000000000000
+000000000000000000DFFFFFFFFFFF900000000000000000
+000000000000000009FFF820006EFFF50000000000000000
+00000000000000001FFF40000002EFFD0000000000000000
+00000000000014538FF8000000005FFF3000000000000000
+00000000005CFFFFFFF20009B0000EFF9441000000000000
+000000000AFFFFFFFFF0000EF3000CFFFFFFE70000000000
+00000000AFFFFFFFFFF0000DF6000BFFFFFFFFD200000000
+00000005FFFFFFFFFFF20007F5000CFFFFFFFFFD00000000
+0000000CFFFFFFFFFFF7000020000EFFFFFFFFFF80000000
+0000001FFFFFFFFFFFFE100000003FFFFFFFFFFFE0000000
+0000003FFFFFFFFFFFFFD4000000AFFFFFFFFFFFF2000000
+0000003FFFFFFFFFFFFFFFFB0001FFFFFFFFFFFFF3000000
+0000001FFFFFFFFFFFFFFFF90009FFFFFFFFFFFFF2000000
+0000000DFFFFFFFFFFFFFFE1004FFFFFFFFFFFFFF0000000
+00000006FFFFFFFFFFFFFF3000DFFFFFFFFFFFFFA0000000
+00000000CFFFFFFFFFFFFF200AFFFFFFFFFFFFFF20000000
+000000001CFFFFFFFFFFFFE9CFFFFFFFFFFFFFE400000000
+00000000007FFFFFFFFFFFFFFFFFFFFFFFFFF81000000000
+0000000000016BFFFFFFFFFFFFFFFFFFFFD7100000000000
+000000000000000244444444444444443100000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CLOUD9(_alias) ENTITY(rectangle,black,cloud9,_alias,DEV CLOUD9)
+!define DEV_CLOUD9(_alias,_label) ENTITY(rectangle,black,cloud9,_label,_alias,DEV CLOUD9)
+!define DEV_CLOUD9(_alias,_label,_shape) ENTITY(_shape,black,cloud9,_label,_alias,DEV CLOUD9)
+!define DEV_CLOUD9(_alias,_label,_shape,_color) ENTITY(_shape,_color,cloud9,_label,_alias,DEV CLOUD9)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/coda.puml b/stdlib/devicons/coda.puml
new file mode 100644
index 000000000..201e9bc3c
--- /dev/null
+++ b/stdlib/devicons/coda.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $coda [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000300000000
+000000000000000000000000000000000000006F80000000
+00000000000000000000000000000000000006FF40000000
+0000000000000000000000000000000000005FF400000000
+000000000000000000000000002332000004FF4000000000
+000000000000000000000049DFFFFFFC503FE30000000000
+000000000000000000007DFFFFFFFFFFF7FE200000000000
+0000000000000000005EFFFFFFFFFFFFAEE2000000000000
+00000000000000001CFFFFFFFFFFFFFAED9D000000000000
+0000000000000003EFFFFFFFFFFFFFBEDAFF900000000000
+000000000000005FFFFFFFFFFFFFFBDCBFFFF10000000000
+00000000000004FFFFFFFFFFFFFFCDCBFFFFF70000000000
+0000000000002FFFFFFFFFFFFFFCDBCFFFFFFB0000000000
+000000000000DFFFFFFFFFFFFFCDBDFFFFFFFE0000000000
+000000000007FFFFFFFFFFFFFDCBDFFFFFFFFF0000000000
+00000000002FFFFFFFFFFFFFDCAEFFFFFFFFFF0000000000
+00000000009FFFFFFFFFFFFECAEFFFFFFFFFFF0000000000
+0000000001FFFFFFFFFFFFECAFFFFFFFFFFFFD0000000000
+0000000008FFFFFFFFFFFEBAFFFFFFFFFFFFFA0000000000
+000000000EFFFFFFFFFFFBAFFFFFFFFFFFFFF60000000000
+000000002FFFFFFFFFFFABFFFFFFFFFFFFFFF10000000000
+000000007FFFFFFFFFFABFFFFFFFFFFFFFFFB00000000000
+00000000BFFFFFFFFF9BFFFFFFFFFFFFFFFF400000000000
+00000000EFFFFFFFF9BFFFFFFFFFFFFFFFFB000000000000
+00000001FFFFFFFF9CFFFFFFFFFFFFFFFFF2000000000000
+00000004FFFFFFF9CFFFFFFFFFFFFFFFFF60000000000000
+00000007FFFFFF9CFFFFFFFFFFFFFFFFFA00000000000000
+00000008FFFFFADFFFFFFFFFFFFFFFFFB000000000000000
+0000000AFFFFCEFFFFFFFFFFFFFFFFF90000000000000000
+0000000CFFFDEFFFFFFFFFFFFFFFFF700000000000000000
+0000000DFFFFFFFFFFFFFFFFFFFFC2000000000000000000
+0000000FFFFFFFFFFFFFFFFFFFC400000000000000000000
+0000000FFFFFFFFFFFFFFFFE930000000000000000000000
+0000000CFFFFFFFFFFECA620000000000000000000000000
+000000015544432110000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CODA(_alias) ENTITY(rectangle,black,coda,_alias,DEV CODA)
+!define DEV_CODA(_alias,_label) ENTITY(rectangle,black,coda,_label,_alias,DEV CODA)
+!define DEV_CODA(_alias,_label,_shape) ENTITY(_shape,black,coda,_label,_alias,DEV CODA)
+!define DEV_CODA(_alias,_label,_shape,_color) ENTITY(_shape,_color,coda,_label,_alias,DEV CODA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/code.puml b/stdlib/devicons/code.puml
new file mode 100644
index 000000000..37aa2bee6
--- /dev/null
+++ b/stdlib/devicons/code.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $code [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000010000000144400010000000000000000
+0000000000000003F20000006FFC002F2000000000000000
+000000000000001EFC000000BFF700CFE100000000000000
+00000000000000BFFF200000FFF202FFFB00000000000000
+00000000000009FFF6000004FFD0006FFF90000000000000
+0000000000006FFF90000009FF900009FFF6000000000000
+000000000004FFFC0000000EFF400000CFFF400000000000
+00000000002EFFE10000002FFF0000001EFFE20000000000
+0000000000DFFF300000007FFB00000003FFFD0000000000
+0000000006FFFA00000000CFF600000000AFFF6000000000
+0000000000BFFF50000001FFF100000005FFFB0000000000
+00000000000DFFF3000005FFD00000003FFFD00000000000
+000000000002EFFE10000AFF80000001EFFE200000000000
+0000000000004FFFC0000EFF3000000CFFF4000000000000
+00000000000007FFF9003FFF0000009FFF60000000000000
+00000000000000AFFF208FFA000002FFFA00000000000000
+000000000000000CFA00CFF5000000AFC000000000000000
+0000000000000001D101FFF10000001D1000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CODE(_alias) ENTITY(rectangle,black,code,_alias,DEV CODE)
+!define DEV_CODE(_alias,_label) ENTITY(rectangle,black,code,_label,_alias,DEV CODE)
+!define DEV_CODE(_alias,_label,_shape) ENTITY(_shape,black,code,_label,_alias,DEV CODE)
+!define DEV_CODE(_alias,_label,_shape,_color) ENTITY(_shape,_color,code,_label,_alias,DEV CODE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/code_badge.puml b/stdlib/devicons/code_badge.puml
new file mode 100644
index 000000000..cf02b062b
--- /dev/null
+++ b/stdlib/devicons/code_badge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $code_badge [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000066666666666666666666666664000000000000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFF600000000000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFF60000000000000
+0000000FFE77777777777777777778FFFFF5000000000000
+0000000FFD000000000000000000005FFFFF600000000000
+0000000FFD0000000000000000000005FFFFF60000000000
+0000000FFD00000000000000000000005FFFFF6000000000
+0000000FFD000000000000000000000005FFFFF600000000
+0000000FFD0000000000000000000000005FFFFF60000000
+0000000FFD00000000000000000000000005FFFFF0000000
+0000000FFD000000000000000000000000005FFFF0000000
+0000000FFD0000000000000000000000000005FFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000002200000000000DFF0000000
+0000000FFD00000004D000009FD00D40000000DFF0000000
+0000000FFD0000001EF70000DF807FE1000000DFF0000000
+0000000FFD000000DFF30002FF303FFD000000DFF0000000
+0000000FFD00000BFF500007FE0005FFB00000DFF0000000
+0000000FFD00008FF800000CFA00008FF80000DFF0000000
+0000000FFD0005FFB000001FF500000BFF5000DFF0000000
+0000000FFD000DFF3000005FF1000003FFD000DFF0000000
+0000000FFD0003FFD10000AFC000001DFF3000DFF0000000
+0000000FFD00005FFB0000EF700000BFF50000DFF0000000
+0000000FFD000008FF8003FF200008FF800000DFF0000000
+0000000FFD000000BFF508FE00005FFB000000DFF0000000
+0000000FFD0000000DF50CF900005FD0000000DFF0000000
+0000000FFD00000002B01DD400000B20000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFD0000000000000000000000000000DFF0000000
+0000000FFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+000000033333333333333333333333333333333330000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CODE_BADGE(_alias) ENTITY(rectangle,black,code_badge,_alias,DEV CODE_BADGE)
+!define DEV_CODE_BADGE(_alias,_label) ENTITY(rectangle,black,code_badge,_label,_alias,DEV CODE_BADGE)
+!define DEV_CODE_BADGE(_alias,_label,_shape) ENTITY(_shape,black,code_badge,_label,_alias,DEV CODE_BADGE)
+!define DEV_CODE_BADGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,code_badge,_label,_alias,DEV CODE_BADGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/codeigniter.puml b/stdlib/devicons/codeigniter.puml
new file mode 100644
index 000000000..0913733a4
--- /dev/null
+++ b/stdlib/devicons/codeigniter.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $codeigniter [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000004000000000000000000000000
+000000000000000000000008700000000000000000000000
+000000000000000000000007F60000000000000000000000
+000000000000000000000009FF2000000000000000000000
+00000000000000000000000DFFC000000000000000000000
+00000000000000000000005FFFF400000000000000000000
+0000000000000000000000DFFFFA00000000000000000000
+0000000000000000000008FFFFFE00000000000000000000
+000000000000000000004FFFFFFF10000000000000000000
+00000000000000000005FFFFFFFF20000000000000000000
+0000000000000000004FFFFFFFFF10000000000000000000
+000000000000000004FFFFFFFFFE00000000000000000000
+00000000000000006FFFFFFFFFFA00000000000000000000
+0000000000000009FFFFFFFFFFF600000000000000000000
+000000000000009FFFFFFFFFFFF100000000000000000000
+00000000000009FFFFFFFFFFFFE000000000000000000000
+0000000000009FFFFFFFFFFFFFC000000000000000000000
+000000000008FFFFFFFFFFFFFFD000000200000000000000
+00000000006FFFFFFFFFFFFFFFF1000008B2000000000000
+0000000003FFFFFFFFFFFFFFFFF900000DFF700000000000
+000000001EFFFFFFFFFFBFFFFFFFA314CFFFFB0000000000
+00000000BFFFFFFFFFFB2FFFFFFFFFFFFFFFFFC000000000
+00000006FFFFFFFFFFF20CFFFFFFFFFFFFFFFFFB00000000
+0000000EFFFFFFFFFFC002EFFFFFFFFFFFFFFFFF80000000
+0000007FFFFFFFFFFFA0002DFFFFFFFFFFFFFFFFF3000000
+000000EFFFFFFFFFFFB00001AFFFFFFFFFFFFFFFFC000000
+000004FFFFFFFFFFFFE0000004DFFFFFFFFFFFFFFF400000
+000009FFFFFFFFFFFFF700000008FFFFFFFFFFFFFFA00000
+00000EFFFFFFFFFFFFFF200000003DFFFFFFFFFFFFE00000
+00001FFFFFFFFFFFFFFFD1000000009FFFFFFFFFFFF20000
+00003FFFFFFFFFFFFFFFFB0000000005FFFFFFFFFFF30000
+00005FFFFFFFFFFDBFFFFF40000000005FFFFFFFFFF50000
+00005FFFFFFFFFC1BFFFFF800000000007FFFFFFFFF40000
+00004FFFFFFFFE109FFFFF700000000000CFFFFFFFF20000
+00002FFFFFFFF3002EFFFE1000000000003FFFFFFFF00000
+00000FFFFFFF9000029B910000000000000CFFFFFFA00000
+00000BFFFFFF300000000000000000000008FFFFFF400000
+000005FFFFFE000000000000000000000006FFFFFD000000
+000000EFFFFC000000000000000000000005FFFFF3000000
+0000006FFFFB000000000000000000000007FFFF90000000
+0000000BFFFD00000000000000000000000BFFFB00000000
+00000001DFFF20000000000000000000001FFFC000000000
+000000001DFF9000000000000000000000AFF90000000000
+0000000001AFF300000000000000000006FE500000000000
+000000000005DE2000000000000000007F80000000000000
+00000000000006B400000000000000297100000000000000
+000000000000000220000000000002300000000000000000
+}
+
+
+!define DEV_CODEIGNITER(_alias) ENTITY(rectangle,black,codeigniter,_alias,DEV CODEIGNITER)
+!define DEV_CODEIGNITER(_alias,_label) ENTITY(rectangle,black,codeigniter,_label,_alias,DEV CODEIGNITER)
+!define DEV_CODEIGNITER(_alias,_label,_shape) ENTITY(_shape,black,codeigniter,_label,_alias,DEV CODEIGNITER)
+!define DEV_CODEIGNITER(_alias,_label,_shape,_color) ENTITY(_shape,_color,codeigniter,_label,_alias,DEV CODEIGNITER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/codepen.puml b/stdlib/devicons/codepen.puml
new file mode 100644
index 000000000..514a33dc3
--- /dev/null
+++ b/stdlib/devicons/codepen.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $codepen [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000004400000000000000000000000
+0000000000000000000003DFFC2000000000000000000000
+000000000000000000008FFFFFF700000000000000000000
+0000000000000000002CFFFFFFFFC2000000000000000000
+000000000000000006FFFFEFFEFFFF600000000000000000
+0000000000000002CFFFE57FF75EFFFC2000000000000000
+000000000000007FFFFB107FF701BFFFF700000000000000
+0000000000002CFFFE50007FF70005EFFFC2000000000000
+000000000007FFFFB100007FF700001BFFFF700000000000
+0000000002CFFFE50000007FF70000005EFFFC2000000000
+000000007FFFFB100000007FF700000001BFFFF700000000
+00000009FFFF60000000009FF90000000006FFFF90000000
+0000000EFFF9000000002CFFFFC2000000009FFFE0000000
+0000000EFFFFC2000007FFFFFFFF7000002CFFFFE0000000
+0000000EFFFFFF8003DFFFE44EFFFD3008FFFFFFE0000000
+0000000EFF5EFFFC8FFFFA1001AFFFF8CFFFE5FFE0000000
+0000000EFF019FFFFFFE40000004EFFFFFF910FFE0000000
+0000000EFF000BFFFFF4000000004FFFFFB000FFE0000000
+0000000EFF03DFFFFFFF80000008FFFFFFFD30FFE0000000
+0000000EFF8FFFFA6EFFFC2002CFFFE6AFFFF8FFE0000000
+0000000EFFFFFE5001AFFFF88FFFFA1005EFFFFFE0000000
+0000000EFFFF91000004EFFFFFFE40000019FFFFE0000000
+0000000EFFF8000000001AFFFFA1000000008FFFE0000000
+00000007FFFF80000000008FF80000000008FFFF70000000
+000000003DFFFE400000007FF700000004EFFFD300000000
+00000000008FFFF90000007FF70000009FFFF80000000000
+000000000003DFFFE400007FF700004EFFFD300000000000
+00000000000008FFFF90007FF70009FFFF80000000000000
+000000000000003DFFFD407FF704DFFFD300000000000000
+00000000000000008FFFF97FF89FFFF80000000000000000
+000000000000000004EFFFFFFFFFFE400000000000000000
+00000000000000000008FFFFFFFF80000000000000000000
+000000000000000000004EFFFFD300000000000000000000
+00000000000000000000009FF80000000000000000000000
+000000000000000000000002200000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CODEPEN(_alias) ENTITY(rectangle,black,codepen,_alias,DEV CODEPEN)
+!define DEV_CODEPEN(_alias,_label) ENTITY(rectangle,black,codepen,_label,_alias,DEV CODEPEN)
+!define DEV_CODEPEN(_alias,_label,_shape) ENTITY(_shape,black,codepen,_label,_alias,DEV CODEPEN)
+!define DEV_CODEPEN(_alias,_label,_shape,_color) ENTITY(_shape,_color,codepen,_label,_alias,DEV CODEPEN)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/codrops.puml b/stdlib/devicons/codrops.puml
new file mode 100644
index 000000000..4c3433d76
--- /dev/null
+++ b/stdlib/devicons/codrops.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $codrops [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000003556654200000000000000000000
+000000000000000003AEFFFFFFFFEA300000000000000000
+0000000000000003CFFFFFFFFFFFFFFC3000000000000000
+000000000000009FFFFFFFFFFFFFFFFFFA10000000000000
+0000000000001CFFFFFFFFFFFFFFFFFFFFD2000000000000
+000000000002EFFFFFFFFFFFFFFFFFFFFFFE200000000000
+00000000001EFFFFFFFFFFFFFFFFFFFFFFFFE10000000000
+0000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000
+000000001FFFFFFFFFFFFFFD9FFFFFFFFFFFFFE100000000
+000000008FFFFFFFFFFFFFF30DFFFFFFFFFFFFF700000000
+00000000EFFFFFFFFFFFFF9004FFFFFFFFFFFFFE00000000
+00000003FFFFFFFFFFFF8F1000BFFFFFFFFFFFFF30000000
+00000007FFFFFFFFFFF80B50002FFFFFFFFFFFFF70000000
+0000000BFFFFFFFFFFF103C0000AFFFFFFFFFFFFB0000000
+0000000DFFFFFFFFFF8000C30002FFFFFFFFFFFFC0000000
+0000000EFFFFFFFFFF1000590000AFFFFFFFFFFFE0000000
+0000000FFFFFFFFFF900000E00003FFFFFFFFFFFE0000000
+0000000EFFFFFFFFF500000D10000EFFFFFFFFFFD0000000
+0000000DFFFFFFFFF600000E10000BFFFFFFFFFFC0000000
+0000000AFFFFFFFFFD00004B00000AFFFFFFFFFFA0000000
+00000007FFFFFFFFFFD436D200000CFFFFFFFFFF60000000
+00000003FFFFFFFFFFFEB91000002FFFFFFFFFFF20000000
+00000000DFFFFFFFFFFF20000000CFFFFFFFFFFD00000000
+000000007FFFFFFFFFFFE500001CFFFFFFFFFFF600000000
+000000000EFFFFFFFFFFFFEA9BFFFFFFFFFFFFE000000000
+0000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000
+0000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000000
+00000000000DFFFFFFFFFFFFFFFFFFFFFFFFC00000000000
+000000000001DFFFFFFFFFFFFFFFFFFFFFFD100000000000
+0000000000000BFFFFFFFFFFFFFFFFFFFFB0000000000000
+000000000000007FFFFFFFFFFFFFFFFFF800000000000000
+0000000000000002BFFFFFFFFFFFFFFB2000000000000000
+0000000000000000028DFFFFFFFFD8200000000000000000
+000000000000000000001334433100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CODROPS(_alias) ENTITY(rectangle,black,codrops,_alias,DEV CODROPS)
+!define DEV_CODROPS(_alias,_label) ENTITY(rectangle,black,codrops,_label,_alias,DEV CODROPS)
+!define DEV_CODROPS(_alias,_label,_shape) ENTITY(_shape,black,codrops,_label,_alias,DEV CODROPS)
+!define DEV_CODROPS(_alias,_label,_shape,_color) ENTITY(_shape,_color,codrops,_label,_alias,DEV CODROPS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/coffeescript.puml b/stdlib/devicons/coffeescript.puml
new file mode 100644
index 000000000..dd741a7e8
--- /dev/null
+++ b/stdlib/devicons/coffeescript.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $coffeescript [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000000022000017BEEDA610000000000000000
+0000000000000005D985029FFFEA8AFE3000000000000000
+000000000800000AA1039FFF9320006FA000000100000000
+00000000DF100001BFFFFC6007FA78DF4000006E00000000
+00000000EFC300000023100000489861000007FF00000000
+000000002BFFD8520000000000000000137BFFD400000000
+000000000028CFFFFFDDCBBAAABBCCDFFFFE940000000000
+000000000A3001479ACDEEEEEEEEDCA86310000360000000
+000000000DFC73000000000000000000000028DFC0000000
+0000000008FFFFFCA86654333333335679CFFFFF70000000
+0000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000
+0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000
+0000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000
+000000002FEFFFFFFFFFFFFFFFFFFFFFFFFFFFF100000000
+00000000DF3BFFFFFFFFFFFFFFFFFFFFFFFFFF9000000000
+00000006FC03FFFFFFFFFFFFFFFFFFFFFFFFFF1000000000
+0000000BF9009FFFFFFFFFFFFFFFFFFFFFFFF70000000000
+0000000DFA000EFFFFFFFFFFFFFFFFFFFFFFD00000000000
+0000000CFD0004FFFFFFFFFFFFFFFFFFFFFF300000000000
+00000008FF6000AFFFFFFFFFFFFFFFFFFFF9000000000000
+00000001FFF4001FFFFFFFFFFFFFFFFFFFE1000000000000
+000000005FFF6007FFFFFFFFFFFFFFFFFF60000000000000
+0000000003BFFC10EFFFFFFFFFFFFFFFFE00000000000000
+00000000000000008FFFFFFFFFFFFFFFF700000000000000
+00000000000000000BFFFFFFFFFFFFFFB000000000000000
+0000000000000000006DFFFFFFFFFFE70000000000000000
+00000000000000000000379BBBBA73000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_COFFEESCRIPT(_alias) ENTITY(rectangle,black,coffeescript,_alias,DEV COFFEESCRIPT)
+!define DEV_COFFEESCRIPT(_alias,_label) ENTITY(rectangle,black,coffeescript,_label,_alias,DEV COFFEESCRIPT)
+!define DEV_COFFEESCRIPT(_alias,_label,_shape) ENTITY(_shape,black,coffeescript,_label,_alias,DEV COFFEESCRIPT)
+!define DEV_COFFEESCRIPT(_alias,_label,_shape,_color) ENTITY(_shape,_color,coffeescript,_label,_alias,DEV COFFEESCRIPT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/common.puml b/stdlib/devicons/common.puml
new file mode 100644
index 000000000..d29c45f8b
--- /dev/null
+++ b/stdlib/devicons/common.puml
@@ -0,0 +1,21 @@
+@startuml
+' Creates an aliased entity with a colorized sprite and stereotype
+' Params:
+' e_type: the entity type (e.g. component, node, agent, etc.)
+' e_color: the color for the sprite
+' e_sprite: the sprite for the AWS Icon representing the entity
+' e_alias: the alias to give the entity
+' e_stereo: the stereotype, which can define additional styling
+!define ENTITY(e_type,e_color,e_sprite,e_alias,e_stereo) e_type "<$e_sprite>" as e_alias <>
+
+' Creates an aliased entity with a colorized sprite, label, and stereotype
+' Params:
+' e_type: the entity type (e.g. component, node, agent, etc.)
+' e_color: the color for the sprite
+' e_sprite: the sprite for the AWS Icon representing the entity
+' e_label: the label to display under the sprite
+' e_alias: the alias to give the entity
+' e_stereo: the stereotype, which can define additional styling
+!define ENTITY(e_type,e_color,e_sprite,e_label,e_alias,e_stereo) e_type "<$e_sprite>\r e_label" as e_alias <>
+
+hide stereotype
diff --git a/stdlib/devicons/compass.puml b/stdlib/devicons/compass.puml
new file mode 100644
index 000000000..346309f97
--- /dev/null
+++ b/stdlib/devicons/compass.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $compass [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000235689000000
+00000000000000000000000000000479BDEFFFFFFF100000
+00000000000000000000000026ADFFFFFFFFFFFFFF000000
+0000000000000000000016AEFFFFFFFFFFFFFFFFFE000000
+0000000000000000017CFFFFFFFFFFFFFFFFFFFFFC000000
+0000000000000004AFFFFFFFFFFFFFFFFFFFFFFFFB000000
+00000000000004CFFFFFFFFFFFFFFFFFFFFFFFFFF9000000
+0000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000
+00000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000
+0000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2000000
+000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+000000007FFFFFFFFFFFF9DFFFFFFFFFFFFFFFFFD0000000
+00000001FFFFFFFFFFFFF6BFFFFFFFFFFFFFFFFFA0000000
+00000009FFFFFFFFFFFFF49FFFFFFFFFFFFFFFFF70000000
+0000001FFFFFFFFE9FFFF37FFFF9FFFFFFFFFFFF40000000
+0000006FFFFFFFFF66FFF26FFE2BFFFFFFFFFFFF10000000
+000000AFFFFFFFFFF33EF14FC17FFFFFFFFFFFFD00000000
+000000EFFFFFFFFFFE11C03A04FFFFFFFFFFFFFA00000000
+000000FFFFFFFFFFFFC000003FFFFFFFFFFFFFF600000000
+000001FFFFFFFFECBA9400008ABCDEFFFFFFFFF100000000
+000001FFFFFFC310000000000000015EFFFFFFD000000000
+000001FFFFFFFFFFDCB500007BCEFFFFFFFFFF8000000000
+000000FFFFFFFFFFFFB010101EFFFFFFFFFFFF3000000000
+000000DFFFFFFFFFFD04E03C13FFFFFFFFFFFE0000000000
+000000AFFFFFFFFFE26FF15FE25FFFFFFFFFF80000000000
+0000006FFFFFFFFF49FFF26FFF58FFFFFFFFF20000000000
+0000000FFFFFFFFECFFFF38FFFFAFFFFFFFFC00000000000
+00000009FFFFFFFFFFFFF4AFFFFFFFFFFFFF500000000000
+00000001FFFFFFFFFFFFF7CFFFFFFFFFFFFC000000000000
+000000006FFFFFFFFFFFFAEFFFFFFFFFFFF3000000000000
+0000000009FFFFFFFFFFFFFFFFFFFFFFFF60000000000000
+0000000000BFFFFFFFFFFFFFFFFFFFFFF900000000000000
+00000000000AFFFFFFFFFFFFFFFFFFFF9000000000000000
+0000000000005FFFFFFFFFFFFFFFFFE50000000000000000
+00000000000002AFFFFFFFFFFFFFF9100000000000000000
+00000000000000028DFFFFFFFFD710000000000000000000
+000000000000000000146775310000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_COMPASS(_alias) ENTITY(rectangle,black,compass,_alias,DEV COMPASS)
+!define DEV_COMPASS(_alias,_label) ENTITY(rectangle,black,compass,_label,_alias,DEV COMPASS)
+!define DEV_COMPASS(_alias,_label,_shape) ENTITY(_shape,black,compass,_label,_alias,DEV COMPASS)
+!define DEV_COMPASS(_alias,_label,_shape,_color) ENTITY(_shape,_color,compass,_label,_alias,DEV COMPASS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/composer.puml b/stdlib/devicons/composer.puml
new file mode 100644
index 000000000..d67534573
--- /dev/null
+++ b/stdlib/devicons/composer.puml
@@ -0,0 +1,68 @@
+@startuml
+sprite $composer [48x57/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000361000050000000000000
+000000000000000000000000001C56820267000000000000
+000000000000000000000000003723066061500000000000
+000000000000000040000000000830402860600000000000
+0000000000000243800001830286820210B5160000000000
+00008200059762050000791002829B100034060000000000
+0000770036170180004B4000003705B10000025000000000
+00006160800250701AD10000000170150000006000000000
+0000426A20203149D7570000000017000000006000000000
+00000608004506A700710000000159A61000006000000000
+000006000001D81005300000008632200000006000000000
+000005100059200025000000002440000000006100000000
+000001603940000080000000000027500000007200000000
+000000AA8000000630000000000000284000003600000000
+000000F60000002900000000000000004B50000900000000
+00000029000002C200000000000000000093000630480000
+0000000900002A10000000000000000000090006ED9B0000
+00000008000070000000000000000000000A699620070000
+0000063800006000000002210000000018DA500000070000
+00003647541630000004A8436A3000000C00000000470000
+000053000049A72001840000006700000640000344A00000
+00006200000002B0290000000006C78700B1365100170000
+0000741000000071A000000000009002A23D600000070000
+000016D66566455B10056766420070001B18100000070000
+000002800001AA84065000000000823454AA0000007B0000
+000001A000004892810000000000900006E9400000090000
+000000B000001F670000000000017000004F200000090000
+000000B000000E800000000270050000006F000000440000
+000000B000000A00000026A8001E0020000C200000800000
+000000B1000071036ACFC71002DB60054004600001700000
+000000B1000077EFE95100015CB027102655A00007200000
+000000A10005FF9200344432260001A955557C4009000000
+000000A100095C295310000010000006EFFF423028000000
+0000009000034C90002889883500000004CBE20065000000
+0000008000001F7000153489009B85000026570092000000
+0000008000000CD00001630140045720001E1000A0000000
+0000003A50000325000000016000000007FF0000A0000000
+0000000091000000820000038510000034D7000460000000
+00000000182000004D1000035434000640A4000910000000
+00000000006600004D520053451000030050000B00000000
+000000000003910032012005753000040000000C51000000
+000000000000193000009207000000660000018B90000000
+00000000000000B000008401000005980001660452000000
+0000000004443181000150420025C7062575039E50000000
+00000000028458CA3004104CFFFDA616C306CFE841000000
+000000000001000048AB0007CA7A943737ED830000000000
+000000000158ABCDDBCF05E60000BBBEE930000000000000
+000000000000000001479EFFB31B64B70000000000000000
+000000000000000000000015FFF796000000000000000000
+000000000000000000000005FFC810000000000000000000
+00000000000000000000000BFD4000000000000000000000
+00000000000000000000000F800000000000000000000000
+000000000000000000000012000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_COMPOSER(_alias) ENTITY(rectangle,black,composer,_alias,DEV COMPOSER)
+!define DEV_COMPOSER(_alias,_label) ENTITY(rectangle,black,composer,_label,_alias,DEV COMPOSER)
+!define DEV_COMPOSER(_alias,_label,_shape) ENTITY(_shape,black,composer,_label,_alias,DEV COMPOSER)
+!define DEV_COMPOSER(_alias,_label,_shape,_color) ENTITY(_shape,_color,composer,_label,_alias,DEV COMPOSER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/creativecommons.puml b/stdlib/devicons/creativecommons.puml
new file mode 100644
index 000000000..9ada2dc9c
--- /dev/null
+++ b/stdlib/devicons/creativecommons.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $creativecommons [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000004799997400000000000000000000
+000000000000000006BFFFFFFFFFFB600000000000000000
+0000000000000005EFFFFFFFFFFFFFFE5000000000000000
+00000000000001CFFFFFEA988ABFFFFFFB10000000000000
+0000000000002EFFFF930000000039FFFFE3000000000000
+000000000002EFFFA20000000000002AFFFF400000000000
+00000000001EFFF600000000000000006FFFF20000000000
+0000000000CFFF40000000000000000003FFFD0000000000
+0000000007FFF5000000000000000000004FFF9000000000
+000000001FFF900000000000000000000008FFF200000000
+000000008FFF100000000000000000000000EFF900000000
+00000000EFF70000000000000000000000005FFF00000000
+00000004FFF0000018CCB6000029CCA500000FFF50000000
+00000008FFB00003EFFFFFC105FFFFFFB0000AFF90000000
+0000000CFF60000EFFC7BFF82FFFA8CFF50006FFC0000000
+0000000EFF40006FFC0008408FFA0008200004FFE0000000
+0000000FFF20009FF7000000CFF40000000002FFF0000000
+0000000FFF1000AFF6000000DFF30000000001FFF0000000
+0000000FFF20009FF8000000CFF50000000002FFF0000000
+0000000EFF40005FFE1008A28FFC000B910004FFE0000000
+0000000BFF70000DFFD9BFF81FFFC9CFF50006FFB0000000
+00000008FFC00002DFFFFF9004EFFFFF70000BFF80000000
+00000004FFF1000006AA82000017AA7100000FFF40000000
+00000000EFF90000000000000000000000007FFE00000000
+000000007FFF200000000000000000000001FFF800000000
+000000000EFFC0000000000000000000000AFFF100000000
+0000000006FFF9000000000000000000007FFF7000000000
+0000000000AFFF80000000000000000007FFFC0000000000
+00000000000DFFFB1000000000000000AFFFD10000000000
+000000000001DFFFE60000000000005DFFFD200000000000
+0000000000001BFFFFD7300000037CFFFFC1000000000000
+000000000000007FFFFFFFDBBDFFFFFFF800000000000000
+0000000000000002AFFFFFFFFFFFFFFA2000000000000000
+0000000000000000028DFFFFFFFFD8200000000000000000
+000000000000000000001467764100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CREATIVECOMMONS(_alias) ENTITY(rectangle,black,creativecommons,_alias,DEV CREATIVECOMMONS)
+!define DEV_CREATIVECOMMONS(_alias,_label) ENTITY(rectangle,black,creativecommons,_label,_alias,DEV CREATIVECOMMONS)
+!define DEV_CREATIVECOMMONS(_alias,_label,_shape) ENTITY(_shape,black,creativecommons,_label,_alias,DEV CREATIVECOMMONS)
+!define DEV_CREATIVECOMMONS(_alias,_label,_shape,_color) ENTITY(_shape,_color,creativecommons,_label,_alias,DEV CREATIVECOMMONS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/creativecommons_badge.puml b/stdlib/devicons/creativecommons_badge.puml
new file mode 100644
index 000000000..65b03a68c
--- /dev/null
+++ b/stdlib/devicons/creativecommons_badge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $creativecommons_badge [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000001B1C000000000000000000
+00000005CBA4008C89A5CC27BB6F6C9486BC300000000000
+00000087000963E02B89BAA58F3E1F68D9CAC00000000000
+000002A13030C3E14B49945F4F3E1F1DC7A3600000000000
+0000055A6873827C6731BB29B91B7A0851AB300000000000
+000005598794828C74CC2CBBBB7BC9C66CB2CB93BB200000
+000001B00000C3E04D36BF1F3EA97A7BF19AF2F8B6000000
+0000006A202B43E04D36AF0F1DA8695BF199E0F35C600000
+00000003AB92008C64CB2B0B1A7656475CA2A0B5BB100000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CREATIVECOMMONS_BADGE(_alias) ENTITY(rectangle,black,creativecommons_badge,_alias,DEV CREATIVECOMMONS_BADGE)
+!define DEV_CREATIVECOMMONS_BADGE(_alias,_label) ENTITY(rectangle,black,creativecommons_badge,_label,_alias,DEV CREATIVECOMMONS_BADGE)
+!define DEV_CREATIVECOMMONS_BADGE(_alias,_label,_shape) ENTITY(_shape,black,creativecommons_badge,_label,_alias,DEV CREATIVECOMMONS_BADGE)
+!define DEV_CREATIVECOMMONS_BADGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,creativecommons_badge,_label,_alias,DEV CREATIVECOMMONS_BADGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/css3.puml b/stdlib/devicons/css3.puml
new file mode 100644
index 000000000..5d942161c
--- /dev/null
+++ b/stdlib/devicons/css3.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $css3 [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA0000000
+0000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+00000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+00000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60000000
+00000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50000000
+00000003FFFFF7000000000000000000007FFFFF30000000
+00000002FFFFF8000000000000000000008FFFFF20000000
+00000001FFFFFA000000000000000000009FFFFF00000000
+00000000FFFFFB00000000000000000000BFFFFF00000000
+00000000EFFFFFCCCCCCCCCCCCCCCC0000CFFFFE00000000
+00000000CFFFFFFFFFFFFFFFFFFFFD0000EFFFFC00000000
+00000000BFFFFFFFFFFFFFFFFFFFFC0000FFFFFB00000000
+000000009FFFFFFFFFFFFFFFFFFFFB0001FFFFF900000000
+000000008FFFFFFFFFF888888888850002FFFFF800000000
+000000007FFFFFFFFFF000000000000003FFFFF700000000
+000000005FFFFFFFFFF200000000000005FFFFF500000000
+000000004FFFFFFFFFF300000000000006FFFFF400000000
+000000002FFFFFFFFFF733333333300008FFFFF200000000
+000000001FFFFFFFFFFFFFFFFFFFF20009FFFFF100000000
+000000000FFFFFFDDDDFFFFFFFFFF1000BFFFFF000000000
+000000000EFFFFC0000FFFFFFFFFF0000CFFFFE000000000
+000000000DFFFFE0000DFFFFFFFFE0000EFFFFC000000000
+000000000BFFFFF0000CFFFFFFFFC0000FFFFFB000000000
+000000000AFFFFF100049EFFFFEA40000FFFFFA000000000
+0000000008FFFFF200000026620000002FFFFF8000000000
+0000000007FFFFF400000000000000003FFFFF7000000000
+0000000006FFFFF810000000000000018FFFFF5000000000
+0000000004FFFFFFFD951000000159DFFFFFFF4000000000
+0000000003FFFFFFFFFFFB7227BFFFFFFFFFFF3000000000
+0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFF1000000000
+0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+0000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000
+0000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000000
+00000000000159EFFFFFFFFFFFFFFFFFFE95100000000000
+00000000000000027BFFFFFFFFFFFFB62000000000000000
+000000000000000000048CFFFFC840000000000000000000
+000000000000000000000026620000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CSS3(_alias) ENTITY(rectangle,black,css3,_alias,DEV CSS3)
+!define DEV_CSS3(_alias,_label) ENTITY(rectangle,black,css3,_label,_alias,DEV CSS3)
+!define DEV_CSS3(_alias,_label,_shape) ENTITY(_shape,black,css3,_label,_alias,DEV CSS3)
+!define DEV_CSS3(_alias,_label,_shape,_color) ENTITY(_shape,_color,css3,_label,_alias,DEV CSS3)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/css3_full.puml b/stdlib/devicons/css3_full.puml
new file mode 100644
index 000000000..c890e62e3
--- /dev/null
+++ b/stdlib/devicons/css3_full.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $css3_full [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000EEEEEEEEEEEEEEEEEEEEEEEEEEEED0000000
+000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+000000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFF70000000
+000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFF40000000
+00000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFF10000000
+00000000000BBBBBBBBBBBBBBBBBBBBBBBFFFFFE00000000
+0000000000000000000000000000000000FFFFFB00000000
+0000000000000000000000000000000003FFFFF700000000
+0000000000000000000000000000000006FFFFF400000000
+000000000089999999999999999999999DFFFFF100000000
+0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000000
+0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFB000000000
+0000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000
+000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFF1000000000
+00000000012222222222222222222222DFFFFE0000000000
+00000000000000000000000000000000FFFFFB0000000000
+00000000000000000000000000000003FFFFF70000000000
+00000000233333000000000000000006FFFFF40000000000
+00000000CFFFFF000000000000000009FFFFF10000000000
+00000000FFFFFC00000000000000000CFFFFE00000000000
+00000002FFFFFB00000000000000003FFFFFB00000000000
+00000005FFFFFFFA400000000004AEFFFFFF700000000000
+00000008FFFFFFFFFE81000039EFFFFFFFFF400000000000
+0000000BFFFFFFFFFFFFA58DFFFFFFFFFFFF100000000000
+0000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFB000000000000
+0000000028EFFFFFFFFFFFFFFFFFFFFFB510000000000000
+000000000004AFFFFFFFFFFFFFFFFB510000000000000000
+000000000000016DFFFFFFFFFFB510000000000000000000
+000000000000000039FFFFFB510000000000000000000000
+00000000000000000016A610000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CSS3_FULL(_alias) ENTITY(rectangle,black,css3_full,_alias,DEV CSS3_FULL)
+!define DEV_CSS3_FULL(_alias,_label) ENTITY(rectangle,black,css3_full,_label,_alias,DEV CSS3_FULL)
+!define DEV_CSS3_FULL(_alias,_label,_shape) ENTITY(_shape,black,css3_full,_label,_alias,DEV CSS3_FULL)
+!define DEV_CSS3_FULL(_alias,_label,_shape,_color) ENTITY(_shape,_color,css3_full,_label,_alias,DEV CSS3_FULL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/css_tricks.puml b/stdlib/devicons/css_tricks.puml
new file mode 100644
index 000000000..93ddaf2ed
--- /dev/null
+++ b/stdlib/devicons/css_tricks.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $css_tricks [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000015410000000000000000000000
+0000000000000000000004FFFF5000000000000000000000
+000000000000000000000FFFFFF100000000000000000000
+000000000000000000004FFFFFF500000000000000000000
+000000000000000000004FFFFFF400000000000000000000
+000000000000000000003FFFFFF300000000000000000000
+000000000000000000001FFFFFF100000000000000000000
+000000000588400000000FFFFFF000000004895000000000
+000000009FFFF90000000EFFFFE00000009FFFFA00000000
+00000004FFFFFFD300000CFFFFC000003DFFFFFF40000000
+00000009FFFFFFFF70000BFFFFB00007FFFFFFFF80000000
+00000008FFFFFFFFFC1009FFFF9001BFFFFFFFFF80000000
+00000002FFFFFFFFFFF507FFFF805EFFFFFFFFFF20000000
+000000004EFFFFFFFFFFA7FFFF79FFFFFFFFFFF500000000
+00000000007EFFFFFFFFFFFFFFFFFFFFFFFFE81000000000
+0000000000004CFFFFFFFFFFFFFFFFFFFFC4000000000000
+000000000000004BFFFFFFFFFFFFFFFFB400000000000000
+000000000000000029FFFFFFFFFFFFA20000000000000000
+0000000000000000006FFFFFFFFFF5000000000000000000
+00000000000000006DFFFFFFFFFFFFC60000000000000000
+000000000000007EFFFFFFFFFFFFFFFFE710000000000000
+000000000002AFFFFFFFFFFFFFFFFFFFFFFA200000000000
+0000000003AFFFFFFFFFFFFFFFEFFFFFFFFFFA2000000000
+000000007FFFFFFFFFFF86FFFF67FFFFFFFFFFF700000000
+00000003FFFFFFFFFFE308FFFF803EFFFFFFFFFF30000000
+00000008FFFFFFFFFA0009FFFF9000AFFFFFFFFF80000000
+00000008FFFFFFFF50000BFFFFB00006FFFFFFFF80000000
+00000003FFFFFFC100000CFFFFD000002CFFFFFF30000000
+000000007FFFF70000000EFFFFF00000008FFFF700000000
+000000000387200000000FFFFFF000000002882000000000
+000000000000000000001FFFFFF200000000000000000000
+000000000000000000003FFFFFF400000000000000000000
+000000000000000000004FFFFFF500000000000000000000
+000000000000000000004FFFFFF400000000000000000000
+000000000000000000001EFFFFE000000000000000000000
+0000000000000000000004EFFE3000000000000000000000
+000000000000000000000003300000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CSS_TRICKS(_alias) ENTITY(rectangle,black,css_tricks,_alias,DEV CSS_TRICKS)
+!define DEV_CSS_TRICKS(_alias,_label) ENTITY(rectangle,black,css_tricks,_label,_alias,DEV CSS_TRICKS)
+!define DEV_CSS_TRICKS(_alias,_label,_shape) ENTITY(_shape,black,css_tricks,_label,_alias,DEV CSS_TRICKS)
+!define DEV_CSS_TRICKS(_alias,_label,_shape,_color) ENTITY(_shape,_color,css_tricks,_label,_alias,DEV CSS_TRICKS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/cssdeck.puml b/stdlib/devicons/cssdeck.puml
new file mode 100644
index 000000000..ce8e4b068
--- /dev/null
+++ b/stdlib/devicons/cssdeck.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $cssdeck [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000357000000000000000000000000
+0000000000000000017CFFFF000000000000000000000000
+00000000000000019FFFFFFF000000000000000000000000
+000000000000007FFFFFFFFF000000000000000000000000
+0000000000000BFFFFFFFFFF000000000000000000000000
+000000000000BFFFFFFFEA75000000000000000000000000
+00000000000BFFFFFFB40000000000000000000000000000
+0000000000AFFFFFE40039BDDC8300000000000000000000
+0000000004FFFFFC103CFFFFFFFFC3000000000000000000
+000000000DFFFFD108FFFFFFFFFFFF700000000000000000
+000000005FFFFF20AFFFFFFFFFFFFFF80000000000000000
+00000000CFFFF806FFFFFFFFFFFFFFFF5000000000000000
+00000002FFFFF01FFFFFFFFFFFFFFFFFE000000000000000
+00000006FFFF909FFFFFFFFFFFFFFFFFF700000000000000
+0000000AFFFF50EFFFFFFFFFFFFFFFFFFC00000000000000
+0000000DFFFF13FFFFFFFFFFFFFFFFFFFF10000000000000
+0000000EFFFF05FFFFFFFFFFFFFFFFFFFF30000000000000
+0000000FFFFE06FFFFFFFFFFFFFFFFFFFF40788880000000
+0000000EFFFF05FFFFFFFFFFFFFFFFFFFF30FFFFD0000000
+0000000DFFFF12FFFFFFFFFFFFFFFFFFFF12FFFFB0000000
+0000000AFFFF40EFFFFFFFFFFFFFFFFFFD06FFFF80000000
+00000006FFFF908FFFFFFFFFFFFFFFFFF70BFFFF50000000
+00000001FFFFF01FFFFFFFFFFFFFFFFFE01FFFFF10000000
+00000000CFFFF706FFFFFFFFFFFFFFFF509FFFFA00000000
+000000005FFFFF209FFFFFFFFFFFFFF704FFFFF300000000
+000000000DFFFFE108FFFFFFFFFFFF602EFFFFB000000000
+0000000004FFFFFD203CFFFFFFFFB202EFFFFF2000000000
+00000000009FFFFFE50038BCCB72006FFFFFF80000000000
+00000000000BFFFFFFC5000000006DFFFFFF900000000000
+000000000000BFFFFFFFFB9889CFFFFFFFFA000000000000
+00000000000009FFFFFFFFFFFFFFFFFFFF80000000000000
+000000000000007FFFFFFFFFFFFFFFFFE600000000000000
+00000000000000019FFFFFFFFFFFFFF80000000000000000
+0000000000000000017CFFFFFFFFB6000000000000000000
+000000000000000000000244442000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_CSSDECK(_alias) ENTITY(rectangle,black,cssdeck,_alias,DEV CSSDECK)
+!define DEV_CSSDECK(_alias,_label) ENTITY(rectangle,black,cssdeck,_label,_alias,DEV CSSDECK)
+!define DEV_CSSDECK(_alias,_label,_shape) ENTITY(_shape,black,cssdeck,_label,_alias,DEV CSSDECK)
+!define DEV_CSSDECK(_alias,_label,_shape,_color) ENTITY(_shape,_color,cssdeck,_label,_alias,DEV CSSDECK)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/dart.puml b/stdlib/devicons/dart.puml
new file mode 100644
index 000000000..44c13a434
--- /dev/null
+++ b/stdlib/devicons/dart.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $dart [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000008C60000000000000000000000
+0000000000000000000003DFFF9000000000000000000000
+000000000000000000008FFFFFF900000000000000000000
+0000000000000000005EFFFFFFFF90000000000000000000
+000000000000000019FFFFFFFFFFF9000000000000000000
+0000000000000004EFFFFFFFFFFFFF400000000000000000
+00000000000000AFFFFFFFFFFFFFFF900000000000000000
+00000000000005BBBBBBBBBBBBBBBA881000000000000000
+00000000000089EFFFFFFFFFFFFFFFFCF700000000000000
+000000000003F9FEFFFFFFFFFFFFFFFBFFA0000000000000
+00000000000DF9FFEFFFFFFFFFFFFFFCFFFA000000000000
+00000000008FF9FFFEFFFFFFFFFFFFFFCFFFA00000000000
+0000000003FFF9FFFFFFFFFFFFFFFFFFBFFFFA0000000000
+000000000DFFF9FFFFFEFFFFFFFFFFFFCFFFFF9000000000
+000000008FFFF9FFFFFFEFFFFFFFFFFFFBFFFFF800000000
+00000003FFFFF9FFFFFFFEFFFFFFFFFFFBFFFFFA00000000
+0000000DFFFFF9FFFFFFFFEFFFFFFFFFFDEFFFFA00000000
+0000007FFFFFF9FFFFFFFFFEFFFFFFFFFFBFFFFA00000000
+0000008FFFFFF9FFFFFFFFFFEFFFFFFFFFBFFFFA00000000
+0000002FFFFFF9FFFFFFFFFFFEFFFFFFFFDDFFFA00000000
+00000003FFFFF9FFFFFFFFFFFFEFFFFFFFFBFFFA00000000
+000000004FFFF9FFFFFFFFFFFFFEFFFFFFFBFFFA00000000
+0000000004FFF9FFFFFFFFFFFFFFEFFFFFFEDFFA00000000
+00000000004FF9FFFFFFFFFFFFFFFEFFFFFFCFFA00000000
+00000000000057BFFFFFFFFFFFFFFFEFFFFF9FFA00000000
+00000000000003FAABFFFFFFFFFFFFFEFFFE9FFA00000000
+00000000000000CFFEAACFFFFFFFFFFFEFF8FFFA00000000
+000000000000002FFFFFDAADFFFFFFFFFEF8FFA400000000
+0000000000000004FFFFFFFDAAEFFFFFFE68500000000000
+00000000000000004FFFFFFFFFCAAEFD89B0000000000000
+000000000000000004FFFFFFFFFFFB9AFF70000000000000
+0000000000000000004FFFFFFFFFFFFFFF10000000000000
+00000000000000000004FFFFFFFFFFFFFC00000000000000
+000000000000000000004AAAAAAAAAAAA500000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DART(_alias) ENTITY(rectangle,black,dart,_alias,DEV DART)
+!define DEV_DART(_alias,_label) ENTITY(rectangle,black,dart,_label,_alias,DEV DART)
+!define DEV_DART(_alias,_label,_shape) ENTITY(_shape,black,dart,_label,_alias,DEV DART)
+!define DEV_DART(_alias,_label,_shape,_color) ENTITY(_shape,_color,dart,_label,_alias,DEV DART)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/database.puml b/stdlib/devicons/database.puml
new file mode 100644
index 000000000..d19a12d2e
--- /dev/null
+++ b/stdlib/devicons/database.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $database [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000134666666431000000000000000000
+0000000000000038BEFFFFFFFFFFFFEB8300000000000000
+0000000000018EFFFFFFFFFFFFFFFFFFFFE8100000000000
+00000000005EFFFFEA742100001247AEFFFFE40000000000
+0000000002FFFFD400000000000000004EFFFF2000000000
+0000000007FFFF70000000000000000007FFFF7000000000
+0000000007FFFFF820000000000000028FFFFF7000000000
+0000000007FFFFFFFDB8655445568BDFFFFFFF7000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000
+0000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000
+000000000019FFFFFFFFFFFFFFFFFFFFFFFF910000000000
+00000000000018DFFFFFFFFFFFFFFFFFFC81000000000000
+0000000004B1000147ACDEFFFFEDCA7410001B4000000000
+0000000007FF820000000000000000000028FF7000000000
+0000000007FFFFD852000000000000258DFFFF7000000000
+0000000007FFFFFFFFFCCBA99ABCDFFFFFFFFF7000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000
+00000000008FFFFFFFFFFFFFFFFFFFFFFFFFF70000000000
+000000000003BFFFFFFFFFFFFFFFFFFFFFFB300000000000
+000000000130027BFFFFFFFFFFFFFFFFB620031000000000
+0000000006F60000024689999998642000006F6000000000
+0000000007FFD7200000000000000000027DFF7000000000
+0000000007FFFFFEB85321000012358BEFFFFF7000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000
+0000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000
+0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFE1000000000
+00000000003DFFFFFFFFFFFFFFFFFFFFFFFFD30000000000
+0000000000006CFFFFFFFFFFFFFFFFFFFFC5000000000000
+00000000000000169CEFFFFFFFFFFEC96100000000000000
+000000000000000000001334433100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DATABASE(_alias) ENTITY(rectangle,black,database,_alias,DEV DATABASE)
+!define DEV_DATABASE(_alias,_label) ENTITY(rectangle,black,database,_label,_alias,DEV DATABASE)
+!define DEV_DATABASE(_alias,_label,_shape) ENTITY(_shape,black,database,_label,_alias,DEV DATABASE)
+!define DEV_DATABASE(_alias,_label,_shape,_color) ENTITY(_shape,_color,database,_label,_alias,DEV DATABASE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/debian.puml b/stdlib/devicons/debian.puml
new file mode 100644
index 000000000..161e317cc
--- /dev/null
+++ b/stdlib/devicons/debian.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $debian [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000000003AFFCB88A61000000000000000000
+000000000000000004CFFFFFFFFFFF945100000000000000
+0000000000000001BFFFFFFFFFFFFFFFFC40000000000000
+000000000000009EFFFFFFDCAAACEFFFFFFB100000000000
+00000000000009FFFFFFA2000000039FFFFFC10000000000
+0000000000009FFFFF95000000000002DFFFFC0000000000
+000000000006FFFFE2000000000000000CFFFF9000000000
+00000000001FFFF9300000000000000000DFFFF400000000
+00000000208FFF500000000000000000002FFFFD00000000
+0000000013FFF30000000000000000000007FFCC10000000
+000000000EFF400000000000000000000000FFA300000000
+000000004FF70000000000018DDB81000000AFF420000000
+00000002BFF400000000004E7200042000006FF510000000
+00000001FFC00000000002D20000000000003FF600000000
+00000006FF40000000000D300000000000001FF700000000
+00000008FF00000000006A000000000000001FFB00000000
+00000007FD0000000000C4000000000020001FF900000000
+00000007FC0000000000F2000000000000003FF400000000
+00000007FA0000000000F3000000000000002FC100000000
+00000007F90000000000F6000000000000006F8000000000
+00000007F80000000000CA00000000110003EF1000000000
+00000007F900000000006F10000440000008F70000000000
+00000006FC00000000012DC000000000005FB00000000000
+00000005FF000000000232EA0000000008FA100000000000
+00000002FF1000000000144DD4000006EF80000000000000
+00000000EF50000000000047CFEAACFFC300000000000000
+00000000AFB0000000000001866888510000000000000000
+000000004FFE200000000000015441000000000000000000
+000000000EFF900000000000000000000000000000000000
+0000000007FF900000000000000000000000000000000000
+0000000001EFF10000000000000000000000000000000000
+00000000006FF70000000000000000000000000000000000
+00000000000CFD0000000000000000000000000000000000
+000000000002FF9000000000000000000000000000000000
+0000000000004FF700000000000000000000000000000000
+00000000000007FF20000000000000000000000000000000
+000000000000006FE7000000000000000000000000000000
+0000000000000004FF700000000000000000000000000000
+00000000000000002CE81000000000000000000000000000
+0000000000000000006EF600000000000000000000000000
+000000000000000000006CA4000000000000000000000000
+000000000000000000000003420000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DEBIAN(_alias) ENTITY(rectangle,black,debian,_alias,DEV DEBIAN)
+!define DEV_DEBIAN(_alias,_label) ENTITY(rectangle,black,debian,_label,_alias,DEV DEBIAN)
+!define DEV_DEBIAN(_alias,_label,_shape) ENTITY(_shape,black,debian,_label,_alias,DEV DEBIAN)
+!define DEV_DEBIAN(_alias,_label,_shape,_color) ENTITY(_shape,_color,debian,_label,_alias,DEV DEBIAN)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/digital_ocean.puml b/stdlib/devicons/digital_ocean.puml
new file mode 100644
index 000000000..12ba85365
--- /dev/null
+++ b/stdlib/devicons/digital_ocean.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $digital_ocean [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000006ADDB820000000000000000000000000
+000000000000006EFFFFFFF9000000000000000000000000
+00000000000008FFFB98BFFFC10022210000000000000000
+0000000000005FFB4200008FFB05FFF80000000000000000
+000000000000EFFEC9841005BB35FFF80000000000000000
+000000000006FFD3000000006995FFF80000000000000000
+00000000000AFF2000000000CFF499951100000000000000
+000000005A6CFA0000000000CFF10002FF00CF6000000000
+0000001CFF9CF5000000000034400002FF00CF6000000000
+000000DFFB56C30000000000000000000000112999500000
+000006FF4000000000000000000000000000004FFF800000
+00000DF7000000000000000000002BA00AE5004FFF800000
+00000FF2200000000000000000003FF00BF6004FFF800000
+00000EF17000000000000000000016600235A80333100000
+00000BF5B000000121000000000000000006FC0000000000
+000004FDA7017BFFFFEA5000000000000003860000000000
+0000009FD78FFEDCDFFFFF94000200000000010002000000
+000000074C9510120038DFFFE83047633358700052000000
+00000002527BFFFFFFC9438DFFFD7238AA83004930000000
+000000016641000001358A82159DFFEB8778BA5000000000
+000000000000000000000002300002345542000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DIGITAL_OCEAN(_alias) ENTITY(rectangle,black,digital_ocean,_alias,DEV DIGITAL_OCEAN)
+!define DEV_DIGITAL_OCEAN(_alias,_label) ENTITY(rectangle,black,digital_ocean,_label,_alias,DEV DIGITAL_OCEAN)
+!define DEV_DIGITAL_OCEAN(_alias,_label,_shape) ENTITY(_shape,black,digital_ocean,_label,_alias,DEV DIGITAL_OCEAN)
+!define DEV_DIGITAL_OCEAN(_alias,_label,_shape,_color) ENTITY(_shape,_color,digital_ocean,_label,_alias,DEV DIGITAL_OCEAN)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/django.puml b/stdlib/devicons/django.puml
new file mode 100644
index 000000000..ebf575e22
--- /dev/null
+++ b/stdlib/devicons/django.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $django [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000002DD60DD800000000000000000000000000000000000
+000002FF70FF900000000000000000000000000000000000
+000002FF70CC700000000000000000000000000000000000
+000002FF7000000000000000000000000000000000000000
+007DFFFF70DD806CFFF9029CFFFB30003ADFFED419EFFA10
+0BFFFFFF70FF90DFFFFF54FFFFFFF108FFFFFFE1DFFFFFD0
+5FFA13FF70FF907300FF74FF728FF44FFB37FF26FF818FF6
+AFF002FF70FF90059CFF74FF504FF5AFF006FF1AFF000FFA
+BFF002FF70FF90CFFFFF74FF503FF5CFE006FF1BFF000FFB
+9FF302FF71FF84FF40CF74FF503FF5AFF206FF19FF202FF9
+3FFFBBFF71FF84FF76DF74FF503FF65FFEBDFF13FFD8DFF3
+06FFFFFF72FF81EFFFFF74FF503FF609FFFFFF008FFFFF70
+0005665414FF601677652155101552002659FF0003898200
+000000000CFF20000000000000000000000BFE0000000000
+00000002CFFA0000000000000000009C98CFF80000000000
+000000005D900000000000000000009FFFFFB00000000000
+00000000000000000000000000000038AA84000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DJANGO(_alias) ENTITY(rectangle,black,django,_alias,DEV DJANGO)
+!define DEV_DJANGO(_alias,_label) ENTITY(rectangle,black,django,_label,_alias,DEV DJANGO)
+!define DEV_DJANGO(_alias,_label,_shape) ENTITY(_shape,black,django,_label,_alias,DEV DJANGO)
+!define DEV_DJANGO(_alias,_label,_shape,_color) ENTITY(_shape,_color,django,_label,_alias,DEV DJANGO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/dlang.puml b/stdlib/devicons/dlang.puml
new file mode 100644
index 000000000..3af9b3668
--- /dev/null
+++ b/stdlib/devicons/dlang.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $dlang [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000025555555555555555555555555510000000000
+000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000000000
+000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000
+00000000DFFFFFFFFFFFFFFFFFFFFFFFFFD9EFFA00000000
+00000000FFF200000001236AFFFFFFFFFF103FFC00000000
+00000000FFF000000000000006EFA557DF304FFC00000000
+00000000FFF00000000000000013000009FDFFFC00000000
+00000000FFF004CCCBA940000000000000CFFFFC00000000
+00000000FFF005FFFFFFFD5000000000005FFFFC00000000
+00000000FFF005FFFFFFFFF600000000003FFFFC00000000
+00000000FFF005FFFFFFFFFF10000000005FFFFC00000000
+00000000FFF005FFFFFFFFFF5000000000CFFFFC00000000
+00000000FFF005FFFFFFFFFF7000000009FFFFFC00000000
+00000000FFF005FFFFFFFFFF50000058DFFFFFFC00000000
+00000000FFF005FFFFFFFFFE000003FFFFFFFFFC00000000
+00000000FFF005FFFFFFFFF500000AFFFFFFFFFC00000000
+00000000FFF005FFFFFFFE5000004FFFFFFFFFFC00000000
+00000000FFF003BBBBA940000001EFFFFFFFFFFC00000000
+00000000FFF0000000000000002DFFFFFFFFFFFC00000000
+00000000FFF000000000000018FFFFFFFFFFFFFC00000000
+00000000FFF200000011236AFFFFFFFFFFFFFFFC00000000
+00000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000000
+000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000
+000000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000000000
+000000000024444444444444444444444444410000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DLANG(_alias) ENTITY(rectangle,black,dlang,_alias,DEV DLANG)
+!define DEV_DLANG(_alias,_label) ENTITY(rectangle,black,dlang,_label,_alias,DEV DLANG)
+!define DEV_DLANG(_alias,_label,_shape) ENTITY(_shape,black,dlang,_label,_alias,DEV DLANG)
+!define DEV_DLANG(_alias,_label,_shape,_color) ENTITY(_shape,_color,dlang,_label,_alias,DEV DLANG)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/docker.puml b/stdlib/devicons/docker.puml
new file mode 100644
index 000000000..fb0fc4593
--- /dev/null
+++ b/stdlib/devicons/docker.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $docker [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000000000004BAAB200000000000000000000
+000000000000000000000065557300000000000000000000
+000000000000000000000066778300000000000000000000
+000000000000000000000066778300000000000000000000
+000000000000002B99AB99C977B300000000070000000000
+00000000000000296558666566830000000067A000000000
+000000000000002976687776778300000000A02900000000
+000000000000002965576665667411000000A00820000000
+00000000000D99AB779A77A977BA99D10000A004B9A93000
+00000000000A66697658777677867791000090013001B300
+00000000000A666976587776778677910000390000039000
+00000000111A333954475565557555921147B50235980000
+00000005B988888888888888888888888863003C64000000
+00000006300000000000000000000000000000A100000000
+00006D57415B6100014AD400018E72000039849128C10000
+0005777AB7777766677777766777777666777E7777762000
+00000001A000000000000000000000000000840000000000
+00000000B000000000520000000000000004900000000000
+00000000570000000235000000000000003A000000000000
+000000000B444457931000000000000004A0000000000000
+0000000001C5443100000000000000008800000000000000
+00000000001A1000000000000000005B4000000000000000
+00000000000197000000000000017B600000000000000000
+00000000000004A95200001359A940000000000000000000
+000000000000000157AAAA97510000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DOCKER(_alias) ENTITY(rectangle,black,docker,_alias,DEV DOCKER)
+!define DEV_DOCKER(_alias,_label) ENTITY(rectangle,black,docker,_label,_alias,DEV DOCKER)
+!define DEV_DOCKER(_alias,_label,_shape) ENTITY(_shape,black,docker,_label,_alias,DEV DOCKER)
+!define DEV_DOCKER(_alias,_label,_shape,_color) ENTITY(_shape,_color,docker,_label,_alias,DEV DOCKER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/doctrine.puml b/stdlib/devicons/doctrine.puml
new file mode 100644
index 000000000..518430afd
--- /dev/null
+++ b/stdlib/devicons/doctrine.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $doctrine [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000002885000000000000000000000000000
+00000000000000005FFFFB00000000000000000000000000
+0000000000000001FFFFFFC0000000000000000000000000
+0000000000000004FFFFFFFC000000000000000000000000
+0000000000000003FFFFFFFFC10000000000000000000000
+0000000000000000DFFFFFFFFC0000000000000000000000
+00000000000000003FFFFFFFFFC000000000000000000000
+000000000000000003EFFFFFFFFC10000000000000000000
+0000000000000000003EFFFFFFFFC1000000000000000000
+00000000000000000003EFFFFFFFFC100000000000000000
+00000000000000000039EFFFFFFFFFC00000000000000000
+00000000000000003CFFFFFFFFFFFFFC0000000000000000
+0000000000000009FFFFFFFFFFFFFFFFC000000000000000
+00000000000000CFFFFFFF99EFFFFFFFFB00000000000000
+0000000000000BFFFFFFF2001CFFFFFFFFC0000000000000
+0000000000009FFFFFFF900001CFFFFFFFF9000000000000
+000000000004FFFFFFFF8000001CFFFFFFFF400000000000
+00000000000DFFFFFFFFE1000001CFFFFFFFD00000000000
+00000000004FFFFFFFFFFC0000001CFFFFFFF40000000000
+0000000000AFFFFFFFFFFFC0000001CFFFFFFA0000000000
+0000000000EFFFFFFFFFFFFC0000001CFFFFFF0000000000
+0000000002FFFFFFDCCCCCCC90000001CFFFFF2000000000
+0000000004FFFFD200000000000000001DFFFF5000000000
+0000000006FFFF40000000000000000004FFFF6000000000
+0000000006FFFF10000000000000000001FFFF6000000000
+0000000004FFFF50000000000000000005FFFF5000000000
+0000000003FFFFE511111111100000002EFFFF3000000000
+0000000000FFFFFFFFFFFFFF90000003EFFFFF0000000000
+0000000000AFFFFFFFFFFFF90000003EFFFFFA0000000000
+00000000005FFFFFFFFFFF90000002EFFFFFF50000000000
+00000000000DFFFFFFFFF90000002EFFFFFFD00000000000
+000000000005FFFFFFFFD0000002EFFFFFFF500000000000
+000000000000BFFFFFFF8000002EFFFFFFFA000000000000
+0000000000000DFFFFFFA00002EFFFFFFFD0000000000000
+00000000000001DFFFFFF4003EFFFFFFFD10000000000000
+000000000000000BFFFFFFCCFFFFFFFFA000000000000000
+00000000000000005DFFFFFFFFFFFFD50000000000000000
+0000000000000000006BFFFFFFFFB6000000000000000000
+000000000000000000001467764100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DOCTRINE(_alias) ENTITY(rectangle,black,doctrine,_alias,DEV DOCTRINE)
+!define DEV_DOCTRINE(_alias,_label) ENTITY(rectangle,black,doctrine,_label,_alias,DEV DOCTRINE)
+!define DEV_DOCTRINE(_alias,_label,_shape) ENTITY(_shape,black,doctrine,_label,_alias,DEV DOCTRINE)
+!define DEV_DOCTRINE(_alias,_label,_shape,_color) ENTITY(_shape,_color,doctrine,_label,_alias,DEV DOCTRINE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/dojo.puml b/stdlib/devicons/dojo.puml
new file mode 100644
index 000000000..6bd31d82e
--- /dev/null
+++ b/stdlib/devicons/dojo.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $dojo [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000583000000000000000010000000000000000
+000000000000BF70000377777200008F3000027778850000
+000000000000BF70000244444100008F3000014444420000
+000000000000BF70000000000000005A2000000000000000
+000039BCB710BF7000028CCB810000471000016BCB820000
+001AFFFFFFE0BF70009FFFFFFF80008F20007FFFFFFFA000
+01DFC40028B0BF700CFD51126EFA008F3009FE72115DFD00
+0BFB00000000BF709FB0000001DF708F305FE2000000AFA0
+3FD000000000BF71FE100000002FE08F30DF300000000DF2
+8F6000000000BF77F8000000000AF48F33FC0000000006F8
+BF2000000000BF79F40000000006F68F35F80000000002FB
+BF2000000000BF79F30000000005F78F35F70000000001FB
+AF4000000000BF78F60000000007F58F34FA0000000004F9
+6FA000000000EF74FC000000000DF19F31FF100000000AF5
+0EF50000000AFF70DF600000008FA09F20AFA00000004FE0
+04FF600001AFFF704FF8000009FE109F201EFA100007FF40
+005FFD99BFFDEF7004FFEA9AFFE3009F2002DFFA9AEFF500
+0002AFFFFE80BE60002AFFFFF91000AF200008EFFFF92000
+000000332000000000000332000000DF0000000232000000
+000000000000000000000000000006F90000000000000000
+00000000000000000000000000003FE10000000000000000
+00000000000000000000000000001E500000000000000000
+000000000000000000000000000001000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DOJO(_alias) ENTITY(rectangle,black,dojo,_alias,DEV DOJO)
+!define DEV_DOJO(_alias,_label) ENTITY(rectangle,black,dojo,_label,_alias,DEV DOJO)
+!define DEV_DOJO(_alias,_label,_shape) ENTITY(_shape,black,dojo,_label,_alias,DEV DOJO)
+!define DEV_DOJO(_alias,_label,_shape,_color) ENTITY(_shape,_color,dojo,_label,_alias,DEV DOJO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/dotnet.puml b/stdlib/devicons/dotnet.puml
new file mode 100644
index 000000000..a3f16460e
--- /dev/null
+++ b/stdlib/devicons/dotnet.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $dotnet [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000001111111000000000000000003455557700
+000000000002BFFFFFFFFFFFC400000000019FFFFFFFFA00
+00000000007FFFFFFFFFFFFFFF300000001EFFFFFFFFF100
+0000000008FFFFFFFFFFFFFFFFD0000000BFFFFFFFFF8000
+000000007FFFFFFFDCFFFFFFFFF6000002FFFFFFFFFE0000
+00000004FFFFFFFE27FFFFFFFFFD000009FFFFFFFFF60000
+0000001EFFFFFFF403FFFFFFFFFF20000EFFFFFFFFC00000
+000000AFFFFFFF7000FFFFFFFFFF60003FFFFFFFFF300000
+000004FFFFFFFC0000BFFFFFFFFFB0008FFFFFFFFA000000
+00000CFFFFFFF700006FFFFFFFFFF000DFFFFFFFE1000000
+00004FFFFFFFF200002FFFFFFFFFF302FFFFFFFF60000000
+0000CFFFFFFFD000000EFFFFFFFFF707FFFFFFFC00000000
+0003FFFFFFFF80000009FFFFFFFFFC0DFFFFFFF200000000
+0009FFFFFFFF30000004FFFFFFFFFF4FFFFFFF6000000000
+000FFFFFFFFC00000000DFFFFFFFFFDFFFFFF90000000000
+005FFFFFFFF5000000005FFFFFFFFFFFFFFFB00000000000
+00AFFFFFFF80000000000AFFFFFFFFFFFFFB000000000000
+00EFFFFFC40000000000006CDDDDDDDDDB50000000000000
+003333310000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DOTNET(_alias) ENTITY(rectangle,black,dotnet,_alias,DEV DOTNET)
+!define DEV_DOTNET(_alias,_label) ENTITY(rectangle,black,dotnet,_label,_alias,DEV DOTNET)
+!define DEV_DOTNET(_alias,_label,_shape) ENTITY(_shape,black,dotnet,_label,_alias,DEV DOTNET)
+!define DEV_DOTNET(_alias,_label,_shape,_color) ENTITY(_shape,_color,dotnet,_label,_alias,DEV DOTNET)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/dreamweaver.puml b/stdlib/devicons/dreamweaver.puml
new file mode 100644
index 000000000..95bb1afcd
--- /dev/null
+++ b/stdlib/devicons/dreamweaver.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $dreamweaver [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000099999999999999999999999999999999990000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFD3333333333333333333333333333BFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0001232000000000000000000000AFF0000000
+0000000FFC00DFFFFFD7000000000000000000AFF0000000
+0000000FFC00EFFEEFFFD10000000000000000AFF0000000
+0000000FFC00EF60017FFC0000000000000000AFF0000000
+0000000FFC00EF600006FF5110000110000100AFF0000000
+0000000FFC00EF600000DFA9F9002FE000EF40AFF0000000
+0000000FFC00EF600000AFD5FD006FF201FF00AFF0000000
+0000000FFC00EF6000008FF1FF00AFF604FB00AFF0000000
+0000000FFC00EF6000008FE0DF30EAF907F700AFF0000000
+0000000FFC00EF600000AFB09F62F6CD0AF300AFF0000000
+0000000FFC00EF600000FF905F96F28F1DE000AFF0000000
+0000000FFC00EF600007FF301FCAE05F5FA000AFF0000000
+0000000FFC00EF60007FFA000DFDA01FCF6000AFF0000000
+0000000FFC00EFDBCFFFC00009FF600DFF1000AFF0000000
+0000000FFC00EFFFFFD7000005FF2009FD0000AFF0000000
+0000000FFC0034555200000000330001320000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFC0000000000000000000000000000AFF0000000
+0000000FFD5555555555555555555555555555CFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+000000066666666666666666666666666666666660000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DREAMWEAVER(_alias) ENTITY(rectangle,black,dreamweaver,_alias,DEV DREAMWEAVER)
+!define DEV_DREAMWEAVER(_alias,_label) ENTITY(rectangle,black,dreamweaver,_label,_alias,DEV DREAMWEAVER)
+!define DEV_DREAMWEAVER(_alias,_label,_shape) ENTITY(_shape,black,dreamweaver,_label,_alias,DEV DREAMWEAVER)
+!define DEV_DREAMWEAVER(_alias,_label,_shape,_color) ENTITY(_shape,_color,dreamweaver,_label,_alias,DEV DREAMWEAVER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/dropbox.puml b/stdlib/devicons/dropbox.puml
new file mode 100644
index 000000000..cb687b7c2
--- /dev/null
+++ b/stdlib/devicons/dropbox.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $dropbox [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000004DD200000000002DD4000000000000000
+000000000000009FFFE4000000004EFFF900000000000000
+0000000000004EFFFFFF60000006FFFFFFE4000000000000
+00000000001AFFFFFFFFF900009FFFFFFFFFA10000000000
+0000000005EFFFFFFFFFFFB01BFFFFFFFFFFFE5000000000
+00000001AFFFFFFFFFFFFFFAAFFFFFFFFFFFFFFA10000000
+00000006FFFFFFFFFFFFFF7007FFFFFFFFFFFFFF60000000
+000000003EFFFFFFFFFFA100001AFFFFFFFFFFE300000000
+0000000001CFFFFFFFD4000000004EFFFFFFFC1000000000
+000000000009FFFFF80000000000008FFFFF900000000000
+0000000000006FFB2000000000000002BFF6000000000000
+000000000000057000000000000000000750000000000000
+0000000000002DF600000000000000006FD2000000000000
+000000000005FFFFC30000000000003CFFFF500000000000
+00000000008FFFFFFF900000000009FFFFFFF80000000000
+000000001BFFFFFFFFFE50000005EFFFFFFFFFB100000000
+00000002DFFFFFFFFFFFFB1001BFFFFFFFFFFFFD20000000
+00000005EFFFFFFFFFFFFFF66FFFFFFFFFFFFFFE50000000
+0000000019FFFFFFFFFFFFF44FFFFFFFFFFFFF9100000000
+00000000005EFFFFFFFFFE3773EFFFFFFFFFE50000000000
+0000000000009FFFFFFFB1AFFB2BFFFFFFF9000000000000
+00000000000003DFFFF92CFFFFD29FFFFD30000000000000
+0000000000000009FF72EFFFFFFE37FF9000000000000000
+00000000000000A2444FFFFFFFFFF5442A00000000000000
+00000000000000EF77FFFFFFFFFFFF77FE00000000000000
+000000000000005EFFFFFFFFFFFFFFFFE500000000000000
+00000000000000008FFFFFFFFFFFFFF80000000000000000
+000000000000000001AFFFFFFFFFFB200000000000000000
+00000000000000000004DFFFFFFD40000000000000000000
+0000000000000000000006FFFF8000000000000000000000
+00000000000000000000001AB20000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DROPBOX(_alias) ENTITY(rectangle,black,dropbox,_alias,DEV DROPBOX)
+!define DEV_DROPBOX(_alias,_label) ENTITY(rectangle,black,dropbox,_label,_alias,DEV DROPBOX)
+!define DEV_DROPBOX(_alias,_label,_shape) ENTITY(_shape,black,dropbox,_label,_alias,DEV DROPBOX)
+!define DEV_DROPBOX(_alias,_label,_shape,_color) ENTITY(_shape,_color,dropbox,_label,_alias,DEV DROPBOX)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/drupal.puml b/stdlib/devicons/drupal.puml
new file mode 100644
index 000000000..ef732d65f
--- /dev/null
+++ b/stdlib/devicons/drupal.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $drupal [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000051000000000000000000000000
+0000000000000000000000AD000000000000000000000000
+0000000000000000000000FFB00000000000000000000000
+0000000000000000000008FFFB0000000000000000000000
+000000000000000000007FFFFFD400000000000000000000
+0000000000000000002CFFFFFFFFB4000000000000000000
+000000000000000019FFFFFFFFFFFFC40000000000000000
+0000000000000007FFFFFFFFFFFFFFFFB100000000000000
+00000000000002DFFFFFFFFFFFFFFFFFFE40000000000000
+0000000000004FFFFFFFFFFFFFFFFFFFFFF5000000000000
+000000000005FFFFFFFFFFFFFFFFFFFFFFFF600000000000
+00000000003FFFFFFFFFFFFFFFFFFFFFFFFFF30000000000
+0000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFE1000000000
+0000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFF9000000000
+000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200000000
+000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF900000000
+00000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000
+00000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000
+00000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+0000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+0000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000
+0000000FFFFFFFFFFF95447DFFFFFFFFFFFFFDFFF0000000
+0000000EFFFFFFFFB10000005DFFFFFFFFF8103FE0000000
+0000000CFFFFFFFB00000000009FFFFFFD300008C0000000
+00000009FFFFFFF1000000000004DFFF70000004A0000000
+00000005FFFFFFA000000000000006610000000470000000
+00000001FFFFFF7000000000000000100000000620000000
+00000000AFFFFF60000000000001AFF90000000700000000
+000000003FFFFF9000000000008FFFFFB000000500000000
+000000000AFFFFF2000000006EFD779FFC00006000000000
+0000000001EFFFFE4000005DFF916736FFC1054000000000
+00000000004FFFFFFDBABFFFFD3EFFF5FFFFE80000000000
+000000000005FFFFFFFFFFFFFFFFFFFFFFFFA00000000000
+0000000000004FFFFFFFFFDDFFFFFFFEAFFA000000000000
+00000000000002DFFFFFFF5059BBB951AF70000000000000
+0000000000000007FFFFFFF95111148EB200000000000000
+000000000000000017DFFFFFFFFFFEA20000000000000000
+0000000000000000000269BCCB9730000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_DRUPAL(_alias) ENTITY(rectangle,black,drupal,_alias,DEV DRUPAL)
+!define DEV_DRUPAL(_alias,_label) ENTITY(rectangle,black,drupal,_label,_alias,DEV DRUPAL)
+!define DEV_DRUPAL(_alias,_label,_shape) ENTITY(_shape,black,drupal,_label,_alias,DEV DRUPAL)
+!define DEV_DRUPAL(_alias,_label,_shape,_color) ENTITY(_shape,_color,drupal,_label,_alias,DEV DRUPAL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/eclipse.puml b/stdlib/devicons/eclipse.puml
new file mode 100644
index 000000000..3250b71de
--- /dev/null
+++ b/stdlib/devicons/eclipse.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $eclipse [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000001320000000000000000000000000
+0000000000000000059B73479AA873000000000000000000
+0000000000000007ED55BFFFFFFFFFE91000000000000000
+00000000000003DF94CFFFFFFFFFFFFFF900000000000000
+0000000000006FF58FFFFFFFFFFFFFFFFFD2000000000000
+000000000006FF6AFFFFFFFFFFFFFFFFFFFF400000000000
+00000000004FF79FFFFFFFFFFFFFFFFFFFFFF30000000000
+0000000000EFB6FFFFFFFFFFFFFFFFFFFFFFFE1000000000
+0000000009FF2FFFFFFFFFFFFFFFFFFFFFFFFFA000000000
+000000002FF89FFFFFFFFFFFFFFFFFFFFFFFFFF300000000
+000000009FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000
+00000000FFA7FFFFFFFFFFFFFFFFFFFFFFFFFFFF20000000
+00000005FF60111111111111111111111111111100000000
+00000008FF24444444444444444444444444444420000000
+0000000BFF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000
+0000000DFF28888888888888888888888888888870000000
+0000000EFE00000000000000000000000000000000000000
+0000000DFE2BBBBBBBBBBBBBBBBBBBBBBBBBBBBBA0000000
+0000000BFF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000
+00000008FF21111111111111111111111111111100000000
+00000004FF72444444444444444444444444444410000000
+00000000EFB6FFFFFFFFFFFFFFFFFFFFFFFFFFFF10000000
+000000008FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFA00000000
+000000001FF98FFFFFFFFFFFFFFFFFFFFFFFFFF200000000
+0000000007FF3EFFFFFFFFFFFFFFFFFFFFFFFF8000000000
+0000000000DFC4FFFFFFFFFFFFFFFFFFFFFFFC0000000000
+00000000002FF86FFFFFFFFFFFFFFFFFFFFFE10000000000
+000000000004FF76FFFFFFFFFFFFFFFFFFFD200000000000
+0000000000004EF84EFFFFFFFFFFFFFFFFB1000000000000
+00000000000001BFB39FFFFFFFFFFFFFE600000000000000
+0000000000000004CF738DFFFFFFFFB60000000000000000
+0000000000000000027A7435777641000000000000000000
+000000000000000000000010000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ECLIPSE(_alias) ENTITY(rectangle,black,eclipse,_alias,DEV ECLIPSE)
+!define DEV_ECLIPSE(_alias,_label) ENTITY(rectangle,black,eclipse,_label,_alias,DEV ECLIPSE)
+!define DEV_ECLIPSE(_alias,_label,_shape) ENTITY(_shape,black,eclipse,_label,_alias,DEV ECLIPSE)
+!define DEV_ECLIPSE(_alias,_label,_shape,_color) ENTITY(_shape,_color,eclipse,_label,_alias,DEV ECLIPSE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ember.puml b/stdlib/devicons/ember.puml
new file mode 100644
index 000000000..06051e855
--- /dev/null
+++ b/stdlib/devicons/ember.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ember [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000017500000000000000000000
+0000000000000000000000002EFF30000000000000000000
+000000000000000000000000CFAF80000000000000000000
+000000000000000000000003FA3F90000000000000000000
+00000000000000000000000AF37F80000000000000000000
+00000000000000000000000FE0DF40000000000000000000
+00000000000000000000002F94FE00000000000000000000
+00000000000000000000005F5BF700000000000000000000
+00000000000000000000007F6FD000000000000000000000
+000019CA200C902A506C109FDF9700000AFF8007A07B0000
+0000DFFFD04FB1EF83FF40BFFFFFA000BFDFF00ED4FF0000
+0008FC0BF08F98FF6CFF20DFE8BFF206FB0BF12FDCFF0000
+000EF30DC0BF9FFF9FFF00FF500FF40CF40DE05FFFEF0000
+132FF4BF30EFFECFFAFE01FF000EF11FF3BF508FFAAF65C9
+9FFFFFC202FFF7EFF5FC03FB001FD09FFFE401CFF44FFFE4
+059FF6006EFFF1FFE1FC08F9008FCEFFF9006EFFE0069610
+000DFECFFFFF81FF80FFDFFC69FFFF8DFFDFFFFF80000000
+0002EFFFC6FE10EF20CFF9BFFFFB6102DFFFE6CF20000000
+000004410021001200151002430000000454001300000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_EMBER(_alias) ENTITY(rectangle,black,ember,_alias,DEV EMBER)
+!define DEV_EMBER(_alias,_label) ENTITY(rectangle,black,ember,_label,_alias,DEV EMBER)
+!define DEV_EMBER(_alias,_label,_shape) ENTITY(_shape,black,ember,_label,_alias,DEV EMBER)
+!define DEV_EMBER(_alias,_label,_shape,_color) ENTITY(_shape,_color,ember,_label,_alias,DEV EMBER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/envato.puml b/stdlib/devicons/envato.puml
new file mode 100644
index 000000000..5cd3d69c2
--- /dev/null
+++ b/stdlib/devicons/envato.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $envato [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000002589950000000000000
+000000000000000000000000001AEFFFFFF6000000000000
+00000000000000000000000005FFFFFFFFFE000000000000
+0000000000000000000000007FFFFFFFFFFF600000000000
+000000000000000000000008FFFFFFFFFFFFC00000000000
+00000000000000000000009FFFFFFFFFFFFFF20000000000
+0000000000000000000008FFFFFFFFFFFFFFF70000000000
+000000000000000000005FFFFFFFFFFFFFFFFB0000000000
+00000000000000000002FFFFFFFFFFFFFFFFFE0000000000
+0000000000000700000BFFFFFFFFFFFFFFFFFF2000000000
+000000000000AF00004FFFFFFFFFFFFFFFFFFF5000000000
+000000000006FC0000DFFFFFFFFFFFFFFFFFFF8000000000
+00000000001FF90004FFFFFFFFFFFFFFFFFFFF9000000000
+00000000009FF6000AFFFFFFFFFFFFFFFFFFFFB000000000
+0000000000FFF5001FFFFFFFFFFFFFFFFFFFFFD000000000
+0000000005FFF5005FFFFFFFFFFFFFFFFFFFFFE000000000
+0000000009FFF6009FFFFFFFFFFFFFFFFFFFFFE000000000
+000000000CFFFA00DFFFFFFFFFFFFFFFFFFFFFE000000000
+000000000EFFFD00FFFFFFFFFFFFFFFFFFFFFFE000000000
+000000000EFFFF31FFFFFFFFFFFFFFFFFFFFFFD000000000
+000000000EFFFF92FFFFFFFFFFFFFFFFFFFFFFC000000000
+000000000CFFFFFAFFFFFFFFFFFFFFFFFFFFFFA000000000
+0000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000
+0000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000
+0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000
+0000000000BFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000
+00000000003FFFFFFFFFFFFFFFFFFFFFFFFFF10000000000
+000000000009FFFFFFFFFFFFFFFFFFFFFFFF800000000000
+000000000001EFFFFFFFFFFFFFFFFFFFFFFD000000000000
+0000000000002EFFFFFFFFFFFFFFFFFFFFE2000000000000
+00000000000003FFFFFFFFFFFFFFFFFFFD20000000000000
+000000000000002DFFFFFFFFFFFFFFFFB100000000000000
+00000000000000008FFFFFFFFFFFFFE50000000000000000
+0000000000000000017DFFFFFFFFC5000000000000000000
+000000000000000000000466663000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ENVATO(_alias) ENTITY(rectangle,black,envato,_alias,DEV ENVATO)
+!define DEV_ENVATO(_alias,_label) ENTITY(rectangle,black,envato,_label,_alias,DEV ENVATO)
+!define DEV_ENVATO(_alias,_label,_shape) ENTITY(_shape,black,envato,_label,_alias,DEV ENVATO)
+!define DEV_ENVATO(_alias,_label,_shape,_color) ENTITY(_shape,_color,envato,_label,_alias,DEV ENVATO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/erlang.puml b/stdlib/devicons/erlang.puml
new file mode 100644
index 000000000..7e2a73bd1
--- /dev/null
+++ b/stdlib/devicons/erlang.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $erlang [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+002CCCCC30000000000000011000000000000004CCCCC000
+003FFFFA00000000000007EFFFA2000000000000BFFFF000
+003FFFE1000000000000CFFFFFFE2000000000002FFFF000
+003FFF6000000000000AFFFFFFFFC000000000000BFFF000
+003FFE0000000000003FFFFFFFFFF4000000000005FFF000
+003FF80000000000007FFFFFFFFFF7000000000001FFF000
+003FF2000000000000244444444442000000000000EFF000
+003FE0000000000000000000000000000000000000AFF000
+003FA00000000000000000000000000000000000009FF000
+003F700000000000000000000000000000000000008FF000
+003F500000000000000000000000000000000000008FF000
+003F400000000000000000000000000000000000007FF000
+003F40000000000000888888888888888888888888CFF000
+003F40000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFF000
+003F40000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFF000
+003F60000000000000DFFFFFFFFFFFFFFFFFFFFFFFFFF000
+003F80000000000000BFFFFFFFFFFFFFFFFFFFFFFFFFF000
+003FB00000000000008FFFFFFFFFFFFFFFFFFFFFFFFFF000
+003FE00000000000003FFFFFFFFFFFFFFFFFE8FFFFFFF000
+003FF30000000000000EFFFFFFFFFFFFFFFF4018FFFFF000
+003FF800000000000007FFFFFFFFFFFFFFF8000018FFF000
+003FFE00000000000000EFFFFFFFFFFFFFB00000001CF000
+003FFF600000000000003FFFFFFFFFFFFA000000003FF000
+003FFFE000000000000003EFFFFFFFFF7000000000CFF000
+003FFFF90000000000000018EFFFFE920000000007FFF000
+003FFFFF500000000000000001332000000000004FFFF000
+002BBBBBB1000000000000000000000000000001BBBBB000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ERLANG(_alias) ENTITY(rectangle,black,erlang,_alias,DEV ERLANG)
+!define DEV_ERLANG(_alias,_label) ENTITY(rectangle,black,erlang,_label,_alias,DEV ERLANG)
+!define DEV_ERLANG(_alias,_label,_shape) ENTITY(_shape,black,erlang,_label,_alias,DEV ERLANG)
+!define DEV_ERLANG(_alias,_label,_shape,_color) ENTITY(_shape,_color,erlang,_label,_alias,DEV ERLANG)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/extjs.puml b/stdlib/devicons/extjs.puml
new file mode 100644
index 000000000..bd0688c66
--- /dev/null
+++ b/stdlib/devicons/extjs.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $extjs [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000018700000000000000000000000
+0000000000000000000000DFFE0000000000000000000000
+0000000000000000000005FFFF5000000000000000000000
+000000000000000230002DFFFFE200022000000000000000
+000000000000006FFB8AFFFFFFFFA8CFF600000000000000
+00000000000002FFFFFFFFFFFFFFFFFFFF20000000000000
+00000000000003FFFFFFFB7557CFFFFFFF30000000000000
+00000000000000CFFFFC20000003DFFFFC00000000000000
+000000000000008FFFA0000000000AFFF800000000000000
+000000000000009FFC000000000000CFF900000000000000
+00000000000000EFF30000000000003FFE00000000000000
+0000000000001BFFB00000000000000CFFB0000000000000
+000000000009FFFF7000000000000007FFFF700000000000
+00000000006FFFFF4000000000000005FFFFF30000000000
+00000000006FFFFF3000000000000004FFFFF60000000000
+00000000001FFFFF5000000000000005FFFFF30000000000
+000000000003BFFF8000000110000008FFFC400000000000
+00000000000007FFD000001CC100000EFF70000000000000
+00000000000000DFF50001CFFC10006FFC00000000000000
+000000000000009FFB001CFFFFC100BFF900000000000000
+000000000000009FC101CFFFFFFC101CFA00000000000000
+00000000000000ED101CFFFFFFFFC100BE00000000000000
+00000000000004D101CFFFFFFFFFFC100B30000000000000
+00000000000000100CFFFFFFFFFFFFC10000000000000000
+0000000000000001CFFFFFFFFFFFFFFD1000000000000000
+000000000000001CFFFFFFFFFFFFFFFFD100000000000000
+000000000000003666666666666666666300000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_EXTJS(_alias) ENTITY(rectangle,black,extjs,_alias,DEV EXTJS)
+!define DEV_EXTJS(_alias,_label) ENTITY(rectangle,black,extjs,_label,_alias,DEV EXTJS)
+!define DEV_EXTJS(_alias,_label,_shape) ENTITY(_shape,black,extjs,_label,_alias,DEV EXTJS)
+!define DEV_EXTJS(_alias,_label,_shape,_color) ENTITY(_shape,_color,extjs,_label,_alias,DEV EXTJS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/firebase.puml b/stdlib/devicons/firebase.puml
new file mode 100644
index 000000000..9e9299869
--- /dev/null
+++ b/stdlib/devicons/firebase.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $firebase [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000002589BBBBB9864100000000000000000
+0000000000000028DFFCBCDDDEFFFFFC5000000000000000
+00000000000006FFE710000027ADFFFFFC10000000000000
+0000000000002FFB10000006BFFFFEBBEFB0000000000000
+0000000000005FE1000000BFFFFFFFFF5BF0000000000000
+0000000000005F500000007FFFFFFFF926F0000000000000
+0000000000005F40000000013344210005F0000000000000
+0000000000005F30000000000000000005F1000000000000
+0000000000004F50000000000000000005F1000000000000
+0000000000003FB0000000000000000006F0000000000000
+0000000000000FF600000000000000001CE0000000000000
+0000000000000FFFC85210000000025AFFE0000000000000
+0000000000002FBCFFFFDBBBBBCDFFFFC9F2000000000000
+0000000000003F818CFFFFFFFFFFFFD927F2000000000000
+0000000000003F70000234455543200007F3000000000000
+0000000000002F70000000000000000007F3000000000000
+0000000000000F80000000000000000007F3000000000000
+0000000000000FA0000000000000000009F2000000000000
+0000000000000EFA4100000000000004AFF0000000000000
+0000000000000FCDFFCA97666678ADFFEBF3000000000000
+0000000000000F86FFFFFFFFFFFFFFFE68F5000000000000
+0000000000001F7003579ABBBBBA862007F5000000000000
+0000000000000F70000000000000000007F5000000000000
+0000000000000F70000000000000000008F5000000000000
+0000000000000E80000000000000000008F4000000000000
+00000000000009F600000000000000006EF1000000000000
+00000000000000BFFC864322223468BFFE40000000000000
+00000000000000039DFFFFFFFFFFFFFC7000000000000000
+000000000000000000145688888753000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_FIREBASE(_alias) ENTITY(rectangle,black,firebase,_alias,DEV FIREBASE)
+!define DEV_FIREBASE(_alias,_label) ENTITY(rectangle,black,firebase,_label,_alias,DEV FIREBASE)
+!define DEV_FIREBASE(_alias,_label,_shape) ENTITY(_shape,black,firebase,_label,_alias,DEV FIREBASE)
+!define DEV_FIREBASE(_alias,_label,_shape,_color) ENTITY(_shape,_color,firebase,_label,_alias,DEV FIREBASE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/firefox.puml b/stdlib/devicons/firefox.puml
new file mode 100644
index 000000000..da4a166b3
--- /dev/null
+++ b/stdlib/devicons/firefox.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $firefox [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000000037BBAAABB950000000000000000000
+00000000000000005B83000000026A710000000000000000
+000000000000003C70000000000000571000000000000000
+00000000004007B10000000000000007C341000000000000
+0000000000F4880000189000000000006F9C200000000000
+0000000006FD200006FF20000000000137FAD60000000000
+0000000009B4AEFF6FF60000000000008BCFBF3000000000
+00000000065FFFFEFFF00000000000000BFFFDC000000000
+0000000005FFFFFFFFA311000000000002FFFFF400000000
+000000001FFFFFFFFF8CFFF70000000000AFFFF900000000
+000000008FFFFFFFFF9AFFF500000000005FFFFC00000000
+00000000FFFFFFFFFFE5FC3000000000002FFFFD00000000
+00000004FFFFFFFFFFF7500000000000032FFFFD30000000
+00000008FFFFFFFFDCFF00000000000005CFFFFEB0000000
+00000008FFFFFFE69A4A00000000000003FFFFFFD0000000
+00000009FFFFFF8FFD0000000000000002FFFFFFE0000000
+0000000BFFFFFEBFF80000000000000002FFFFFFE0000000
+0000000BFFFFFBFFF64000000000000004FFFFFFB0000000
+00000006FFFFFDEFF6EB534BFFB100002CFFFFFF60000000
+00000001FFFFFFCFF8BFFFFFFFF600006FFFFFFF00000000
+00000000CFFFFFEFFE5FFFFFF6000000AFFFFFF900000000
+000000008FFFFFFEFF96FFE910000001FFFFFFF500000000
+000000002FFFFFFFFFFA10000000000AFFFFFFF700000000
+000000000BFFFFFFFFFFD95000000ABFFFFFFFF400000000
+0000000002FFFFFFFFFFFFD6448BCFFFFFFFFFD000000000
+00000000008FFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000
+00000000000CFFFFFFFFFFFFFFFFFFFFFFFFF50000000000
+000000000001CFFFFFFFFFFFFFFFFFFFFFFF500000000000
+0000000000000BFFFFFFFFFFFFFFFFFFFFC1000000000000
+000000000000008FFFFFFFFFFFFFFFFFFD00000000000000
+0000000000000003DFFFFFFFFFFFFFFFD100000000000000
+000000000000000004CFFFFFFFFFFD940000000000000000
+00000000000000000002559CB65300000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_FIREFOX(_alias) ENTITY(rectangle,black,firefox,_alias,DEV FIREFOX)
+!define DEV_FIREFOX(_alias,_label) ENTITY(rectangle,black,firefox,_label,_alias,DEV FIREFOX)
+!define DEV_FIREFOX(_alias,_label,_shape) ENTITY(_shape,black,firefox,_label,_alias,DEV FIREFOX)
+!define DEV_FIREFOX(_alias,_label,_shape,_color) ENTITY(_shape,_color,firefox,_label,_alias,DEV FIREFOX)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/fsharp.puml b/stdlib/devicons/fsharp.puml
new file mode 100644
index 000000000..722057220
--- /dev/null
+++ b/stdlib/devicons/fsharp.puml
@@ -0,0 +1,68 @@
+@startuml
+sprite $fsharp [48x57/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000050040000000000000000000000
+0000000000000000000006F00F5000000000000000000000
+000000000000000000006FF00FF500000000000000000000
+00000000000000000006FFF00FFF50000000000000000000
+0000000000000000006FFFF00FFFF5000000000000000000
+000000000000000005FFFFF00FFFFF400000000000000000
+00000000000000006FFFFFF00FFFFFF50000000000000000
+0000000000000006FFFFFFF00FFFFFFF5000000000000000
+000000000000006FFFFFFFF00FFFFFFFF500000000000000
+00000000000006FFFFFFFFF00FFFFFFFFF40000000000000
+0000000000006FFFFFFFFFF00FFFFFFFFFF4000000000000
+000000000005FFFFFFFFFF800AFFFFFFFFFF400000000000
+00000000006FFFFFFFFFF800009FFFFFFFFFF40000000000
+0000000006FFFFFFFFFF8000000AFFFFFFFFFF4000000000
+000000005FFFFFFFFFF800400000AFFFFFFFFFF400000000
+00000006FFFFFFFFFF8005F000000AFFFFFFFFFF40000000
+0000006FFFFFFFFFF8005FF0000000AFFFFFFFFFF4000000
+000006FFFFFFFFFF8006FFF00000000AFFFFFFFFFF400000
+00005FFFFFFFFFF8005FFFF000000000AFFFFFFFFFF40000
+0006FFFFFFFFFF8006FFFFF0000000000AFFFFFFFFFF4000
+006FFFFFFFFFF8006FFFFFF00000000000AFFFFFFFFFF400
+05FFFFFFFFFF8005FFFFFFF000000000000AFFFFFFFFFF40
+04FFFFFFFFFF9004FFFFFFF0000000000009FFFFFFFFFF40
+004FFFFFFFFFFA003FFFFFF00000000000AFFFFFFFFFF400
+0004FFFFFFFFFFA003FFFFF0000000000AFFFFFFFFFF4000
+00004FFFFFFFFFFA003FFFF000000000AFFFFFFFFFF40000
+000004FFFFFFFFFFA004FFF00000000AFFFFFFFFFF400000
+0000004FFFFFFFFFFA004FF0000000AFFFFFFFFFF4000000
+00000004FFFFFFFFFFA004F000000AFFFFFFFFFF40000000
+000000005FFFFFFFFFF9004000009FFFFFFFFFF500000000
+0000000004FFFFFFFFFFA000000AFFFFFFFFFF4000000000
+00000000004FFFFFFFFFFA00009FFFFFFFFFF40000000000
+000000000005FFFFFFFFFF9009FFFFFFFFFF500000000000
+0000000000004FFFFFFFFFF00FFFFFFFFFF5000000000000
+00000000000004FFFFFFFFF00FFFFFFFFF50000000000000
+000000000000004FFFFFFFF00FFFFFFFF400000000000000
+0000000000000004FFFFFFF00FFFFFFF4000000000000000
+00000000000000004FFFFFF00FFFFFF40000000000000000
+000000000000000005FFFFF00FFFFF500000000000000000
+0000000000000000004FFFF00FFFF4000000000000000000
+00000000000000000004FFF00FFF40000000000000000000
+000000000000000000004FF00FF400000000000000000000
+0000000000000000000005F00F4000000000000000000000
+000000000000000000000050050000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_FSHARP(_alias) ENTITY(rectangle,black,fsharp,_alias,DEV FSHARP)
+!define DEV_FSHARP(_alias,_label) ENTITY(rectangle,black,fsharp,_label,_alias,DEV FSHARP)
+!define DEV_FSHARP(_alias,_label,_shape) ENTITY(_shape,black,fsharp,_label,_alias,DEV FSHARP)
+!define DEV_FSHARP(_alias,_label,_shape,_color) ENTITY(_shape,_color,fsharp,_label,_alias,DEV FSHARP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ghost.puml b/stdlib/devicons/ghost.puml
new file mode 100644
index 000000000..3fd4371c3
--- /dev/null
+++ b/stdlib/devicons/ghost.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ghost [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000009E00000000000000000000000000
+00000000000000000000AF1000000000000000000000B400
+00000000000000000000AF2000000000000000000004F600
+49999209400001787243AF2685000058730002797119FA61
+6DDDD40D70001EFCEFF6AFEFFF901DFEFF804FFEF7BFFFF4
+0000000000007F401FB0AF800EF09F700CF39F300008F710
+2666666630008F200FB0AF200CF1EF0006F88FC50007F700
+7FFFFFFF80003FC8BF60AF200CF2FE0004FA09FFE407F700
+0222222210000BFDB600AF200BF2EF0006F80017FD06F700
+0221012210003F600000AF200BF38F801DF21201FC06F800
+7FFA09FF80001FFFDC70AF200BF30CFFFF70AFFFF401FFF4
+1442024420004F868CF63500035100465100046510001640
+000000000000CE0004F70000000000000000000000000000
+000000000000AFA78EE10000000000000000000000000000
+00000000000009CCB7100000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GHOST(_alias) ENTITY(rectangle,black,ghost,_alias,DEV GHOST)
+!define DEV_GHOST(_alias,_label) ENTITY(rectangle,black,ghost,_label,_alias,DEV GHOST)
+!define DEV_GHOST(_alias,_label,_shape) ENTITY(_shape,black,ghost,_label,_alias,DEV GHOST)
+!define DEV_GHOST(_alias,_label,_shape,_color) ENTITY(_shape,_color,ghost,_label,_alias,DEV GHOST)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ghost_small.puml b/stdlib/devicons/ghost_small.puml
new file mode 100644
index 000000000..96f1ecfa3
--- /dev/null
+++ b/stdlib/devicons/ghost_small.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ghost_small [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000001111111111111111111000000001111100000000
+0000000BFFFFFFFFFFFFFFFFFFF2000000AFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFF2000000AFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFF2000000AFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFF2000000AFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFF2000000AFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFF2000000AFFFFFB0000000
+000000034444444444444444444000000024444430000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000068888888888888888888888888888888860000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+00000009DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD90000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000BFFFFFFFFFFFF60000006FFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFF60000006FFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFF60000006FFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFF60000006FFFFFFFFFFFFB0000000
+0000000BFFFFFFFFFFFF60000006FFFFFFFFFFFFB0000000
+0000000AEEEEEEEEEEEE60000006EEEEEEEEEEEEA0000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GHOST_SMALL(_alias) ENTITY(rectangle,black,ghost_small,_alias,DEV GHOST_SMALL)
+!define DEV_GHOST_SMALL(_alias,_label) ENTITY(rectangle,black,ghost_small,_label,_alias,DEV GHOST_SMALL)
+!define DEV_GHOST_SMALL(_alias,_label,_shape) ENTITY(_shape,black,ghost_small,_label,_alias,DEV GHOST_SMALL)
+!define DEV_GHOST_SMALL(_alias,_label,_shape,_color) ENTITY(_shape,_color,ghost_small,_label,_alias,DEV GHOST_SMALL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/git.puml b/stdlib/devicons/git.puml
new file mode 100644
index 000000000..285575032
--- /dev/null
+++ b/stdlib/devicons/git.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $git [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000006500000000000000000000000
+0000000000000000000001DFFC0000000000000000000000
+000000000000000000001DFFFFC100000000000000000000
+00000000000000000001DFFFFFFC10000000000000000000
+00000000000000000005FFFFFFFFC0000000000000000000
+000000000000000001006FFFFFFFFC100000000000000000
+00000000000000002EA005FFFFFFFFD10000000000000000
+0000000000000001DFFA005FFFFFFFFC1000000000000000
+000000000000001DFFFF900007FFFFFFC100000000000000
+00000000000001DFFFFFF800009FFFFFFC10000000000000
+0000000000001DFFFFFFF800005FFFFFFFC1000000000000
+000000000001DFFFFFFFFB00004FFFFFFFFC100000000000
+00000000001DFFFFFFFFFF700006FFFFFFFFC10000000000
+0000000001DFFFFFFFFFFFF106006FFFFFFFFC1000000000
+000000002EFFFFFFFFFFFFF10CA005FFFFFFFFD100000000
+00000001DFFFFFFFFFFFFFF10CF900117FFFFFFC10000000
+0000000AFFFFFFFFFFFFFFF10CFF800009FFFFFFA0000000
+0000000DFFFFFFFFFFFFFFF10CFF900005FFFFFFD0000000
+00000009FFFFFFFFFFFFFFF10CFFB00008FFFFFF90000000
+00000000BFFFFFFFFFFFFFF10CFFF7004FFFFFFC00000000
+000000000BFFFFFFFFFFFFF10CFFFFEEFFFFFFC000000000
+0000000000AFFFFFFFFFFFF10CFFFFFFFFFFFB0000000000
+00000000000BFFFFFFFFFFA007FFFFFFFFFFC00000000000
+000000000000BFFFFFFFFC0000AFFFFFFFFC000000000000
+0000000000000BFFFFFFF800006FFFFFFFC0000000000000
+00000000000000BFFFFFFA00008FFFFFFC00000000000000
+000000000000000BFFFFFF5004FFFFFFC000000000000000
+0000000000000000BFFFFFFEDFFFFFFC0000000000000000
+00000000000000000AFFFFFFFFFFFFB00000000000000000
+000000000000000000AFFFFFFFFFFB000000000000000000
+0000000000000000000AFFFFFFFFB0000000000000000000
+00000000000000000000AFFFFFFB00000000000000000000
+000000000000000000000AFFFFB000000000000000000000
+0000000000000000000000AFFB0000000000000000000000
+000000000000000000000003300000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GIT(_alias) ENTITY(rectangle,black,git,_alias,DEV GIT)
+!define DEV_GIT(_alias,_label) ENTITY(rectangle,black,git,_label,_alias,DEV GIT)
+!define DEV_GIT(_alias,_label,_shape) ENTITY(_shape,black,git,_label,_alias,DEV GIT)
+!define DEV_GIT(_alias,_label,_shape,_color) ENTITY(_shape,_color,git,_label,_alias,DEV GIT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/git_branch.puml b/stdlib/devicons/git_branch.puml
new file mode 100644
index 000000000..6fb3d9b23
--- /dev/null
+++ b/stdlib/devicons/git_branch.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $git_branch [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000004ACB7100000000000000000000000000000
+000000000001BFFFFFF50000000000000000000000000000
+00000000000BFFFFFFFF3000000000000000000000000000
+00000000004FFE4019FFC000000000000000000000000000
+00000000009FF50000DFF100000000000000000000000000
+0000000000BFF000008FF300000000044200000000000000
+0000000000AFF20000AFF200000008FFFFD3000000000000
+00000000006FFB0004FFE0000000CFFFFFFF400000000000
+00000000000EFFEABFFF60000008FFF97CFFF10000000000
+000000000003EFFFFFF90000000FFF2000AFF70000000000
+0000000000002FFFFF900000003FFA00002FFA0000000000
+0000000000000FFFFF800000003FF900001FFB0000000000
+0000000000000FFFFF800000001FFD00006FF80000000000
+0000000000000FFFFF800000000BFFC327FFF20000000000
+0000000000000FFFFF8000000001EFFFFFFF800000000000
+0000000000000FFFFF80000000002DFFFFF8000000000000
+0000000000000FFFFF800000000008FFFFF0000000000000
+0000000000000FFFFF800000000009FFFFE0000000000000
+0000000000000FFFFF80000000000DFFFFC0000000000000
+0000000000000FFFFF80000000004FFFFF80000000000000
+0000000000000FFFFF8000000001DFFFFF40000000000000
+0000000000000FFFFF800000005EFFFFFD00000000000000
+0000000000000FFFFF8159CCEFFFFFFFF500000000000000
+0000000000000FFFFFDFFFFFFFFFFFFFB000000000000000
+0000000000000FFFFFFFFFFFFFFFFFFD1000000000000000
+0000000000000FFFFFFFFFFFFFFFFFC10000000000000000
+0000000000000FFFFFFFFFFFFFFFD6000000000000000000
+0000000000000FFFFFFFFFDCA97300000000000000000000
+0000000000003FFFFFFFC200000000000000000000000000
+000000000004FFFFFFFF0000000000000000000000000000
+00000000001EFFC79FFF8000000000000000000000000000
+00000000007FFA0002FFE000000000000000000000000000
+0000000000AFF20000AFF200000000000000000000000000
+0000000000BFF100009FF300000000000000000000000000
+00000000009FF60000DFF100000000000000000000000000
+00000000003FFF723CFFB000000000000000000000000000
+000000000009FFFFFFFE2000000000000000000000000000
+0000000000008FFFFFD20000000000000000000000000000
+000000000000028A95000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GIT_BRANCH(_alias) ENTITY(rectangle,black,git_branch,_alias,DEV GIT_BRANCH)
+!define DEV_GIT_BRANCH(_alias,_label) ENTITY(rectangle,black,git_branch,_label,_alias,DEV GIT_BRANCH)
+!define DEV_GIT_BRANCH(_alias,_label,_shape) ENTITY(_shape,black,git_branch,_label,_alias,DEV GIT_BRANCH)
+!define DEV_GIT_BRANCH(_alias,_label,_shape,_color) ENTITY(_shape,_color,git_branch,_label,_alias,DEV GIT_BRANCH)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/git_commit.puml b/stdlib/devicons/git_commit.puml
new file mode 100644
index 000000000..41e1b0397
--- /dev/null
+++ b/stdlib/devicons/git_commit.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $git_commit [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000001100000000000000000000000
+000000000000000000017CFFFFC710000000000000000000
+0000000000000000005FFFFFFFFFE5000000000000000000
+000000000000000008FFFFFFFFFFFF800000000000000000
+00000000000000007FFFFFFFFFFFFFF70000000000000000
+0000000000000002FFFFFFEAAEFFFFFF2000000000000000
+000000000000000AFFFFF500005FFFFFA000000000000000
+000000000000001FFFFF40000004FFFFF100000000000000
+0000000CFFFFFFFFFFFA00000000AFFFFFFFFFFFC0000000
+0000000CFFFFFFFFFFF5000000005FFFFFFFFFFFC0000000
+0000000CFFFFFFFFFFF3000000003FFFFFFFFFFFC0000000
+0000000CFFFFFFFFFFF5000000005FFFFFFFFFFFC0000000
+00000009CCCCCCDFFFFB00000000BFFFFDCCCCCC90000000
+000000000000000FFFFF50000005FFFFF000000000000000
+0000000000000009FFFFF810018FFFFF9000000000000000
+0000000000000001FFFFFFFDDFFFFFFF1000000000000000
+00000000000000005FFFFFFFFFFFFFF50000000000000000
+000000000000000006FFFFFFFFFFFF600000000000000000
+0000000000000000003DFFFFFFFFD3000000000000000000
+000000000000000000005AEFFEA500000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GIT_COMMIT(_alias) ENTITY(rectangle,black,git_commit,_alias,DEV GIT_COMMIT)
+!define DEV_GIT_COMMIT(_alias,_label) ENTITY(rectangle,black,git_commit,_label,_alias,DEV GIT_COMMIT)
+!define DEV_GIT_COMMIT(_alias,_label,_shape) ENTITY(_shape,black,git_commit,_label,_alias,DEV GIT_COMMIT)
+!define DEV_GIT_COMMIT(_alias,_label,_shape,_color) ENTITY(_shape,_color,git_commit,_label,_alias,DEV GIT_COMMIT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/git_compare.puml b/stdlib/devicons/git_compare.puml
new file mode 100644
index 000000000..64172cc6d
--- /dev/null
+++ b/stdlib/devicons/git_compare.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $git_compare [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000030000000000000000000
+0000000000000000000000000008B0000000000000000000
+000000000000000000000000008FB0000000000000000000
+00000000018CDA300000000007FFB0000000000000000000
+000000003EFFFFF7000000007FFFB0000000000000000000
+00000000DFFBAFFF30000007FFFFFFFFD820000000000000
+00000005FF6002EFA000007FFFFFFFFFFFF9000000000000
+00000008FE00008FD00002FFFFFFFFFFFFFFA00000000000
+00000007FE00009FD000004FFFFFFFFFFFFFF50000000000
+00000003FF7002FF80000004FFFFEAACFFFFFC0000000000
+00000000AFFDCFFE100000004FFFB0005FFFFF0000000000
+000000000BFFFFE30000000004FFB0000BFFFF2000000000
+0000000002FFFF8000000000004FB00008FFFF2000000000
+0000000002FFFF80000000000003A00008FFFF2000000000
+0000000002FFFF80000000000000100008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000000000000000008FFFF2000000000
+0000000002FFFF80000200000000000008FFFF2000000000
+0000000002FFFF80000B60000000000008FFFF2000000000
+0000000002FFFF80000BF5000000000008FFFF2000000000
+0000000002FFFFC0000BFF50000000005FFFFFD100000000
+0000000000FFFFF7000BFFF500000002FFFBCFFC00000000
+0000000000BFFFFFFEEFFFFF50000009FE2006FF30000000
+00000000004FFFFFFFFFFFFFF500000DF80000EF70000000
+000000000008FFFFFFFFFFFFFF20000DF80000EF70000000
+0000000000006FFFFFFFFFFFF500000AFE2006FF40000000
+000000000000016BCCCFFFFF50000003FFFBCFFC00000000
+0000000000000000000BFFF5000000005FFFFFD100000000
+0000000000000000000BFF5000000000028AA60000000000
+0000000000000000000BF500000000000000000000000000
+0000000000000000000B5000000000000000000000000000
+000000000000000000020000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GIT_COMPARE(_alias) ENTITY(rectangle,black,git_compare,_alias,DEV GIT_COMPARE)
+!define DEV_GIT_COMPARE(_alias,_label) ENTITY(rectangle,black,git_compare,_label,_alias,DEV GIT_COMPARE)
+!define DEV_GIT_COMPARE(_alias,_label,_shape) ENTITY(_shape,black,git_compare,_label,_alias,DEV GIT_COMPARE)
+!define DEV_GIT_COMPARE(_alias,_label,_shape,_color) ENTITY(_shape,_color,git_compare,_label,_alias,DEV GIT_COMPARE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/git_merge.puml b/stdlib/devicons/git_merge.puml
new file mode 100644
index 000000000..1e4efd006
--- /dev/null
+++ b/stdlib/devicons/git_merge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $git_merge [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000017BB8200000000000000000000000000000000
+0000000007FFFFFF80000000000000000000000000000000
+000000006FFFFFFFF7000000000000000000000000000000
+00000000EFF7107FFF100000000000000000000000000000
+00000004FFA00009FF500000000000000000000000000000
+00000006FF500004FF700000000000000000000000000000
+00000005FF700006FF600000000000000000000000000000
+00000001FFE2001EFF200000000000000000000000000000
+00000000AFFFAAEFFB000000000000000000000000000000
+000000000CFFFFFFD1000000000000000000000000000000
+0000000000CFFFFFE0000000000000000000000000000000
+0000000000BFFFFFF5000000000000000000000000000000
+0000000000BFFFFFFE100000000000000000000000000000
+0000000000BFFFFFFF900000000000000000000000000000
+0000000000BFFFFFFFF70000000000000000000000000000
+0000000000BFFFFFFFFF6000000000000000000000000000
+0000000000BFFFFFFFFFF800000000000134100000000000
+0000000000BFFFFFFFFFFFD300000001BFFFFA1000000000
+0000000000BFFFFEFFFFFFFFB400002EFFFFFFE100000000
+0000000000BFFFFC4FFFFFFFFFFCA9CFFD88EFFB00000000
+0000000000BFFFFC03EFFFFFFFFFFFFFD0001EFF20000000
+0000000000BFFFFC001BFFFFFFFFFFFF500006FF60000000
+0000000000BFFFFC00005DFFFFFFFFFF400006FF60000000
+0000000000BFFFFC0000005CFFFFFFFFA0000BFF30000000
+0000000000BFFFFC00000000169CDDFFF933AFFD00000000
+0000000000BFFFFC000000000000005FFFFFFFF400000000
+0000000000BFFFFC0000000000000005FFFFFE4000000000
+0000000000BFFFFC00000000000000001699610000000000
+0000000001DFFFFE10000000000000000000000000000000
+000000001EFFFFFFE2000000000000000000000000000000
+00000000BFFE87DFFC000000000000000000000000000000
+00000002FFD0000CFF300000000000000000000000000000
+00000005FF600005FF600000000000000000000000000000
+00000006FF600004FF700000000000000000000000000000
+00000003FFB0000AFF400000000000000000000000000000
+00000000DFFB33AFFE000000000000000000000000000000
+000000004FFFFFFFF5000000000000000000000000000000
+0000000004EFFFFE50000000000000000000000000000000
+000000000005996000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GIT_MERGE(_alias) ENTITY(rectangle,black,git_merge,_alias,DEV GIT_MERGE)
+!define DEV_GIT_MERGE(_alias,_label) ENTITY(rectangle,black,git_merge,_label,_alias,DEV GIT_MERGE)
+!define DEV_GIT_MERGE(_alias,_label,_shape) ENTITY(_shape,black,git_merge,_label,_alias,DEV GIT_MERGE)
+!define DEV_GIT_MERGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,git_merge,_label,_alias,DEV GIT_MERGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/git_pull_request.puml b/stdlib/devicons/git_pull_request.puml
new file mode 100644
index 000000000..5c25a7ba1
--- /dev/null
+++ b/stdlib/devicons/git_pull_request.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $git_pull_request [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000004000000000000000000000
+0000000000000000000000000B8000000000000000000000
+000000000000022000000000BF8000000000000000000000
+00000000001BFFFE6000000BFF8000000000000000000000
+0000000002EFFFFFF80000BFFF8000000000000000000000
+000000000CFFB68FFF300BFFFFDAA9840000000000000000
+000000002FFA0003FFA0BFFFFFFFFFFFE500000000000000
+000000005FF40000CFDBFFFFFFFFFFFFFF90000000000000
+000000004FF40000CFC8FFFFFFFFFFFFFFF8000000000000
+000000001FFC0005FF908FFFFFFFFFFFFFFF100000000000
+0000000009FFEABFFF2008FFFFB668DFFFFF700000000000
+0000000000CFFFFFF500008FFF80001EFFFFA00000000000
+00000000000DFFFF50000008FF800007FFFFC00000000000
+00000000000CFFFF500000008F800005FFFFC00000000000
+00000000000CFFFF5000000007800005FFFFC00000000000
+00000000000CFFFF5000000000200005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000000CFFFF5000000000000005FFFFC00000000000
+00000000005FFFFFC10000000000001CFFFFF50000000000
+0000000005FFFFFFFC000000000000CFFFFFFF5000000000
+000000000EFF502BFF600000000006FFB205FFE000000000
+000000003FF70000EFB0000000000BFE00007FF300000000
+000000005FF30000BFD0000000000DFB00003FF500000000
+000000004FF70000EFC0000000000CFE00007FF300000000
+000000000EFF401BFF700000000007FFA104FFE000000000
+0000000006FFFFFFFD000000000000DFFFFFFF5000000000
+00000000007FFFFFC20000000000002CFFFFF70000000000
+000000000001798400000000000000004896100000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GIT_PULL_REQUEST(_alias) ENTITY(rectangle,black,git_pull_request,_alias,DEV GIT_PULL_REQUEST)
+!define DEV_GIT_PULL_REQUEST(_alias,_label) ENTITY(rectangle,black,git_pull_request,_label,_alias,DEV GIT_PULL_REQUEST)
+!define DEV_GIT_PULL_REQUEST(_alias,_label,_shape) ENTITY(_shape,black,git_pull_request,_label,_alias,DEV GIT_PULL_REQUEST)
+!define DEV_GIT_PULL_REQUEST(_alias,_label,_shape,_color) ENTITY(_shape,_color,git_pull_request,_label,_alias,DEV GIT_PULL_REQUEST)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/github.puml b/stdlib/devicons/github.puml
new file mode 100644
index 000000000..3b01b7732
--- /dev/null
+++ b/stdlib/devicons/github.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $github [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000134431000000000000000000000
+0000000000000000005BEFFFFFFEA5000000000000000000
+00000000000000018EFFFFFFFFFFFFE80000000000000000
+000000000000005EFFFFFFFFFFFFFFFFE500000000000000
+00000000000009FFFFFFFB9779BFFFFFFF90000000000000
+000000000000AFFFFFA4000000004AFFFFFA000000000000
+00000000000AFFFFC30000000000003CFFFFA00000000000
+00000000007FFFF900000000000000009FFFF70000000000
+0000000002FFFF90000000000000000009FFFF2000000000
+000000000BFFFB00000000000000000000BFFFB000000000
+000000003FFFF1000571000000001650001FFFF300000000
+00000000AFFF70000CFF70000007FFC00007FFFA00000000
+00000000FFFF00000FFFFEDEEDEFFFF00000FFFF00000000
+00000004FFFA00000FFFFFFFFFFFFFF00000AFFF40000000
+00000007FFF500002FFFFFFFFFFFFFF200005FFF70000000
+00000009FFF20000CFFFFFFFFFFFFFFC00003FFF90000000
+0000000BFFF10002FFFFFFFFFFFFFFFF20001FFFA0000000
+0000000BFFF00005FFE7333444336EFF50000FFFB0000000
+0000000AFFF10005FF502400004204FF50001FFFA0000000
+00000009FFF30003FF00EF2002FE00FF30003FFF90000000
+00000006FFF60000FF00FF3003FF00EF00006FFF60000000
+00000003FFFB00009F208B0000B802F80000BFFF30000000
+00000000EFFF10000CC1000000001CC00001FFFE00000000
+000000009FFF8000009FB765567BF9000008FFF900000000
+000000002FFFF2000001477777741000002FFFF200000000
+000000000AFFFD00000000000000000000DFFF9000000000
+0000000001FFFFB000000000000000000BFFFE1000000000
+00000000004FFFFC1000000000000001CFFFF40000000000
+000000000007FFFFE50000000000005EFFFF700000000000
+0000000000008FFFFFC6100000016CFFFFF8000000000000
+00000000000006FFFFFFFDB99BDFFFFFFF60000000000000
+000000000000003CFFFFFFFFFFFFFFFFC300000000000000
+00000000000000005DFFFFFFFFFFFFD50000000000000000
+00000000000000000038CFFFFFFC83000000000000000000
+000000000000000000000012210000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GITHUB(_alias) ENTITY(rectangle,black,github,_alias,DEV GITHUB)
+!define DEV_GITHUB(_alias,_label) ENTITY(rectangle,black,github,_label,_alias,DEV GITHUB)
+!define DEV_GITHUB(_alias,_label,_shape) ENTITY(_shape,black,github,_label,_alias,DEV GITHUB)
+!define DEV_GITHUB(_alias,_label,_shape,_color) ENTITY(_shape,_color,github,_label,_alias,DEV GITHUB)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/github_alt.puml b/stdlib/devicons/github_alt.puml
new file mode 100644
index 000000000..c4456a7d1
--- /dev/null
+++ b/stdlib/devicons/github_alt.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $github_alt [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000001B830000000000000000000038B10000000000
+00000000006FFFD500000000000000005CFFF60000000000
+0000000000BFFFFFC30000000000003CFFFFFB0000000000
+0000000000EFFFFFFF913667766319FFFFFFFE0000000000
+0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+0000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFF2000000000
+0000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000
+0000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000
+0000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000000
+000000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200000000
+00000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000000
+00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000000
+00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000000
+0000000BFFFFFFFFFDEFFFFFFFFFEEEEFFFFFFFFA0000000
+0000000CFFFFFF82000001122100000018FFFFFFC0000000
+0000000DFFFFF4000000000000000000004FFFFFD0000000
+0000000CFFFF800000200000000001100007FFFFC0000000
+0000000BFFFF00004FF9000000009FF40000FFFFB0000000
+00000009FFFC0000EFFF30000004FFFE0000BFFF90000000
+00000006FFFB0002FFFF70000008FFFF2000AFFF50000000
+00000001FFFC0002FFFF80000008FFFF2000BFFF10000000
+00000000CFFE0000EFFF40000004FFFE0000DFFC00000000
+000000005FFF20006FFB00000000BFF60002FFF500000000
+000000000CFF900002400000000004200009FFC000000000
+0000000001EFF5000000000000000000005FFE1000000000
+00000000002DFF92000000000000000029FFD20000000000
+000000000001AFFFD96421000012469DFFF9100000000000
+00000000000003AFFFFFFFFFFFFFFFFFFA30000000000000
+000000000000000036899AAAAAA998630000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GITHUB_ALT(_alias) ENTITY(rectangle,black,github_alt,_alias,DEV GITHUB_ALT)
+!define DEV_GITHUB_ALT(_alias,_label) ENTITY(rectangle,black,github_alt,_label,_alias,DEV GITHUB_ALT)
+!define DEV_GITHUB_ALT(_alias,_label,_shape) ENTITY(_shape,black,github_alt,_label,_alias,DEV GITHUB_ALT)
+!define DEV_GITHUB_ALT(_alias,_label,_shape,_color) ENTITY(_shape,_color,github_alt,_label,_alias,DEV GITHUB_ALT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/github_badge.puml b/stdlib/devicons/github_badge.puml
new file mode 100644
index 000000000..276cc99e8
--- /dev/null
+++ b/stdlib/devicons/github_badge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $github_badge [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000159CEEEEC951000000000000000000
+00000000000000003AFFFFFFFFFFFFA30000000000000000
+000000000000001AFFFFFFFFFFFFFFFFA100000000000000
+00000000000005EFFFFFFFFFFFFFFFFFFE40000000000000
+0000000000006FFFFFFFFFFFFFFFFFFFFFF6000000000000
+000000000007FFFFFFFFFFFFFFFFFFFFFFFF700000000000
+00000000004FFFFFFFFFFFFFFFFFFFFFFFFFF40000000000
+0000000001EFFFF017EFFFFFFFFFFE710FFFFE1000000000
+0000000009FFFFC000088543345880000CFFFF9000000000
+000000002FFFFFA000000000000000000BFFFFF200000000
+000000009FFFFFC000000000000000000CFFFFF900000000
+00000000EFFFFFD000000000000000000DFFFFFE00000000
+00000004FFFFFF30000000000000000003FFFFFF30000000
+00000007FFFFFB00000000000000000000BFFFFF70000000
+0000000AFFFFF6000000000000000000007FFFFFA0000000
+0000000CFFFFF4000000000000000000004FFFFFC0000000
+0000000CFFFFF4000000000000000000004FFFFFC0000000
+0000000CFFFFF6000000000000000000006FFFFFC0000000
+0000000BFFFFF8000000000000000000008FFFFFB0000000
+00000009FFFFFD00000000000000000000DFFFFF90000000
+00000006FFFFFF40000000000000000004FFFFFF50000000
+00000002FFFFFFD100000000000000001DFFFFFF20000000
+00000000DFFFFFFC2000000000000002CFFFFFFD00000000
+000000006FFD7CFFF93000000000039FFFFFFFF600000000
+000000000EFF608FFFFF80000008FFFFFFFFFFE000000000
+0000000006FFF50CFFFF20000002FFFFFFFFFF5000000000
+0000000000BFFE01AEE900000000EFFFFFFFFB0000000000
+00000000001EFF80000000000000DFFFFFFFE10000000000
+000000000002FFF9200000000000DFFFFFFF200000000000
+0000000000002EFFFFFC00000000DFFFFFD2000000000000
+00000000000001BFFFFD00000000DFFFFB10000000000000
+0000000000000004DFFD00000000DFFD4000000000000000
+000000000000000005B8000000008B500000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GITHUB_BADGE(_alias) ENTITY(rectangle,black,github_badge,_alias,DEV GITHUB_BADGE)
+!define DEV_GITHUB_BADGE(_alias,_label) ENTITY(rectangle,black,github_badge,_label,_alias,DEV GITHUB_BADGE)
+!define DEV_GITHUB_BADGE(_alias,_label,_shape) ENTITY(_shape,black,github_badge,_label,_alias,DEV GITHUB_BADGE)
+!define DEV_GITHUB_BADGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,github_badge,_label,_alias,DEV GITHUB_BADGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/github_full.puml b/stdlib/devicons/github_full.puml
new file mode 100644
index 000000000..73ab16d12
--- /dev/null
+++ b/stdlib/devicons/github_full.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $github_full [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0019DEED9100200000000686000686000000000288200000
+02EFFFFFF10EF60011000DFC000CFD0000000004FF500000
+0CFFE989A02FF904FF400DFC000CFD0000000004FF500000
+2FFC000000069104FF400DFC000CFD0000000004FF500000
+6FF50000000BB53AFFCB1DFC000CFD0AA500AA54FFACDB30
+8FF20488851FF8AFFFFF2DFFFFFFFD1FF800FF84FFFFFFE0
+8FF109FFFB1FF849FF970DFFFFFFFD1FF800FF84FF939FF5
+8FF207CFFB1FF804FF400DFD555DFD1FF800FF84FF401FF8
+6FF6000EFB1FF804FF400DFC000CFD1FF800FF84FF400FF8
+2FFD100EFB1FF804FF400DFC000CFD1FF800FF84FF402FF6
+0BFFEBBFFB1FF803FFA50DFC000CFD0FFD58FF84FFA5AFF4
+01DFFFFFFB1FF800EFFF2DFC000CFD0BFFFFFF84FFFFFFE0
+0006ACCB6008840029CA1786000687018CC84842856BC920
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GITHUB_FULL(_alias) ENTITY(rectangle,black,github_full,_alias,DEV GITHUB_FULL)
+!define DEV_GITHUB_FULL(_alias,_label) ENTITY(rectangle,black,github_full,_label,_alias,DEV GITHUB_FULL)
+!define DEV_GITHUB_FULL(_alias,_label,_shape) ENTITY(_shape,black,github_full,_label,_alias,DEV GITHUB_FULL)
+!define DEV_GITHUB_FULL(_alias,_label,_shape,_color) ENTITY(_shape,_color,github_full,_label,_alias,DEV GITHUB_FULL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/gnu.puml b/stdlib/devicons/gnu.puml
new file mode 100644
index 000000000..2bc9de7b8
--- /dev/null
+++ b/stdlib/devicons/gnu.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $gnu [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000034543000000000000002320000000000000
+000000000005436688730000000000366463410000000000
+000000000274BD666431800000003614679E643000000000
+00000000155F835312441000000002443342EA4200000000
+0000000050F94100000024300002410000032F6500000000
+0000000046F230000023133422523230000048C220000000
+0000000308F500000338FFFC4BACFD44000028D040000000
+000000040AC4000024CFFFFFC054DFF6400007E040000000
+0000000409D400024BFFFFFEB021DFFF430017E150000000
+0000000409F51014AFB843401414076BE42048D050000000
+0000000134F8446B91006D00533636208E644EA140000000
+0000000051EFA6F9000657121301B2300CFBFF5500000000
+00000000326FFFE1000200245210844005FFF83300000000
+000000000525AD80000204AF20007F6000D9415000000000
+000000000054072000040036210009500038540000000000
+000000000001590000080000100002640005000000000000
+000000000000060000650000002000735413600000000000
+000000000000240006300000284530165132000000000000
+000000000000702678000000476213000500000000000000
+00000000000668A107000120007410000500000000000000
+000000000001106008000004100010006100000000000000
+000000000000007003300001500000182000000000000000
+000000000000006101910000510000006000000000000000
+0000000000000025001900000555689A3000000000000000
+000000000000000700080000000000050000000000000000
+00000000000000051002A500001468640000000000000000
+000000000000000060000933004774000000000000000000
+000000000000000005001ADB000005000000000000000000
+0000000000000000012004ED200444000000000000000000
+000000000000000000000086E39F60000000000000000000
+000000000000000000000152FAFFC4000000000000000000
+0000000000000000000000037FFFFC100000000000000000
+000000000000000000000000067664000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GNU(_alias) ENTITY(rectangle,black,gnu,_alias,DEV GNU)
+!define DEV_GNU(_alias,_label) ENTITY(rectangle,black,gnu,_label,_alias,DEV GNU)
+!define DEV_GNU(_alias,_label,_shape) ENTITY(_shape,black,gnu,_label,_alias,DEV GNU)
+!define DEV_GNU(_alias,_label,_shape,_color) ENTITY(_shape,_color,gnu,_label,_alias,DEV GNU)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/go.puml b/stdlib/devicons/go.puml
new file mode 100644
index 000000000..94f7e213f
--- /dev/null
+++ b/stdlib/devicons/go.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $go [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000156666666673000000000000000000
+000000000000000046410000000003630340000000000000
+00000000000565682223300001433313B216300000000000
+000000000063008021000400040000313830700000000000
+0000000000606C13000000304120000408C0700000000000
+0000000000606703BD1000303EF400020170700000000000
+0000000000446103FF2000304BE200020087000000000000
+000000000003A00334000030120000120042000000000000
+00000000000070004100047EB23213200004000000000000
+0000000000006000023223BEB50110000006000000000000
+000000000001500000001100003000000006000000000000
+000000000002400000000456442000000006000000000000
+000000000002300000000034030000000006000000000000
+000000000001400000000046340000000006000000000000
+000000000000500000000000000000000006000000000000
+000000000000600000000000000000000006000000000000
+000000000000600000000000000000000005000000000000
+000000000000600000000000000000000006000000000000
+000000000000600000000000000000000006000000000000
+000000000023700000000000000000000006340000000000
+000000000120600000000000000000000006032000000000
+000000000053800000000000000000000006330000000000
+000000000000600000000000000000000006000000000000
+000000000000600000000000000000000006000000000000
+000000000000600000000000000000000006000000000000
+000000000000500000000000000000000005000000000000
+000000000000500000000000000000000005000000000000
+000000000000500000000000000000000005000000000000
+000000000000500000000000000000000006000000000000
+000000000000400000000000000000000007000000000000
+000000000000500000000000000000000006000000000000
+000000000000600000000000000000000015000000000000
+000000000000610000000000000000000060000000000000
+000000000000060000000000000000000160000000000000
+000000000000034000000000000000000800000000000000
+000000000000007510000000000000004500000000000000
+000000000000011032000000000000670040000000000000
+000000000000042145664222234766123140000000000000
+000000000000043300002345431000001330000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GO(_alias) ENTITY(rectangle,black,go,_alias,DEV GO)
+!define DEV_GO(_alias,_label) ENTITY(rectangle,black,go,_label,_alias,DEV GO)
+!define DEV_GO(_alias,_label,_shape) ENTITY(_shape,black,go,_label,_alias,DEV GO)
+!define DEV_GO(_alias,_label,_shape,_color) ENTITY(_shape,_color,go,_label,_alias,DEV GO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/google_analytics.puml b/stdlib/devicons/google_analytics.puml
new file mode 100644
index 000000000..4d5c30f1c
--- /dev/null
+++ b/stdlib/devicons/google_analytics.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $google_analytics [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000012222222222222222222222222210000000000
+000000005EFFFFFFFFFFFFFFFFFFFFFFFFFFFFE500000000
+00000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000
+00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFF6104DFFF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFF400001EFF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFC0000008FF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFA0000006FF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFC0000002DF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFF20000000980000000
+00000008FFFFFFFFFFFFFFFFFFFFFF900115900010000000
+00000008FFFFFFFFFFFFFFFFFFFFFE004FFFFE5000000000
+00000008FFFFFFFFFFFFFFFFFFFFF400EFFFFFFA10000000
+00000008FFFFEBBFFFFFFFFFFFFFA008FFFFFFFF80000000
+00000008FFFA0001CFFFFFFFFFFE103FFFFFFFFF80000000
+00000008FFD000001FFFFFFFFFF500DFFFFFFFFF80000000
+00000008FF8000000BFFFFFFFFA008FFFFFFFFFF80000000
+00000008FF70000007FFFFFFFF103FFFFFFFFFFF80000000
+00000008FF800000004DFFFFF600CFFFFFFFFFFF80000000
+00000008F900000020006EA65007FFFFFFFFFFFF80000000
+000000088002967CF9100000001FFFFFFFFFFFFF80000000
+00000002003EFFFFFFF70000000CFFFFFFFFFFFF80000000
+0000000003FFFFFFFFFF70000008FFFFFFFFFFFF80000000
+000000005FFFFFFFFFFF9000000AFFFFFFFFFFFF80000000
+00000004FFFFFFFFFFFFE100001EFFFFFFFFFFFF80000000
+00000008FFFFFFFFFFFFFB1001CFFFFFFFFFFFFF80000000
+00000008FFFFFFFFFFFFFFFCCFFFFFFFFFFFFFFF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000000
+00000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000000
+000000003CEEEEEEEEEEEEEEEEEEEEEEEEEEEEC300000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GOOGLE_ANALYTICS(_alias) ENTITY(rectangle,black,google_analytics,_alias,DEV GOOGLE_ANALYTICS)
+!define DEV_GOOGLE_ANALYTICS(_alias,_label) ENTITY(rectangle,black,google_analytics,_label,_alias,DEV GOOGLE_ANALYTICS)
+!define DEV_GOOGLE_ANALYTICS(_alias,_label,_shape) ENTITY(_shape,black,google_analytics,_label,_alias,DEV GOOGLE_ANALYTICS)
+!define DEV_GOOGLE_ANALYTICS(_alias,_label,_shape,_color) ENTITY(_shape,_color,google_analytics,_label,_alias,DEV GOOGLE_ANALYTICS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/google_cloud_platform.puml b/stdlib/devicons/google_cloud_platform.puml
new file mode 100644
index 000000000..0b1128cb3
--- /dev/null
+++ b/stdlib/devicons/google_cloud_platform.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $google_cloud_platform [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000367777777777777762000000000000000
+00000000000000AFFFFFFFFFFFFFFFFFF700000000000000
+00000000000006FFFFFFFFFFFFFFFFFFFF30000000000000
+0000000000001EFD1DFFFFFFFFFFFFA2FFC0000000000000
+0000000000009FFF8FFFFFFFFFFFFFD9FFF5000000000000
+000000000003FFFFFFFFFFFFFFFFFFFFFFFE000000000000
+00000000000CFFFFFFFFFFFFFFFFFFFFFFFF800000000000
+00000000005FFFFFFF200000000004FFFFFFF10000000000
+0000000000EFFFFFF8000000000000BFFFFFFA0000000000
+0000000007FFFFFFE00000000000002FFFFFFF4000000000
+000000002FFFFFFF5000000000000009FFFFFFD000000000
+00000000AFFFFFFC0000000330000001EFFFFFF600000000
+00000003FFFFFFF2000009FFFF7000006FFFFFFE10000000
+0000000CFFFFFF900000CFFFFFF900000DFFFFFF90000000
+0000006FFFFFFE100007FFFFFFFF300004FFFFFFF2000000
+000000DFFDFFF600000CFFFFFFFF800000AFFFDFF9000000
+000000FF62FFF000000EFFFFFFFFA000004FFF0AFC000000
+000000DFEDFFF600000CFFFFFFFF800000AFFFDFF9000000
+0000006FFFFFFE100007FFFFFFFF300004FFFFFFF2000000
+0000000DFFFFFF900000CFFFFFF900000DFFFFFF90000000
+00000003FFFFFFF2000009FFFF8000006FFFFFFE00000000
+00000000AFFFFFFB0000001330000001EFFFFFF600000000
+000000002FFFFFFF5000000000000009FFFFFFD000000000
+0000000008FFFFFFD00000000000002FFFFFFF3000000000
+0000000000EFFFFFF7000000000000BFFFFFFA0000000000
+00000000005FFFFFFF100000000004FFFFFFF10000000000
+00000000000CFFFFFFFFFFFFFFFFFFFFFFFF800000000000
+000000000002FFFFFFFFFFFFFFFFFFFFFFFD000000000000
+0000000000009FFF8FFFFFFFFFFFFFD9FFF5000000000000
+0000000000001FFD0DFFFFFFFFFFFFA2FFC0000000000000
+00000000000007FFFFFFFFFFFFFFFFFFFF30000000000000
+00000000000000AFFFFFFFFFFFFFFFFFF600000000000000
+000000000000000366666666666666662000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GOOGLE_CLOUD_PLATFORM(_alias) ENTITY(rectangle,black,google_cloud_platform,_alias,DEV GOOGLE_CLOUD_PLATFORM)
+!define DEV_GOOGLE_CLOUD_PLATFORM(_alias,_label) ENTITY(rectangle,black,google_cloud_platform,_label,_alias,DEV GOOGLE_CLOUD_PLATFORM)
+!define DEV_GOOGLE_CLOUD_PLATFORM(_alias,_label,_shape) ENTITY(_shape,black,google_cloud_platform,_label,_alias,DEV GOOGLE_CLOUD_PLATFORM)
+!define DEV_GOOGLE_CLOUD_PLATFORM(_alias,_label,_shape,_color) ENTITY(_shape,_color,google_cloud_platform,_label,_alias,DEV GOOGLE_CLOUD_PLATFORM)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/google_drive.puml b/stdlib/devicons/google_drive.puml
new file mode 100644
index 000000000..19fde5401
--- /dev/null
+++ b/stdlib/devicons/google_drive.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $google_drive [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000007777777777000000000000000000
+000000000000000000109FFFFFFFFF600000000000000000
+000000000000000006A01EFFFFFFFFE10000000000000000
+00000000000000001EF406FFFFFFFFF90000000000000000
+00000000000000009FFD00DFFFFFFFFF2000000000000000
+0000000000000002FFFF704FFFFFFFFFB000000000000000
+000000000000000BFFFFF10AFFFFFFFFF500000000000000
+000000000000005FFFFFF902FFFFFFFFFD00000000000000
+00000000000000DFFFFFFF308FFFFFFFFF70000000000000
+00000000000007FFFFFFFFC00EFFFFFFFFF1000000000000
+0000000000001FFFFFFFFFE006FFFFFFFFF9000000000000
+0000000000009FFFFFFFFF6000CFFFFFFFFF300000000000
+000000000003FFFFFFFFFC00003FFFFFFFFFC00000000000
+00000000000CFFFFFFFFF300000AFFFFFFFFF50000000000
+00000000005FFFFFFFFFA0000001FFFFFFFFFE0000000000
+0000000000EFFFFFFFFF100000008FFFFFFFFF8000000000
+0000000008FFFFFFFFF8000000000EFFFFFFFFF200000000
+000000002FFFFFFFFFE00000000005FFFFFFFFFA00000000
+00000000AFFFFFFFFF500000000000CFFFFFFFFF40000000
+00000003FFFFFFFFFC0000000000003BBBBBBBBB80000000
+0000000CFFFFFFFFF3000000000000000000000000000000
+00000008FFFFFFFFA0166666666666666666666650000000
+00000000DFFFFFFF10BFFFFFFFFFFFFFFFFFFFFF60000000
+000000005FFFFFF704FFFFFFFFFFFFFFFFFFFFFD00000000
+000000000BFFFFD00DFFFFFFFFFFFFFFFFFFFFF400000000
+0000000002FFFF407FFFFFFFFFFFFFFFFFFFFFB000000000
+00000000009FFB01FFFFFFFFFFFFFFFFFFFFFF2000000000
+00000000001EF209FFFFFFFFFFFFFFFFFFFFF90000000000
+000000000006902FFFFFFFFFFFFFFFFFFFFFF10000000000
+00000000000010BFFFFFFFFFFFFFFFFFFFFF700000000000
+000000000000004444444444444444444444000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GOOGLE_DRIVE(_alias) ENTITY(rectangle,black,google_drive,_alias,DEV GOOGLE_DRIVE)
+!define DEV_GOOGLE_DRIVE(_alias,_label) ENTITY(rectangle,black,google_drive,_label,_alias,DEV GOOGLE_DRIVE)
+!define DEV_GOOGLE_DRIVE(_alias,_label,_shape) ENTITY(_shape,black,google_drive,_label,_alias,DEV GOOGLE_DRIVE)
+!define DEV_GOOGLE_DRIVE(_alias,_label,_shape,_color) ENTITY(_shape,_color,google_drive,_label,_alias,DEV GOOGLE_DRIVE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/grails.puml b/stdlib/devicons/grails.puml
new file mode 100644
index 000000000..17099ef8a
--- /dev/null
+++ b/stdlib/devicons/grails.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $grails [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000012200000000000000000000000
+0000000000000000016ADFFFFFFD95000000000000000000
+0000000000000004BFFFFFFFFFFFFFFA2000000000000000
+00000000000002CFFFFFFFFFFFFFFFFFFA10000000000000
+0000000000008FFFFFFFFFFFFFFFFFFFFFE5000000000000
+00000000001CFFFFFFFFFFFFFFFFFFFFFFFF900000000000
+0000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFA0000000000
+000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000000000
+00000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000
+00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000
+0000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+000000AFFFFFCBBBBBBBBBBBBBBBBBBBBBBDFFFFF6000000
+000002FFFFFF200000000000000000000008FFFFFE000000
+000008FFFFFF40000000000000000000000BFFFFFF400000
+00000EFFFFFF90000000000000000000000FFFFFFFA00000
+00002FFFFFFFF0000000000000000000006FFFFFFFE00000
+00006FFF9888A800000000000000000000C8888BFFF20000
+00009FFF30000A3000000000000000000A500006FFF50000
+0000BFFF700001C200000000000000008800000AFFF70000
+0000CFFFE000002C40000000000000098000003FFFF80000
+0000DFFFFA000001A9100000000004B6000001DFFFF90000
+0000CFFFFFB10000039910000004C81000002DFFFFF80000
+0000BFFFFFFF810004BFD000003FF920002AFFFFFFF70000
+00009FFFFFFFFC001FFFF70000DFFFE000EFFFFFFFF50000
+00006FFFFFFFFF006FFFFB0002FFFFF303FFFFFFFFF20000
+00002FFFFFFFFF005FFFFC0003FFFFF202FFFFFFFFE00000
+00000EFFFFFFFC002FFFFB0002FFFFE000FFFFFFFFA00000
+000008FFFFFFF6000BFFF80000EFFF80009FFFFFFF400000
+000002FFFFFFF00004FFF40000AFFF20002FFFFFFD000000
+000000AFFFFFF9556CFFE000004FFFB655AFFFFFF6000000
+0000001FFFFFFFFFFFFF7000000CFFFFFFFFFFFFD0000000
+00000007FFFFFFFFFFFE00000005FFFFFFFFFFFF30000000
+00000000BFFFFFFFFFFF40000018FFFFFFFFFFF700000000
+000000000CFFFFFFFFFFFFCBBDFFFFFFFFFFFF9000000000
+0000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFA0000000000
+00000000000BFFFFFFFFFFFFFFFFFFFFFFFF800000000000
+0000000000008FFFFFFFFFFFFFFFFFFFFFE5000000000000
+00000000000002CFFFFFFFFFFFFFFFFFFA10000000000000
+0000000000000004BFFFFFFFFFFFFFFA2000000000000000
+0000000000000000015ADFFFFFFD94000000000000000000
+000000000000000000000012200000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GRAILS(_alias) ENTITY(rectangle,black,grails,_alias,DEV GRAILS)
+!define DEV_GRAILS(_alias,_label) ENTITY(rectangle,black,grails,_label,_alias,DEV GRAILS)
+!define DEV_GRAILS(_alias,_label,_shape) ENTITY(_shape,black,grails,_label,_alias,DEV GRAILS)
+!define DEV_GRAILS(_alias,_label,_shape,_color) ENTITY(_shape,_color,grails,_label,_alias,DEV GRAILS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/groovy.puml b/stdlib/devicons/groovy.puml
new file mode 100644
index 000000000..4d4056123
--- /dev/null
+++ b/stdlib/devicons/groovy.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $groovy [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000003300000000000000000000000
+00000000000000000000000BB00000000000000000000000
+000000000000000000000065460000000000000000000000
+000000000000002CD50001A00A1000000000000000000000
+00000000000002DE9B000920029000000000000000000000
+0000000000000DCE9A003800008300000000000000000000
+0000000000009D4E9C34C52B83CD68A695A2000000000000
+0000017C9557CD4CAACEBDE7CF5AEC6ECFBB5559C7100000
+000000016A887F8CB8D75E97E9ADCBDDCEDC18A610000000
+00000000002999FBD3FCFF4B78275CBAC8DD920000000000
+000000000000BCCC30F85D606F52AF10C31B400000000000
+000000000000D82003CC4DCD929C6693F70B700000000000
+00000000000096028C1483000000007FFEA7700000000000
+0000000000000CDD9000000330000009572A400000000000
+000000000000000B000017A67A710064019A000000000000
+0000000000000074004993000039A44BAD60000000000000
+000000000000029299400000000005A93820000000000000
+0000000000000CB820000000000000028BB0000000000000
+000000000000240000000000000000000042000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GROOVY(_alias) ENTITY(rectangle,black,groovy,_alias,DEV GROOVY)
+!define DEV_GROOVY(_alias,_label) ENTITY(rectangle,black,groovy,_label,_alias,DEV GROOVY)
+!define DEV_GROOVY(_alias,_label,_shape) ENTITY(_shape,black,groovy,_label,_alias,DEV GROOVY)
+!define DEV_GROOVY(_alias,_label,_shape,_color) ENTITY(_shape,_color,groovy,_label,_alias,DEV GROOVY)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/grunt.puml b/stdlib/devicons/grunt.puml
new file mode 100644
index 000000000..538bba31b
--- /dev/null
+++ b/stdlib/devicons/grunt.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $grunt [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000450000000000000000000000
+000000000000033100000527F70000001330000000000000
+00000000001AFEEFC3004F6FFB8E103CFEEFA10000000000
+00000000009FC7529F50BFFFFFFB05F9257CF90000000000
+0000000000019F8D47F5EFFFFFFB5F74D8F9100000000000
+0000000000000D35F5EFFCA99ACFFE5F35D0000000000000
+0000000000000C70DFB4000000005BFC07C0000000000000
+000000000006DFEBF40000000000004FBEFC600000000000
+00000000004E6459EA100000000002BE9546E40000000000
+00000000006B000007D3000000003D700000B60000000000
+00000000002F3000001A20000002A1000003F20000000000
+00000000000AC0000000400000040000000CA00000000000
+000000000006D0000000000000000000000D600000000000
+000000000007D09EB50000477400005BE90D600000000000
+00000000000B90CF9FA0000220000AF9FC0AB00000000000
+0000000000AE404F32CC10000001CC23F404EA0000000000
+0000000003F3000A800CE950059EC00890004F2000000000
+0000000003F20000AB9BF910019FB9BA00002F3000000000
+0000000000BD20000120B000000B02100002DB0000000000
+000000000009F8000000400000040000008F900000000000
+0000000000002CB000000000000000000BC2000000000000
+00000000000001F300000000000000003F10000000000000
+00000000000000B500000000000000005B00000000000000
+00000000000000B500003000000300005B00000000000000
+00000000000440C500042000000340005C04400000000000
+00000000000EA0D4000A00000000A0004D0AE00000000000
+00000000004CE4E3001B00000000B1003E4EC40000000000
+0000000000795FF200860000000067002FF5970000000000
+00000000007905EEA8E1000000001E8AEE50970000000000
+00000000005C00037DE7888888887ED73000C50000000000
+00000000001F20003FA8777777778AF30002F10000000000
+000000000007D2009816650000566189002D700000000000
+0000000000008F94A95FFF3003FFF59A49F8000000000000
+000000000000029CFE0AF800009FA0EFC920000000000000
+00000000000000000B601000000106B00000000000000000
+000000000000000003F2000000003F300000000000000000
+0000000000000000007E50000005F7000000000000000000
+00000000000000000006ED8668DE60000000000000000000
+00000000000000000000058AA85000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_GRUNT(_alias) ENTITY(rectangle,black,grunt,_alias,DEV GRUNT)
+!define DEV_GRUNT(_alias,_label) ENTITY(rectangle,black,grunt,_label,_alias,DEV GRUNT)
+!define DEV_GRUNT(_alias,_label,_shape) ENTITY(_shape,black,grunt,_label,_alias,DEV GRUNT)
+!define DEV_GRUNT(_alias,_label,_shape,_color) ENTITY(_shape,_color,grunt,_label,_alias,DEV GRUNT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/gulp.puml b/stdlib/devicons/gulp.puml
new file mode 100644
index 000000000..8e30d35d4
--- /dev/null
+++ b/stdlib/devicons/gulp.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $gulp [48x48/16] {
+000000000000000000000000000000000200000000000000
+000000000000000000000000000000006F70000000000000
+00000000000000000000000000000006FE20000000000000
+0000000000000000000000000000004FF300000000000000
+000000000000000000000000000004FF4000000000000000
+00000000000000000000000000004FF40000000000000000
+0000000000000000000000000003FF600000000000000000
+0000000000000000000000000009F8000000000000000000
+000000000000000000000000000DF2000000000000000000
+000000000000000000000000001FE0000000000000000000
+000000000000000000000000005FA0000000000000000000
+0000000000000002578AABBCCCEFD9751000000000000000
+00000000000005FFFFFFFFFFFFFFFFFFFE50000000000000
+0000000000000389CDEFFFFFFFFFFFEB9830000000000000
+00000000000006FFCA878988889998ACFF70000000000000
+00000000000005FFFFFFFFFFFFFFFFFFFF50000000000000
+00000000000003FFFFFFFFFFFFFFFFFFFF40000000000000
+00000000000001FFFFFFFFFFFFFFFFFFFF20000000000000
+00000000000000FFFFFFFFFFFFFFFFFFFF00000000000000
+00000000000000EFFFFEFFFFFFFFFFFFFF00000000000000
+00000000000000CFFA118FFFFFFFCFFFFD00000000000000
+00000000000000AFA1CF3FFFFFF98FFFFB00000000000000
+000000000000009E0BFFFFFFFFF3EFFFF900000000000000
+00000000000000765FFCFFFFFFC4FFFFF700000000000000
+0000000000000030DFF1FBBF8F5AFAC4C500000000000000
+0000000000000002FFA3F3DB5E1FB053B300000000000000
+0000000000000005FD18C3F2A87E26B4B000000000000000
+0000000000000003921D8450A1710D273000000000000000
+00000000000000026D2FA3A866566D37E000000000000000
+000000000000000DFB7FFFFFFFF1CFFFD000000000000000
+000000000000000CFFFFFFFFFFB4FFFFB000000000000000
+000000000000000AFFFFFFFFFF9CFFFF9000000000000000
+0000000000000008FFFFFFFFFFFFFFFF7000000000000000
+0000000000000006FFFFFFFFFFFFFFFF5000000000000000
+0000000000000005FFFFFFFFFFFFFFFF3000000000000000
+0000000000000003FFFFFFFFFFFFFFFF1000000000000000
+00000000000000008DFFFFFFFFFFFFC60000000000000000
+00000000000000005A788889988988B30000000000000000
+00000000000000000DFFFFEDDEFFFFB00000000000000000
+000000000000000006FFFFFFFFFFFF400000000000000000
+000000000000000004FFFFFFFFFFFF300000000000000000
+000000000000000003FFFFFFFFFFFF200000000000000000
+000000000000000002FFFFFFFFFFFF100000000000000000
+000000000000000001FFFFFFFFFFFF000000000000000000
+000000000000000000FFFFFFFFFFFF000000000000000000
+000000000000000000EFFFFFFFFFFE000000000000000000
+000000000000000000DFFFFFFFFFFD000000000000000000
+00000000000000000029DFFFFFFD92000000000000000000
+}
+
+
+!define DEV_GULP(_alias) ENTITY(rectangle,black,gulp,_alias,DEV GULP)
+!define DEV_GULP(_alias,_label) ENTITY(rectangle,black,gulp,_label,_alias,DEV GULP)
+!define DEV_GULP(_alias,_label,_shape) ENTITY(_shape,black,gulp,_label,_alias,DEV GULP)
+!define DEV_GULP(_alias,_label,_shape,_color) ENTITY(_shape,_color,gulp,_label,_alias,DEV GULP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/hackernews.puml b/stdlib/devicons/hackernews.puml
new file mode 100644
index 000000000..c96086c11
--- /dev/null
+++ b/stdlib/devicons/hackernews.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $hackernews [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000099999999999999999999999999999999980000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+0000000FFD3333333333333333333333333333FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000001333200000013331000000FFD0000000
+0000000FFC0000002FFFF000000DFFF2000000FFD0000000
+0000000FFC00000008FFF700004FFF90000000FFD0000000
+0000000FFC00000001EFFE0000BFFF10000000FFD0000000
+0000000FFC000000007FFF6003FFF800000000FFD0000000
+0000000FFC000000000DFFE00AFFE000000000FFD0000000
+0000000FFC0000000005FFF61FFF7000000000FFD0000000
+0000000FFC0000000000CFFD9FFD0000000000FFD0000000
+0000000FFC00000000004FFFFFF60000000000FFD0000000
+0000000FFC00000000000AFFFFC00000000000FFD0000000
+0000000FFC000000000002FFFF400000000000FFD0000000
+0000000FFC000000000000BFFE000000000000FFD0000000
+0000000FFC000000000000AFFD000000000000FFD0000000
+0000000FFC000000000000AFFD000000000000FFD0000000
+0000000FFC000000000000AFFD000000000000FFD0000000
+0000000FFC000000000000AFFD000000000000FFD0000000
+0000000FFC000000000000AFFD000000000000FFD0000000
+0000000FFC0000000000007AA9000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFC0000000000000000000000000000FFD0000000
+0000000FFE9999999999999999999999999999FFD0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+000000044444444444444444444444444444444430000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HACKERNEWS(_alias) ENTITY(rectangle,black,hackernews,_alias,DEV HACKERNEWS)
+!define DEV_HACKERNEWS(_alias,_label) ENTITY(rectangle,black,hackernews,_label,_alias,DEV HACKERNEWS)
+!define DEV_HACKERNEWS(_alias,_label,_shape) ENTITY(_shape,black,hackernews,_label,_alias,DEV HACKERNEWS)
+!define DEV_HACKERNEWS(_alias,_label,_shape,_color) ENTITY(_shape,_color,hackernews,_label,_alias,DEV HACKERNEWS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/haskell.puml b/stdlib/devicons/haskell.puml
new file mode 100644
index 000000000..10c1e8190
--- /dev/null
+++ b/stdlib/devicons/haskell.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $haskell [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000009AAAAA108AAAAA200000000000000000000000000
+00000004FFFFFB04FFFFFC00000000000000000000000000
+00000000AFFFFF609FFFFF60000000000000000000000000
+000000000EFFFFF10DFFFFF2000000000000000000000000
+0000000004FFFFFB04FFFFFC000000000000000000000000
+0000000000AFFFFF609FFFFF600000000000000000000000
+00000000000EFFFFF10EFFFFF20000000000000000000000
+000000000005FFFFFB04FFFFFB0199999999999990000000
+000000000000AFFFFF609FFFFF609FFFFFFFFFFFF1000000
+0000000000001EFFFFF10EFFFFF20DFFFFFFFFFFF1000000
+00000000000004FFFFFB04FFFFFC03FFFFFFFFFFF1000000
+00000000000000AFFFFF50AFFFFF60566666666660000000
+000000000000003FFFFFD02FFFFFF1000000000000000000
+00000000000000BFFFFF40BFFFFFFB019999999990000000
+00000000000007FFFFF906FFFFFFFF609FFFFFFFF1000000
+0000000000002FFFFFD02FFFFFFFFFF20DFFFFFFF1000000
+000000000000BFFFFF40BFFFFFFFFFFB04FFFFFFF1000000
+000000000006FFFFF906FFFFFAAFFFFF6046666660000000
+00000000002FFFFFD02FFFFFE00EFFFFF200000000000000
+0000000000CFFFFF40BFFFFF4004FFFFFB00000000000000
+0000000006FFFFF906FFFFFA00009FFFFF60000000000000
+000000002FFFFFD01FFFFFE000000EFFFFF2000000000000
+00000000CFFFFF40BFFFFF40000004FFFFFB000000000000
+00000006FFFFF906FFFFFA000000009FFFFF600000000000
+000000067777700677777100000000177777600000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HASKELL(_alias) ENTITY(rectangle,black,haskell,_alias,DEV HASKELL)
+!define DEV_HASKELL(_alias,_label) ENTITY(rectangle,black,haskell,_label,_alias,DEV HASKELL)
+!define DEV_HASKELL(_alias,_label,_shape) ENTITY(_shape,black,haskell,_label,_alias,DEV HASKELL)
+!define DEV_HASKELL(_alias,_label,_shape,_color) ENTITY(_shape,_color,haskell,_label,_alias,DEV HASKELL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/heroku.puml b/stdlib/devicons/heroku.puml
new file mode 100644
index 000000000..b78ea6508
--- /dev/null
+++ b/stdlib/devicons/heroku.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $heroku [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000006FFFFFE000000000001FFFFEE400000000000
+000000000006FFFFFE000000000008FFFFFF100000000000
+000000000006FFFFFE00000000002FFFFFF8000000000000
+000000000006FFFFFE0000000000AFFFFFD0000000000000
+000000000006FFFFFE0000000003FFFFFF30000000000000
+000000000006FFFFFE000000000CFFFFF900000000000000
+000000000006FFFFFE000000004FFFFFE000000000000000
+000000000006FFFFFE000000006BCCCC5000000000000000
+000000000006FFFFFE000000000000000000000000000000
+000000000006FFFFFE000000000000000000000000000000
+000000000006FFFFFE000000012100000000000000000000
+000000000006FFFFFE0037BEFFFFFD710000000000000000
+000000000005FFFFFF9EFFFFFFFFFFFE4000000000000000
+000000000005FFFFFFFFFFFFFFFFFFFFF300000000000000
+000000000005FFFFFFFFFFFFFFFFFFFFFB00000000000000
+000000000005FFFFFFFFFFFFFFFFFFFFFF00000000000000
+000000000004FFFFFFFFD9532234CFFFFF20000000000000
+000000000003FFFFFC7200000000AFFFFF30000000000000
+000000000002FE94000000000000AFFFFF40000000000000
+0000000000004000000000000000AFFFFF40000000000000
+0000000000000000000000000000AFFFFF50000000000000
+0000000000000000000000000000AFFFFF50000000000000
+00000000000000000000000000009FFFFF50000000000000
+00000000000000000000000000009FFFFF50000000000000
+00000000000000000000000000009FFFFF50000000000000
+00000000000000000000000000009FFFFF50000000000000
+00000000000000000000000000008FFFFF50000000000000
+00000000000160000000000000008FFFFF50000000000000
+000000000004F8000000000000008FFFFF50000000000000
+000000000005FF900000000000008FFFFF50000000000000
+000000000005FFFA0000000000008FFFFF50000000000000
+000000000006FFFFA000000000008FFFFF50000000000000
+000000000006FFFFF900000000008FFFFF50000000000000
+000000000006FFFFE200000000008FFFFF50000000000000
+000000000005FFFE2000000000007FFFFF50000000000000
+000000000005FFE30000000000007FFFFF50000000000000
+000000000004FE200000000000007FFFFF50000000000000
+000000000002D2000000000000007FFFFF50000000000000
+00000000000000000000000000005CCCCC40000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HEROKU(_alias) ENTITY(rectangle,black,heroku,_alias,DEV HEROKU)
+!define DEV_HEROKU(_alias,_label) ENTITY(rectangle,black,heroku,_label,_alias,DEV HEROKU)
+!define DEV_HEROKU(_alias,_label,_shape) ENTITY(_shape,black,heroku,_label,_alias,DEV HEROKU)
+!define DEV_HEROKU(_alias,_label,_shape,_color) ENTITY(_shape,_color,heroku,_label,_alias,DEV HEROKU)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/html5.puml b/stdlib/devicons/html5.puml
new file mode 100644
index 000000000..71a37aac7
--- /dev/null
+++ b/stdlib/devicons/html5.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $html5 [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE0000000
+0000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000
+0000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+00000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+00000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60000000
+00000005FFFFF7333333333333333333338FFFFF50000000
+00000004FFFFF6000000000000000000007FFFFF40000000
+00000002FFFFF8000000000000000000008FFFFF20000000
+00000001FFFFF900000000000000000000AFFFFF10000000
+00000000FFFFFB00008888888888888888DFFFFF00000000
+00000000EFFFFC0000EFFFFFFFFFFFFFFFFFFFFE00000000
+00000000CFFFFE0000DFFFFFFFFFFFFFFFFFFFFC00000000
+00000000BFFFFF0000CFFFFFFFFFFFFFFFFFFFFB00000000
+00000000AFFFFF00008CCCCCCCCCCCCCCDFFFFFA00000000
+000000008FFFFF20000000000000000002FFFFF800000000
+000000007FFFFF30000000000000000004FFFFF700000000
+000000005FFFFF50000000000000000005FFFFF500000000
+000000004FFFFF60000000000000000007FFFFF400000000
+000000003FFFFFFEEEEEEEEEEEEEE20008FFFFF300000000
+000000001FFFFFFFFFFFFFFFFFFFF1000AFFFFF100000000
+000000000FFFFFC3333FFFFFFFFFF0000BFFFFF000000000
+000000000EFFFFC0000FFFFFFFFFE0000CFFFFE000000000
+000000000DFFFFD0000DFFFFFFFFD0000EFFFFD000000000
+000000000BFFFFF00009FFFFFFFF80000FFFFFB000000000
+000000000AFFFFF00000038CC73000001FFFFFA000000000
+0000000009FFFFF200000000000000002FFFFF8000000000
+0000000007FFFFF300000000000000003FFFFF7000000000
+0000000006FFFFFFB73000000000037CFFFFFF6000000000
+0000000004FFFFFFFFFEA610016AEFFFFFFFFF4000000000
+0000000003FFFFFFFFFFFFFCCFFFFFFFFFFFFF3000000000
+0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFF1000000000
+0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+0000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000000
+0000000000038CFFFFFFFFFFFFFFFFFFFFC8300000000000
+00000000000000159EFFFFFFFFFFFFE95100000000000000
+00000000000000000037BFFFFFFB72000000000000000000
+00000000000000000000015A951000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HTML5(_alias) ENTITY(rectangle,black,html5,_alias,DEV HTML5)
+!define DEV_HTML5(_alias,_label) ENTITY(rectangle,black,html5,_label,_alias,DEV HTML5)
+!define DEV_HTML5(_alias,_label,_shape) ENTITY(_shape,black,html5,_label,_alias,DEV HTML5)
+!define DEV_HTML5(_alias,_label,_shape,_color) ENTITY(_shape,_color,html5,_label,_alias,DEV HTML5)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/html5_3d_effects.puml b/stdlib/devicons/html5_3d_effects.puml
new file mode 100644
index 000000000..7b39865bc
--- /dev/null
+++ b/stdlib/devicons/html5_3d_effects.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $html5_3d_effects [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000000000000049D8300000000000000000000
+000000000000000000005BFFFFFFEA500000000000000000
+000000000000000005AFFFFFFFFFFFFE9400000000000000
+0000000000000000016BFFFFFFFFFFFFFFFB610000000000
+0000000000169510000027CFFFFFFFFFFFFFFFB510000000
+000000016CFFFFFB610000016CFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFB610000016BFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFD820000004AFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFD930000004AFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFD82000006FFFFF0000000
+0000000FFFFF649EFFFFFFFFFFFFFF900006FFFFF0000000
+0000000FFFFF600028DFFFFFFFFA40000006FFFFF0000000
+0000000FFFFF600000027CFE930000000006FFFFF0000000
+0000000FFFFF600000000020000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF600000000000000000000006FFFFF0000000
+0000000FFFFF80000000000000000000049EFFFFF0000000
+0000000FFFFFFFB5000000000000005BFFFFFFFFF0000000
+0000000FFFFFFFFFFB6100000016CFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFB6116BFFFFFFFFFFFFFFF0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC610000000
+0000000004AFFFFFFFFFFFFFFFFFFFFFFFFA510000000000
+00000000000049EFFFFFFFFFFFFFFFFFA400000000000000
+00000000000000039EFFFFFFFFFFE9400000000000000000
+00000000000000000039EFFFFE9300000000000000000000
+000000000000000000000499400000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HTML5_3D_EFFECTS(_alias) ENTITY(rectangle,black,html5_3d_effects,_alias,DEV HTML5_3D_EFFECTS)
+!define DEV_HTML5_3D_EFFECTS(_alias,_label) ENTITY(rectangle,black,html5_3d_effects,_label,_alias,DEV HTML5_3D_EFFECTS)
+!define DEV_HTML5_3D_EFFECTS(_alias,_label,_shape) ENTITY(_shape,black,html5_3d_effects,_label,_alias,DEV HTML5_3D_EFFECTS)
+!define DEV_HTML5_3D_EFFECTS(_alias,_label,_shape,_color) ENTITY(_shape,_color,html5_3d_effects,_label,_alias,DEV HTML5_3D_EFFECTS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/html5_connectivity.puml b/stdlib/devicons/html5_connectivity.puml
new file mode 100644
index 000000000..1c5d1be01
--- /dev/null
+++ b/stdlib/devicons/html5_connectivity.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $html5_connectivity [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000045555555555555400000000000000000000000000
+00000002EFFFFFFFFFFFFF80000000000000000000000000
+000000002EFFFFFFFFFFFFF8000000000000000000000000
+0000000002EFFFFFFFFFFFFF800000000000000000000000
+00000000003DDDDDDDDDFFFFF70000000000000000000000
+000000000000000000007FFFFF7000077000000000000000
+0000000000000000000006FFFFF8008FF700000000000000
+00000000000BFFF70000007FFFFF77FFFF70000000000000
+00000000000BFFF70000007FFFFF88FFFFF7000000000000
+00000000000BFFFA000007FFFFFC008FFFFF600000000000
+00000000000BFFFF90007FFFFFFF8007FFFFB00000000000
+000000000006FFFFF807FFFFFFFFF7009FFFB00000000000
+0000000000006FFFFFCFFFFFCFFFFF407FFFB00000000000
+00000000000006FFFFFFFFF807FFFF607FFFB00000000000
+000000000000005FFFFFFFF9006FFF607FFFB00000000000
+0000000000000005FFFFFFFF9006FF607FFFB00000000000
+00000000000000006FFFFFFFF9007F607FFFB00000000000
+000000000000000005F76FFFFF9006607FFFB00000000000
+0000000000000000008006FFFFF900107FFFB00000000000
+000000000000000008F9006CCCCC60006CCC900000000000
+00000000000000009FFFA000000000000000000000000000
+0000000000000002FFFFF911111111111111000000000000
+00000000000000004FFFFFFFFFFFFFFFFFFFF50000000000
+000000000000000004FFFFFFFFFFFFFFFFFFFF5000000000
+0000000000000000004FFFFFFFFFFFFFFFFFFFF500000000
+00000000000000000004FFFFFFFFFFFFFFFFFFFF60000000
+000000000000000000000111111111111111111100000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HTML5_CONNECTIVITY(_alias) ENTITY(rectangle,black,html5_connectivity,_alias,DEV HTML5_CONNECTIVITY)
+!define DEV_HTML5_CONNECTIVITY(_alias,_label) ENTITY(rectangle,black,html5_connectivity,_label,_alias,DEV HTML5_CONNECTIVITY)
+!define DEV_HTML5_CONNECTIVITY(_alias,_label,_shape) ENTITY(_shape,black,html5_connectivity,_label,_alias,DEV HTML5_CONNECTIVITY)
+!define DEV_HTML5_CONNECTIVITY(_alias,_label,_shape,_color) ENTITY(_shape,_color,html5_connectivity,_label,_alias,DEV HTML5_CONNECTIVITY)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/html5_device_access.puml b/stdlib/devicons/html5_device_access.puml
new file mode 100644
index 000000000..22c2cced1
--- /dev/null
+++ b/stdlib/devicons/html5_device_access.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $html5_device_access [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000299999991000000000000199999992000000000
+00000000006FFFFFFD100000000001DFFFFFF60000000000
+000000000006FFFFFFD1000000001DFFFFFF600000000000
+0000000000006FFFFFFD10000001DFFFFFF6000000000000
+00000000000006FFFFFFD100001DFFFFFF60000000000000
+000000000000006FFFFFFD1001DFFFFFF600000000000000
+0000000000000006FFFFFFD12EFFFFFF6000000000000000
+0000000BBBBBBBBBFFFFFFFDDFFFFFFFBBBBBBBBB0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFF977777777777777777777779FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000000000000000003FFFFF0000000
+0000000FFFFF300000000003300000000003FFFFF0000000
+0000000FFFFF30000000003FF30000000003FFFFF0000000
+0000000FFFFF3000000003FFFF3000000003FFFFF0000000
+0000000FFFFF300000003FFFFFF300000003FFFFF0000000
+0000000FFFFF30000003FFFFFFFF30000003FFFFF0000000
+0000000FFFFF3000003FFFFFFFFFF3000003FFFFF0000000
+0000000FFFFF300003FFFFFFFFFFFF300003FFFFF0000000
+0000000FFFFFDCCCCFFFFFFFFFFFFFFCCCCDFFFFF0000000
+0000000FFFFFFFFFFFFFFFF33FFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFF3003FFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFF300003FFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFF30000003FFFFFFFFFFFFF0000000
+000000066666666666630000000036666666666660000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HTML5_DEVICE_ACCESS(_alias) ENTITY(rectangle,black,html5_device_access,_alias,DEV HTML5_DEVICE_ACCESS)
+!define DEV_HTML5_DEVICE_ACCESS(_alias,_label) ENTITY(rectangle,black,html5_device_access,_label,_alias,DEV HTML5_DEVICE_ACCESS)
+!define DEV_HTML5_DEVICE_ACCESS(_alias,_label,_shape) ENTITY(_shape,black,html5_device_access,_label,_alias,DEV HTML5_DEVICE_ACCESS)
+!define DEV_HTML5_DEVICE_ACCESS(_alias,_label,_shape,_color) ENTITY(_shape,_color,html5_device_access,_label,_alias,DEV HTML5_DEVICE_ACCESS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/html5_multimedia.puml b/stdlib/devicons/html5_multimedia.puml
new file mode 100644
index 000000000..f5c8368d8
--- /dev/null
+++ b/stdlib/devicons/html5_multimedia.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $html5_multimedia [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000001AAAAAAA30004AAAAAA910008AAAAAA70000000
+000000002EFFFFFF70005FFFFFFF3000AFFFFFFC00000000
+00000002EFFFFFF80005FFFFFFF3000AFFFFFFC000000000
+0000000DFFFFFF80004FFFFFFF40009FFFFFFC1000000000
+0000000FFFFFF80005FFFFFFF3000AFFFFFFC00000000000
+0000000FFFFF90001AAAAAAA40004AAAAAAB655550000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFF400000000000000000000004FFFFF0000000
+0000000FFFFFEDDDDDDDDDDDDDDDDDDDDDDEFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+000000066666666666666666666666666666666660000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_HTML5_MULTIMEDIA(_alias) ENTITY(rectangle,black,html5_multimedia,_alias,DEV HTML5_MULTIMEDIA)
+!define DEV_HTML5_MULTIMEDIA(_alias,_label) ENTITY(rectangle,black,html5_multimedia,_label,_alias,DEV HTML5_MULTIMEDIA)
+!define DEV_HTML5_MULTIMEDIA(_alias,_label,_shape) ENTITY(_shape,black,html5_multimedia,_label,_alias,DEV HTML5_MULTIMEDIA)
+!define DEV_HTML5_MULTIMEDIA(_alias,_label,_shape,_color) ENTITY(_shape,_color,html5_multimedia,_label,_alias,DEV HTML5_MULTIMEDIA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ie.puml b/stdlib/devicons/ie.puml
new file mode 100644
index 000000000..33780a2d5
--- /dev/null
+++ b/stdlib/devicons/ie.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ie [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000158BCC940000000000
+00000000000000000000000000017CFFFFFFFFB000000000
+00000000000000000000002578AFFFFFFB866BFA00000000
+000000000000000000029EFFFFFFFFFC2000007F10000000
+000000000000000001AFFFFFFFFFFFFFD400000D50000000
+00000000000000004EFFFFFFFFFFFFFFFF80000960000000
+0000000000000006FFFFFFFFFFFFFFFFFFFB000940000000
+000000000000005FFFFFFFFFFFFFFFFFFFFFB00C20000000
+00000000000003FFFDFFFFFFFFFFFFFFFFFFF80D00000000
+0000000000000CFF9AFFFFFFB89BFFFFFFFFFF8800000000
+0000000000006FF68FFFFF80000019FFFFFFFFF300000000
+000000000000EF55FFFFF5000000007FFFFFFFF500000000
+000000000005F43FFFFF700000000009FFFFFFFB00000000
+00000000000A51EFFFFE000000000001FFFFFFFF10000000
+0000000000060AFFFFF8000000000000AFFFFFFF50000000
+0000000000005FFFFFF9666666666666BFFFFFFF80000000
+000000000001EFFFFFFFFFFFFFFFFFFFFFFFFFFFA0000000
+00000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+00000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000
+0000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000004FFFFFFFFF74444444444444444444420000000
+000000000BFFFFFFFFF60000000000000000000000000000
+000000002FFFFFFFFFFB0000000000000000000000000000
+000000008FFFFFFFFFFF2000000000038888888700000000
+00000000DFF7FFFFFFFFC0000000001EFFFFFFF800000000
+00000002FFE09FFFFFFFFC10000002DFFFFFFFF100000000
+00000005FF802FFFFFFFFFE720039FFFFFFFFF7000000000
+00000008FF3006FFFFFFFFFFFFFFFFFFFFFFFD0000000000
+0000000BFF0000BFFFFFFFFFFFFFFFFFFFFFE20000000000
+0000000CFF00000BFFFFFFFFFFFFFFFFFFFF400000000000
+0000000BFF100000AFFFFFFFFFFFFFFFFFE3000000000000
+00000008FF60000008FFFFFFFFFFFFFFFA10000000000000
+00000002FFF300018FA8FFFFFFFFFFFC4000000000000000
+000000005FFFB9CF9200059CEEEDA7200000000000000000
+00000000017AA95000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_IE(_alias) ENTITY(rectangle,black,ie,_alias,DEV IE)
+!define DEV_IE(_alias,_label) ENTITY(rectangle,black,ie,_label,_alias,DEV IE)
+!define DEV_IE(_alias,_label,_shape) ENTITY(_shape,black,ie,_label,_alias,DEV IE)
+!define DEV_IE(_alias,_label,_shape,_color) ENTITY(_shape,_color,ie,_label,_alias,DEV IE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/illustrator.puml b/stdlib/devicons/illustrator.puml
new file mode 100644
index 000000000..bcd89459c
--- /dev/null
+++ b/stdlib/devicons/illustrator.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $illustrator [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00009BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB20000
+0000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000
+0000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000
+0000CFF633333333333333333333333333333333CFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF3000000000022220000000AFC00000000BFF20000
+0000CFF30000000001FFFF6000002FFF40000000BFF20000
+0000CFF30000000001FFFFA000000EFF20000000BFF20000
+0000CFF30000000005FFFFF00000016200000000BFF20000
+0000CFF3000000000AFFBFF40000000000000000BFF20000
+0000CFF3000000000FFC6FF900002FFF40000000BFF20000
+0000CFF3000000004FF72FFE00002FFF40000000BFF20000
+0000CFF3000000008FF30EFF30002FFF40000000BFF20000
+0000CFF300000000DFF009FF70002FFF40000000BFF20000
+0000CFF300000002FFB005FFC0002FFF40000000BFF20000
+0000CFF300000006FFC778FFF1002FFF40000000BFF20000
+0000CFF30000000BFFFFFFFFF6002FFF40000000BFF20000
+0000CFF30000000FFFFFFFFFFB002FFF40000000BFF20000
+0000CFF30000004FFE8888BFFF002FFF40000000BFF20000
+0000CFF30000009FF900003FFF402FFF40000000BFF20000
+0000CFF3000000EFF400000EFF902FFF40000000BFF20000
+0000CFF3000003FFF0000009FFE02FFF40000000BFF20000
+0000CFF3000006DDA0000004DDD22EEE30000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFF300000000000000000000000000000000BFF20000
+0000CFFCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCFFF20000
+0000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000
+0000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20000
+000023333333333333333333333333333333333333300000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ILLUSTRATOR(_alias) ENTITY(rectangle,black,illustrator,_alias,DEV ILLUSTRATOR)
+!define DEV_ILLUSTRATOR(_alias,_label) ENTITY(rectangle,black,illustrator,_label,_alias,DEV ILLUSTRATOR)
+!define DEV_ILLUSTRATOR(_alias,_label,_shape) ENTITY(_shape,black,illustrator,_label,_alias,DEV ILLUSTRATOR)
+!define DEV_ILLUSTRATOR(_alias,_label,_shape,_color) ENTITY(_shape,_color,illustrator,_label,_alias,DEV ILLUSTRATOR)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/intellij.puml b/stdlib/devicons/intellij.puml
new file mode 100644
index 000000000..ae94b3f52
--- /dev/null
+++ b/stdlib/devicons/intellij.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $intellij [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000013100000000000
+00000000005ACCCCCCCCCCCCCCCC60000AFFFA0000000000
+0000000009FFFFFFFFFFFFFFFFFF70009FFFFFA000000000
+000000004FFFFFFFFFFFFFFFFFFF7001FFFFFFF100000000
+00000000AFFFFFFFFFFFFFFFFFFF7005FFFFFFF500000000
+00000000BFFFFFFFFFFFFFFFFFFF7006FFFFFFF700000000
+000000007FFFFFFFFFFFFFFFFFFF7007FFFFFFF800000000
+000000000DFFFFFFFFFFFFFFFFFF7007FFFFFFF800000000
+0000000001AFFFFFFFFFFFFFFFFF7007FFFFFFF800000000
+000000000000111111118FFFFFFF7007FFFFFFF800000000
+000000000000000000007FFFFFFF7007FFFFFFF800000000
+000000000000000000007FFFFFFF7007FFFFFFF800000000
+000000000028CC7000007FFFFFFF7007FFFFFFF800000000
+0000000005FFFFFD10007FFFFFFF7007FFFFFFF800000000
+000000001FFFFFFFC0007FFFFFFF7007FFFFFFF800000000
+000000007FFFFFFFF2007FFFFFFF7007FFFFFFF800000000
+00000000BFFFFFFFF5007FFFFFFF7007FFFFFFF800000000
+00000000AFFFFFFFF4008FFFFFFF6007FFFFFFF800000000
+000000005FFFFFFFE000BFFFFFFF5007FFFFFFF800000000
+000000000BFFFFFF5001FFFFFFFF3007FFFFFFF800000000
+00000000009FFFD40008FFFFFFFF0007FFFFFFF800000000
+0000000000003200003FFFFFFFFB0007FFFFFFF800000000
+000000000000000004FFFFFFFFF50007FFFFFFF800000000
+0000000000000002AFFFFFFFFFE00007FFFFFFF800000000
+000000000028ABDFFFFFFFFFFF500007FFFFFFF800000000
+0000000007FFFFFFFFFFFFFFFB000007FFFFFFF800000000
+000000003FFFFFFFFFFFFFFFE1000007FFFFFFF800000000
+000000009FFFFFFFFFFFFFFE20000006FFFFFFF700000000
+00000000BFFFFFFFFFFFFFD200000005FFFFFFF500000000
+000000008FFFFFFFFFFFFA0000000001FFFFFFF100000000
+000000001EFFFFFFFFFC4000000000008FFFFF9000000000
+0000000003DFFFFFD83000000000000009FFFA0000000000
+000000000002332100000000000000000002000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_INTELLIJ(_alias) ENTITY(rectangle,black,intellij,_alias,DEV INTELLIJ)
+!define DEV_INTELLIJ(_alias,_label) ENTITY(rectangle,black,intellij,_label,_alias,DEV INTELLIJ)
+!define DEV_INTELLIJ(_alias,_label,_shape) ENTITY(_shape,black,intellij,_label,_alias,DEV INTELLIJ)
+!define DEV_INTELLIJ(_alias,_label,_shape,_color) ENTITY(_shape,_color,intellij,_label,_alias,DEV INTELLIJ)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ionic.puml b/stdlib/devicons/ionic.puml
new file mode 100644
index 000000000..12ffd1beb
--- /dev/null
+++ b/stdlib/devicons/ionic.puml
@@ -0,0 +1,68 @@
+@startuml
+sprite $ionic [48x57/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000001467753000000000000000000000
+000000000000000002897422234887100000000000000000
+000000000000000297100000000001781000000000000000
+00000000000000680000000000000001868A600000000000
+000000000000095000000000000000000BFFF50000000000
+000000000000920000000000000000000EFFF90000000000
+00000000000A200000000000000000000BFFF70000000000
+0000000000740000000000000000000001ADA50000000000
+000000000280000000000000000000000000091000000000
+000000000910000000000000000000000000018000000000
+00000000280000000000038AA82000000000008100000000
+00000000810000000001BFFFFFFA10000000002700000000
+0000000090000000001EFFFFFFFFD1000000000900000000
+000000017000000000BFFFFFFFFFFA000000000800000000
+000000044000000004FFFFFFFFFFFF200000000530000000
+000000062000000008FFFFFFFFFFFF700000000440000000
+00000007100000000BFFFFFFFFFFFFA00000000260000000
+00000007100000000BFFFFFFFFFFFFA00000000260000000
+000000062000000008FFFFFFFFFFFF700000000350000000
+000000044000000004FFFFFFFFFFFF200000000530000000
+000000017000000000BFFFFFFFFFFA000000000800000000
+0000000090000000001EFFFFFFFFD1000000000900000000
+00000000810000000001BFFFFFFA10000000002700000000
+00000000280000000000048BB83000000000008100000000
+000000000910000000000000000000000000018000000000
+000000000280000000000000000000000000091000000000
+000000000074000000000000000000000000560000000000
+00000000000A200000000000000000000003900000000000
+000000000000920000000000000000000039000000000000
+000000000000094000000000000000000590000000000000
+000000000000006700000000000000008600000000000000
+000000000000000286100000000001781000000000000000
+000000000000000002896421124797100000000000000000
+000000000000000000001467764100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_IONIC(_alias) ENTITY(rectangle,black,ionic,_alias,DEV IONIC)
+!define DEV_IONIC(_alias,_label) ENTITY(rectangle,black,ionic,_label,_alias,DEV IONIC)
+!define DEV_IONIC(_alias,_label,_shape) ENTITY(_shape,black,ionic,_label,_alias,DEV IONIC)
+!define DEV_IONIC(_alias,_label,_shape,_color) ENTITY(_shape,_color,ionic,_label,_alias,DEV IONIC)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/java.puml b/stdlib/devicons/java.puml
new file mode 100644
index 000000000..7ac4516fc
--- /dev/null
+++ b/stdlib/devicons/java.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $java [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000120000000000000000000
+000000000000000000000000000080000000000000000000
+0000000000000000000000000001B0000000000000000000
+0000000000000000000000000005A0000000000000000000
+000000000000000000000000000C70000000000000000000
+000000000000000000000000006F10000000000000000000
+00000000000000000000000005F600000000000000000000
+0000000000000000000000006FB000000000000000000000
+000000000000000000000009FB0001650000000000000000
+0000000000000000000001CFA0018C300000000000000000
+000000000000000000002DF9005E90000000000000000000
+00000000000000000001EF8008F700000000000000000000
+0000000000000000000BFB005FA000000000000000000000
+0000000000000000001FF200CF3000000000000000000000
+0000000000000000001FD000FF4000000000000000000000
+0000000000000000000DE000EFB000000000000000000000
+00000000000000000005F2008FF600000000000000000000
+00000000000000000000AA001EFE00000000000000000000
+000000000000000000000C4004FF40000000000000000000
+0000000000000000000000A100BF20000000000000000000
+00000000000000000000000400A900000011000000000000
+00000000000000016630000001800000046CB10000000000
+00000000000004BD30000000010000230000DC0000000000
+0000000000001EFEA7766667789BCB7000008F1000000000
+000000000000002568999998754200000000BE0000000000
+000000000000000001000000000000000005F50000000000
+0000000000000000B800000000025200005E600000000000
+0000000000000000CFFDCBBBCDFFFC201881000000000000
+00000000000000000158AAAAA86300002000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000009910000002410000000000000000000
+00000000000000000BFFFEDDEFFFF6000000000000000000
+00000000000003420039CEEEECA720000000000000000000
+000000000018B50000000000000000000002400000000000
+0000000002FF820000000000000000000377000000000000
+00000000018DFFEB97665555567899BCA610170000000000
+00000000000002357999AAAA99875310016AA10000000000
+0000000000000003542211111233579BCB72000000000000
+000000000000000002457778888764310000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JAVA(_alias) ENTITY(rectangle,black,java,_alias,DEV JAVA)
+!define DEV_JAVA(_alias,_label) ENTITY(rectangle,black,java,_label,_alias,DEV JAVA)
+!define DEV_JAVA(_alias,_label,_shape) ENTITY(_shape,black,java,_label,_alias,DEV JAVA)
+!define DEV_JAVA(_alias,_label,_shape,_color) ENTITY(_shape,_color,java,_label,_alias,DEV JAVA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/javascript.puml b/stdlib/devicons/javascript.puml
new file mode 100644
index 000000000..65aa9d704
--- /dev/null
+++ b/stdlib/devicons/javascript.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $javascript [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000DEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEED0000000
+0000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+0000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0000000
+00000009FFFFFFFF88888888888888888FFFFFFF80000000
+00000007FFFFFFFE00000000000000000FFFFFFF70000000
+00000006FFFFFFFC00000000000000000EFFFFFF60000000
+00000004FFFFFFFB00000000000000000DFFFFFF40000000
+00000003FFFFFFF900000000000000000BFFFFFF30000000
+00000001FFFFFFF80003EFFFFFEDC1000AFFFFFF10000000
+00000000FFFFFFF60004FFFFFFFFF30008FFFFFF00000000
+00000000FFFFFFF50006FFFFFFFFF40007FFFFFE00000000
+00000000DFFFFFF40007FFFFFFFFF60005FFFFFD00000000
+00000000CFFFFFF20009FFFFFFFFFA6669FFFFFC00000000
+00000000AFFFFFF1000AFFFFFFFFFFFFFFFFFFFA00000000
+000000009FFFFFF00008BBBBBBBBBBBBBCFFFFF900000000
+000000007FFFFFE0000000000000000005FFFFF700000000
+000000006FFFFFC0000000000000000006FFFFF600000000
+000000005FFFFFB0000000000000000008FFFFF400000000
+000000003FFFFFA0000000000000000009FFFFF300000000
+000000002FFFFFFFFFFFFFFFFFFFF0000BFFFFF200000000
+000000000FFFFFFFFFFFFFFFFFFFF0000CFFFFF000000000
+000000000FFFFFA1112FFFFFFFFFD0000DFFFFF000000000
+000000000DFFFFB0000FFFFFFFFFC0000FFFFFD000000000
+000000000CFFFFC0000FFFFFFFFFB0000FFFFFC000000000
+000000000BFFFFE00008DFFFFFFC50002FFFFFB000000000
+0000000009FFFFF00000026A951000003FFFFF9000000000
+0000000008FFFFF000000000000000005FFFFF8000000000
+0000000006FFFFF300000000000000007FFFFF6000000000
+0000000005FFFFFFEA610000000037BFFFFFFF5000000000
+0000000003FFFFFFFFFFC840159DFFFFFFFFFF3000000000
+0000000002FFFFFFFFFFFFFEFFFFFFFFFFFFFF2000000000
+0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+0000000000CFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000
+00000000000159EFFFFFFFFFFFFFFFFFFE95100000000000
+00000000000000037BFFFFFFFFFFFFB72000000000000000
+000000000000000000048CFFFFC840000000000000000000
+000000000000000000000026620000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JAVASCRIPT(_alias) ENTITY(rectangle,black,javascript,_alias,DEV JAVASCRIPT)
+!define DEV_JAVASCRIPT(_alias,_label) ENTITY(rectangle,black,javascript,_label,_alias,DEV JAVASCRIPT)
+!define DEV_JAVASCRIPT(_alias,_label,_shape) ENTITY(_shape,black,javascript,_label,_alias,DEV JAVASCRIPT)
+!define DEV_JAVASCRIPT(_alias,_label,_shape,_color) ENTITY(_shape,_color,javascript,_label,_alias,DEV JAVASCRIPT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/javascript_1.puml b/stdlib/devicons/javascript_1.puml
new file mode 100644
index 000000000..6d10e83a3
--- /dev/null
+++ b/stdlib/devicons/javascript_1.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $javascript_1 [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000111110000000000145665300000000000
+000000000000008FFFFF100000007DFFFFFFFFC500000000
+000000000000008FFFFF1000003DFFFFFFFFFFFB00000000
+000000000000008FFFFF100003FFFFFFFFFFFFF700000000
+000000000000008FFFFF10000EFFFFFFFFFFFFF200000000
+000000000000008FFFFF10006FFFFFF833348EE000000000
+000000000000008FFFFF1000BFFFFF300000002000000000
+000000000000008FFFFF1000DFFFFE000000000000000000
+000000000000008FFFFF1000DFFFFF200000000000000000
+000000000000008FFFFF1000BFFFFFE40000000000000000
+000000000000008FFFFF10006FFFFFFFB400000000000000
+000000000000008FFFFF10000CFFFFFFFFE7000000000000
+000000000000008FFFFF100002EFFFFFFFFFE70000000000
+000000000000008FFFFF1000001CFFFFFFFFFFB000000000
+000000000000008FFFFF100000005CFFFFFFFFF900000000
+000000000000008FFFFF10000000003AFFFFFFFF30000000
+000000000000008FFFFF10000000000019FFFFFF90000000
+000000000000009FFFFF000000000000006FFFFFD0000000
+00000000000000BFFFFF000000000000000EFFFFE0000000
+00000000000000FFFFFD000000000000000FFFFFD0000000
+00000000000009FFFFF900002A300000006FFFFFA0000000
+00000004A768CFFFFFF500006FFEA7557BFFFFFF40000000
+00000007FFFFFFFFFFD00000AFFFFFFFFFFFFFFB00000000
+00000009FFFFFFFFFF300000EFFFFFFFFFFFFFD100000000
+0000000CFFFFFFFFF4000001FFFFFFFFFFFFFA1000000000
+0000000BFFFFFFE91000000016BFFFFFFFE9300000000000
+000000000344310000000000000013443100000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JAVASCRIPT_1(_alias) ENTITY(rectangle,black,javascript_1,_alias,DEV JAVASCRIPT_1)
+!define DEV_JAVASCRIPT_1(_alias,_label) ENTITY(rectangle,black,javascript_1,_label,_alias,DEV JAVASCRIPT_1)
+!define DEV_JAVASCRIPT_1(_alias,_label,_shape) ENTITY(_shape,black,javascript_1,_label,_alias,DEV JAVASCRIPT_1)
+!define DEV_JAVASCRIPT_1(_alias,_label,_shape,_color) ENTITY(_shape,_color,javascript_1,_label,_alias,DEV JAVASCRIPT_1)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/jekyll_small.puml b/stdlib/devicons/jekyll_small.puml
new file mode 100644
index 000000000..35ae80418
--- /dev/null
+++ b/stdlib/devicons/jekyll_small.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $jekyll_small [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000004A55000000000000000000
+000000000000000000000000008D30560000000000000000
+00000000000000000000000000BEFB69B000000000000000
+00000000000000000000000001C07CFF8000000000000000
+0000000000000000000000000660000C0000000000000000
+0000000000000000000000000B0000570000000000000000
+000000000000000000000000290000B10000000000000000
+000000000000000000000000830002B00000000000000000
+000000000000000000000000B00009400000000000000000
+00000000000000000000000470004E000000000000000000
+00000000000000000000000A100788000000000000000000
+00000000000000000000001C49FA92000000000000000000
+00000000000000000000006ECFF7B0000000000000000000
+0000000000000000000000C2DFF760000000000000000000
+000000000000000000000393FF9B00000000000000000000
+00000000000000000000092AFF7900000000000000000000
+000000000000000000000B1DFE9300000000000000000000
+000000000000000000007C07F8B000000000000000000000
+00000000000000000000C17DF77000000000000000000000
+0000000000000000000382EFCA1000000000000000000000
+0000000000000000000839FF7A0000000000000000000000
+0000000000000000000A0FFF840000000000000000000000
+000000000000000000286FF9C00000000000000000000000
+00000000000000000062CFF7700000000000000000000000
+00000000000000000082FFDA100000000000000000000000
+0000000000000000003BFFBA000000000000000000000000
+00000000000000000006EFB1000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JEKYLL_SMALL(_alias) ENTITY(rectangle,black,jekyll_small,_alias,DEV JEKYLL_SMALL)
+!define DEV_JEKYLL_SMALL(_alias,_label) ENTITY(rectangle,black,jekyll_small,_label,_alias,DEV JEKYLL_SMALL)
+!define DEV_JEKYLL_SMALL(_alias,_label,_shape) ENTITY(_shape,black,jekyll_small,_label,_alias,DEV JEKYLL_SMALL)
+!define DEV_JEKYLL_SMALL(_alias,_label,_shape,_color) ENTITY(_shape,_color,jekyll_small,_label,_alias,DEV JEKYLL_SMALL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/jenkins.puml b/stdlib/devicons/jenkins.puml
new file mode 100644
index 000000000..f700badaf
--- /dev/null
+++ b/stdlib/devicons/jenkins.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $jenkins [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000025787400000000000000000000
+000000000000000000006CFB767AE9000000000000000000
+0000000000000000003A7A30000007C10000000000000000
+0000000000000000087180000000004D1000000000000000
+00000000000000006726000000000008A000000000000000
+0000000000000002EA7700198000006BF200000000000000
+000000000000000C500800A2000000006700000000000000
+000000000000001D00060030000000000800000000000000
+000000000000006B00240000030020003900000000000000
+00000000000005CC5322000000700704AB50000000000000
+0000000000003C4E587500005B80073429C3000000000000
+000000000000D284B7C60000000000A1082D000000000000
+0000000000086072430000000000001A0807800000000000
+00000000001D003700000000000200570700D10000000000
+000000000076000A64300000000577255400670000000000
+0000000000D100009E00000003ACB7D590001C0000000000
+0000000001C000000C1002000531310280000C1000000000
+000000000490000005700430007BB50B10000A3000000000
+000000000570000001D000620000008E7000075000000000
+00000000066000006DB9000771005DE1B800076000000000
+000000000670002B7009B8ABEFCABD780B80076000000000
+00000000058009C2000057B004B9A00800B0094000000000
+0000000002B05A00000000800075A00702700B2000000000
+0000000000D01C000000004000866B7906200D0000000000
+0000000000A30C1000000006497436060900490000000000
+00000000004A066000004004A00835131800A40000000000
+00000000000C21B000005002B10454406302C00000000000
+000000000003B0B0000040003A939910A4ACB00000000000
+00000000000097A00006612456AFFD9CFA30850000000000
+0000000000000BC3003BD9654335B5D482401B0000000000
+00000000000000C500006000000060A270320C0000000000
+0000000000000056000060000000608580320A0000000000
+0000000000000047000060000000517796721A0000000000
+000000000000002E810061000000459C5599920000000000
+00000000000000018E946300000038D10000000000000000
+0000000000000000006BC700000023A10000000000000000
+000000000000000000001B00000014730000000000000000
+000000000000000000000C00000009B30000000000000000
+00000000000000000000083000000C300000000000000000
+0000000000000000000002EB9879BA000000000000000000
+000000000000000000000002455430000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JENKINS(_alias) ENTITY(rectangle,black,jenkins,_alias,DEV JENKINS)
+!define DEV_JENKINS(_alias,_label) ENTITY(rectangle,black,jenkins,_label,_alias,DEV JENKINS)
+!define DEV_JENKINS(_alias,_label,_shape) ENTITY(_shape,black,jenkins,_label,_alias,DEV JENKINS)
+!define DEV_JENKINS(_alias,_label,_shape,_color) ENTITY(_shape,_color,jenkins,_label,_alias,DEV JENKINS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/jira.puml b/stdlib/devicons/jira.puml
new file mode 100644
index 000000000..2d0d888d7
--- /dev/null
+++ b/stdlib/devicons/jira.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $jira [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000005500000000000000000000000
+0000000000000000000001DFFD1000000000000000000000
+0000000000000000000007FFFF7000000000000000000000
+00000000000003CFC20008FFFF80002CFC30000000000000
+0000000000000EFFFC0003FFFF3000CFFFE0000000000000
+0000000000001FFFFF00004AA40000FFFFF1000000000000
+0000000000000EFFFC000000000000DFFFE0000000000000
+00000000000004EFE20000000000002EFE40000000000000
+000000000000000100000000000000001000000000000000
+000000000000000000000000000000000000000000000000
+000000000DC61000000000000000000000016C7000000000
+000000000EFFFC82000000000000000039DFFFE000000000
+000000000CFFFFFF1000166666610001FFFFFFC000000000
+0000000008FFFFFF90006FFFFFF60009FFFFFF7000000000
+0000000002FFFFFFF1001FFFFFF1002FFFFFFF2000000000
+0000000000CFFFFFFC0007FFFF7000CFFFFFFC0000000000
+00000000004FFFFFFF7000CFFB0008FFFFFFF40000000000
+00000000000CFFFFFFF4001CC1004FFFFFFFC00000000000
+000000000001FFFFFFFF30000004FFFFFFFF200000000000
+0000000000006FFFFFFFE200002EFFFFFFF7000000000000
+0000000000000AFFFFFFFE2002EFFFFFFFA0000000000000
+00000000000000CFFFFFFFE22EFFFFFFFC00000000000000
+000000000000001EFFFFFFFFFFFFFFFFE100000000000000
+0000000000000001EFFFFFFFFFFFFFFE1000000000000000
+00000000000000002EFFFFFFFFFFFFE20000000000000000
+000000000000000002EFFFFFFFFFFE200000000000000000
+0000000000000000003FFFFFFFFFF3000000000000000000
+00000000000000000004FFFFFFFFB0000000000000000000
+000000000000000000004FFFFFFFF5000000000000000000
+0000000000000000000005FFFFFFFF100000000000000000
+00000000000000000BE1007FFFFFFFB00000000000000000
+00000000000000005FFD1009FFFFFFF50000000000000000
+0000000000000000EFFFC000CFFFFFFD0000000000000000
+0000000000000005FFFFFA002FFFFFFF5000000000000000
+000000000000000CFFFFFF2007FFFFFFC000000000000000
+000000000000002FFFFFFE0000EFFFFFF100000000000000
+000000000000006FFFFFF700007FFFFFF600000000000000
+00000000000000AFFFFFF100001FFFFFFA00000000000000
+00000000000000CFFFFFE000000EFFFFFC00000000000000
+00000000000000DFFFFFA000000BFFFFFD00000000000000
+000000000000001444441000000144444100000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JIRA(_alias) ENTITY(rectangle,black,jira,_alias,DEV JIRA)
+!define DEV_JIRA(_alias,_label) ENTITY(rectangle,black,jira,_label,_alias,DEV JIRA)
+!define DEV_JIRA(_alias,_label,_shape) ENTITY(_shape,black,jira,_label,_alias,DEV JIRA)
+!define DEV_JIRA(_alias,_label,_shape,_color) ENTITY(_shape,_color,jira,_label,_alias,DEV JIRA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/joomla.puml b/stdlib/devicons/joomla.puml
new file mode 100644
index 000000000..42bc8d662
--- /dev/null
+++ b/stdlib/devicons/joomla.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $joomla [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000047610000000000000000000016740000000000
+000000003EFFFE60000000000000000006FFFFE300000000
+00000002FFFFFFF400000000000000005FFFFFFF20000000
+00000009FFFFFFFD0000000000000000EFFFFFFF90000000
+0000000DFFFFFFFFCDDA50000028CDCAFFFFFFFFD0000000
+0000000CFFFFFFFFFFFFFE3008FFFFFFFFFFFFFFD0000000
+00000009FFFFFFFFFFFFFFF2BFFFFFFFFFFFFFFF90000000
+00000002FFFFFFFFFFFFFF7BFFFFFFFFFFFFFFFF20000000
+000000004FFFFFFFFEFFF7BFFFFFFEFFFFFFFFE400000000
+00000000009FFFFE30077BFFFFFD2008FFFFF61000000000
+00000000008FFFF50000BFFFFFD20000CFFFF10000000000
+0000000000AFFFF1000BFFFFFD6F50008FFFF30000000000
+00000000009FFFF300BFFFFFD6FFF500BFFFF20000000000
+00000000006FFFFC0BFFFFFD6FFFFF54FFFFF00000000000
+00000000001FFFFFC7FFFFD15FFFFFF6CFFF900000000000
+000000000009FFFFFC7FFD1005FFFFFF6CFF200000000000
+000000000000CFFFFFC7D100005FFFFFF6C5000000000000
+0000000000001DFFFFFC10000005FFFFFF50000000000000
+000000000000A6DFFFFFC000004C6FFFFFF4000000000000
+000000000007FF6DFFFFFC0004FFC6FFFFFE100000000000
+00000000000FFFF6CFFFFFC04FFFFD6FFFFF800000000000
+00000000005FFFFD1DFFFFD5FFFFFF56FFFFE00000000000
+00000000008FFFF401DFFD5FFFFFF700BFFFF10000000000
+0000000000AFFFF1001DD5FFFFFF70008FFFF30000000000
+00000000009FFFF400015FFFFFF70000BFFFF20000000000
+0000000002BFFFFD2005FFFFFF781006FFFFF93000000000
+000000006FFFFFFFFCDFFFFFF7BFFCDFFFFFFFF600000000
+00000004FFFFFFFFFFFFFFFF7CFFFFFFFFFFFFFF40000000
+0000000BFFFFFFFFFFFFFFF78FFFFFFFFFFFFFFFB0000000
+0000000EFFFFFFFFFFFFFF500AFFFFFFFFFFFFFFE0000000
+0000000DFFFFFFFFEFFC7100004AEFFCFFFFFFFFD0000000
+00000009FFFFFFFB0000000000000000BFFFFFFF90000000
+00000001EFFFFFF300000000000000003FFFFFFE10000000
+000000002CFFFD40000000000000000004DFFFC200000000
+000000000025300000000000000000000002520000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JOOMLA(_alias) ENTITY(rectangle,black,joomla,_alias,DEV JOOMLA)
+!define DEV_JOOMLA(_alias,_label) ENTITY(rectangle,black,joomla,_label,_alias,DEV JOOMLA)
+!define DEV_JOOMLA(_alias,_label,_shape) ENTITY(_shape,black,joomla,_label,_alias,DEV JOOMLA)
+!define DEV_JOOMLA(_alias,_label,_shape,_color) ENTITY(_shape,_color,joomla,_label,_alias,DEV JOOMLA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/jquery_logo.puml b/stdlib/devicons/jquery_logo.puml
new file mode 100644
index 000000000..1a701b31f
--- /dev/null
+++ b/stdlib/devicons/jquery_logo.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $jquery_logo [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000006000000000000000000000
+000000000000000000020000029000000000000000000000
+000000000000000000160000089000000000000000000000
+000000000000000000A400000BC000000000000000000000
+000000000012000003F100000AF100000000000000000000
+000000000090000009F1000008F800000000000000000000
+00000000079000000DF1000003FF30000000000000000000
+000000002F6000000FF3000000CFE2000000000000000000
+00000000BF4000001FF70000002FFE500000000200000000
+00000001FF2000000FFC00000004FFFC5100039100000000
+00000007FF2000000EFF300000002CFFFFFEFC2000000000
+0000000AFF4000000BFFC0000000004BDEEB600000000000
+0000000CFF60000005FFF600000000000000000000000000
+0000000DFF90000000EFFF40000000000000000000000000
+0000000DFFE00000006FFFF4000000000000000020000000
+0000000CFFF30000000CFFFF600000000000000540000000
+0000000AFFFA00000001EFFFFB2000000000008A00000000
+00000007FFFF200000002DFFFFFC510000027EC000000000
+00000002FFFFB000000001BFFFFFFFECBCEFFB1000000000
+00000000DFFFF50000000006EFFFFFFFFFFF700000000000
+000000006FFFFF200000000005BFFFFFFC71000000000000
+000000000EFFFFE100000000000012210000000000000000
+0000000006FFFFFE20000000000000000000000000000000
+0000000000BFFFFFE4000000000000000000000500000000
+00000000001EFFFFFF80000000000000000001A200000000
+000000000003FFFFFFFE60000000000000005E5000000000
+0000000000003FFFFFFFFE8200000000016DF80000000000
+00000000000002DFFFFFFFFFEB98778ACFFF900000000000
+000000000000001AFFFFFFFFFFFFFFFFFFF7000000000000
+00000000000000004DFFFFFFFFFFFFFFFC20000000000000
+0000000000000000004BFFFFFFFFFFFA4000000000000000
+000000000000000000000479AAA974000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JQUERY_LOGO(_alias) ENTITY(rectangle,black,jquery_logo,_alias,DEV JQUERY_LOGO)
+!define DEV_JQUERY_LOGO(_alias,_label) ENTITY(rectangle,black,jquery_logo,_label,_alias,DEV JQUERY_LOGO)
+!define DEV_JQUERY_LOGO(_alias,_label,_shape) ENTITY(_shape,black,jquery_logo,_label,_alias,DEV JQUERY_LOGO)
+!define DEV_JQUERY_LOGO(_alias,_label,_shape,_color) ENTITY(_shape,_color,jquery_logo,_label,_alias,DEV JQUERY_LOGO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/jquery_ui_logo.puml b/stdlib/devicons/jquery_ui_logo.puml
new file mode 100644
index 000000000..c961de9a0
--- /dev/null
+++ b/stdlib/devicons/jquery_ui_logo.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $jquery_ui_logo [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000478888888888888888888888888874000000000
+00000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
+0000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFE037BFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFB000008FFFF0000000
+0000000FFFFFFEEEEEFFFFFFFFFFFF700000AFFFF0000000
+0000000FFFFFA00000AFFFFFFFFFFF300000FFFFF0000000
+0000000FFFFFA00000AFFFFFFFFFFE000003FFFFF0000000
+0000000FFFFFA00000AFFFFFFFFFFE840007FFFFF0000000
+0000000FFFFFA00000AFFFFFFFFFFFFFFB7CFFFFF0000000
+0000000FFFFFA00000AFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFA00000AFFFFFFFFFFD88888DFFFFF0000000
+0000000FFFFFC000009FFFFFFFFFF800000CFFFFF0000000
+0000000FFFFFD000004FFFFFFFFFF400000EFFFFF0000000
+0000000FFFFFF100000CFFFFFFFFC000001FFFFFE0000000
+0000000DFFFFF6000001DFFFFFFD1000007FFFFFD0000000
+0000000AFFFFFD00000008EFFE80000000DFFFFFA0000000
+00000006FFFFFF60000000011000000007FFFFFF60000000
+00000001FFFFFFF300000000000000003FFFFFFF10000000
+00000000AFFFFFFE2000000000000002EFFFFFFA00000000
+000000002FFFFFFFF40000000000005FFFFFFFF200000000
+0000000008FFFFFFFFB2000000002BFFFFFFFF8000000000
+0000000000CFFFFFFFFFD864469DFFFFFFFFFC0000000000
+00000000001EFFFFFFFFFFFFFFFFFFFFFFFFD10000000000
+000000000001CFFFFFFFFFFFFFFFFFFFFFFC100000000000
+0000000000000AFFFFFFFFFFFFFFFFFFFFA0000000000000
+000000000000003BFFFFFFFFFFFFFFFFB300000000000000
+000000000000000038DFFFFFFFFFFD830000000000000000
+000000000000000000014555555410000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_JQUERY_UI_LOGO(_alias) ENTITY(rectangle,black,jquery_ui_logo,_alias,DEV JQUERY_UI_LOGO)
+!define DEV_JQUERY_UI_LOGO(_alias,_label) ENTITY(rectangle,black,jquery_ui_logo,_label,_alias,DEV JQUERY_UI_LOGO)
+!define DEV_JQUERY_UI_LOGO(_alias,_label,_shape) ENTITY(_shape,black,jquery_ui_logo,_label,_alias,DEV JQUERY_UI_LOGO)
+!define DEV_JQUERY_UI_LOGO(_alias,_label,_shape,_color) ENTITY(_shape,_color,jquery_ui_logo,_label,_alias,DEV JQUERY_UI_LOGO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/js_badge.puml b/stdlib/devicons/js_badge.puml
new file mode 100644
index 000000000..1bb5dad46
--- /dev/null
+++ b/stdlib/devicons/js_badge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $js_badge [48x48/16] {
+000000000000000000000000000000000000000000000000
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFB7778FFFFFFFB64469FFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFFC20000001AFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFC0000000000AFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFF300000000000EFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFC00005DD7002BFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFF90000FFFF87FFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFF90000FFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFB00006FFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFF0000029FFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFF700000018FFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFF4000000019FFFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFFF8000000006FFFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFFFFE600000008FFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFFFFFFF8100000EFFF8
+6FFFFFFFFFFFFFFFFFFFF70002FFFFFFFFFFFF60000AFFF8
+6FFFFFFFFFFFFFFFFFFFF60002FFFFFDFFFFFFF10007FFF8
+6FFFFFFFFFFFFFF77FFFF50003FFFE608FFFFFF10007FFF8
+6FFFFFFFFFFFFB2009FFD00005FFA10007FFFF800009FFF8
+6FFFFFFFFFFFE000002300000AFFB00000033000000EFFF8
+6FFFFFFFFFFFF800000000002FFFF80000000000008FFFF8
+6FFFFFFFFFFFFF6000000001DFFFFFA00000000007FFFFF8
+6FFFFFFFFFFFFFFB4000017FFFFFFFFE82000015DFFFFFF8
+6FFFFFFFFFFFFFFFFFEDEFFFFFFFFFFFFFFDDEFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+6EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE7
+}
+
+
+!define DEV_JS_BADGE(_alias) ENTITY(rectangle,black,js_badge,_alias,DEV JS_BADGE)
+!define DEV_JS_BADGE(_alias,_label) ENTITY(rectangle,black,js_badge,_label,_alias,DEV JS_BADGE)
+!define DEV_JS_BADGE(_alias,_label,_shape) ENTITY(_shape,black,js_badge,_label,_alias,DEV JS_BADGE)
+!define DEV_JS_BADGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,js_badge,_label,_alias,DEV JS_BADGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/komodo.puml b/stdlib/devicons/komodo.puml
new file mode 100644
index 000000000..cd91be348
--- /dev/null
+++ b/stdlib/devicons/komodo.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $komodo [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000345678999886420000000000000000000000000
+000000003FD998777778ABCEDA7300000000000000000000
+00000000BB000002467776654459CA500000000000000000
+00000001F30029EFFFFFFFFFFFD9527C8100000000000000
+00000005E004FFFFECA9878BFFFFFF924C80000000000000
+00000008A01B964100000000049FFFFF916C300000000000
+0000000B600000159CEFF49FEC628FFFFE52C60000000000
+0000000D40005CFFFFFF80FFFFFA02BFFFF8099000000000
+0000000E207FFFFFFFFE00FFFFFD7A97FFFFB09800000000
+0000000F6EFFFFFFFFFA00AFFFFFFFFEAEFFFB0C30000000
+0000000FFFFFFFFFFFFA001CFFFFFFFFFFFFFF75A0000000
+0000000E3017EFFFFFFF30008FFFFFFFFFFFFFC2E0000000
+0000000D50001AFFFFFFFB73029EFFFFFFFFFFE1F0000000
+0000000B9000004DFFFFFFB8FB735AEFFFFFFFC3E0000000
+00000009C00000005DFFE70BDBFFE832479ABB58A0000000
+00000006F0000000002203DF2004AEFE9400001E50000000
+00000002F30000000016CFE400000049EFFA55DD00000000
+00000000E60000269DFFE80000000000026AEFF300000000
+00000000AB58BFFFFFA50000000000000000011000000000
+000000005FFFFC9620000000000000000000000000000000
+000000000752000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_KOMODO(_alias) ENTITY(rectangle,black,komodo,_alias,DEV KOMODO)
+!define DEV_KOMODO(_alias,_label) ENTITY(rectangle,black,komodo,_label,_alias,DEV KOMODO)
+!define DEV_KOMODO(_alias,_label,_shape) ENTITY(_shape,black,komodo,_label,_alias,DEV KOMODO)
+!define DEV_KOMODO(_alias,_label,_shape,_color) ENTITY(_shape,_color,komodo,_label,_alias,DEV KOMODO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/krakenjs.puml b/stdlib/devicons/krakenjs.puml
new file mode 100644
index 000000000..5b821e14a
--- /dev/null
+++ b/stdlib/devicons/krakenjs.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $krakenjs [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000001100000000000000000000000
+00000000000000000000001DD10000000000000000000000
+0000000000000000000000DFFD0000000000000000000000
+000000000000000000000AFFFF9000000000000000000000
+000000000000000000004FFFFFF400000000000000000000
+00000000000000000000CFFFFFFC00000000000000000000
+00000000000000000002FFFFFFFF20000000000000000000
+00000000000000014007FFFFFFFF70042000000000000000
+0000000000000000640BFFFFFFFFB0460000000000000000
+00000000000000001C0EFFFFFFFFE0B10000000000000000
+00000000000000000F0FFFFFFFFFF0F00000000000000000
+00000000000000010F2FFFFFFFFFF1F11000000000000000
+00000000000000532F2EFFCFFCFFE2F33500000000000000
+00000000000000A03F43FEBFFBEF34F30A00000000000000
+00000000000000A41FFFFFFFFFFFFFF14A00000000000000
+000000000000004E35EFFFFFFFFFFE53E400000000000000
+000000000000007FFEFFFFFFFFFFFFEFF700000000000000
+0000000000000CFFFFFFFFFFFFFFFFFFFFC0000000000000
+0000000000003F7018FFFFC99CFFFF8107F3000000000000
+0000000000001F601EFE71000017EFE106F1000000000000
+00000000000005F79F700000000007F97F50000000000000
+0000000000000029FD136400003531DF9200000000000000
+00000000000000004EFE98A10A89EFF40000000000000000
+000000000000000000200005510001000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_KRAKENJS(_alias) ENTITY(rectangle,black,krakenjs,_alias,DEV KRAKENJS)
+!define DEV_KRAKENJS(_alias,_label) ENTITY(rectangle,black,krakenjs,_label,_alias,DEV KRAKENJS)
+!define DEV_KRAKENJS(_alias,_label,_shape) ENTITY(_shape,black,krakenjs,_label,_alias,DEV KRAKENJS)
+!define DEV_KRAKENJS(_alias,_label,_shape,_color) ENTITY(_shape,_color,krakenjs,_label,_alias,DEV KRAKENJS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/krakenjs_badge.puml b/stdlib/devicons/krakenjs_badge.puml
new file mode 100644
index 000000000..d965011fd
--- /dev/null
+++ b/stdlib/devicons/krakenjs_badge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $krakenjs_badge [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000000000005DD50000000000000000000000
+000000000000000000005DFFFFD500000000000000000000
+0000000000000000005DFFFFFFFFD5000000000000000000
+00000000000000005DFFFFFDDFFFFFD50000000000000000
+000000000000006DFFFFFFC11DFFFFFFD600000000000000
+0000000000005DFFFFFFFE1001EFFFFFFFD5000000000000
+00000000006EFFFFFFFFF400004FFFFFFFFFE60000000000
+0000000006FFFFFFFFFFA000000BFFFFFFFFFF6000000000
+0000000006FFFFFFFFFF20000003FFFFFFFFFF6000000000
+0000000006FFFFFFFFFD00000000DFFFFFFFFF6000000000
+0000000006FFFFFF8EF8000000008FE8FFFFFF6000000000
+0000000006FFFFFFE5F5000000005F5EFFFFFF6000000000
+0000000006FFFFFFF2F2000000003F2FFFFFFF6000000000
+0000000006FFFFFFF2C1000000001C2FFFFFFF6000000000
+0000000006FFFFFAF1B1000000001B1FAFFFFF6000000000
+0000000006FFFFABF0B901700710AB0FBAFFFF6000000000
+0000000006FFFF8BF04700000000840FB8FFFF6000000000
+0000000006FFFFC3F60000000000006F3CFFFF6000000000
+0000000006FFFFF227300000000003722FFFFF6000000000
+0000000006FFFC10000000000000000001CFFF6000000000
+0000000006FFF2288300000000000038822FFF6000000000
+0000000006FFF17FF80028DFFD82008FF72FFF6000000000
+0000000006FFFA0BB02BFFFFFFFFB20BB0AFFF6000000000
+0000000006FFFFC310FFFFFFFFFFFF013CFFFF6000000000
+00000000003BFFFFA021247FF742120AFFFFB30000000000
+0000000000003BFFFD9DFFDBBDFFD9DFFFB3000000000000
+000000000000003BFFFFFFFEEFFFFFFFB300000000000000
+00000000000000002AFFFFFFFFFFFFA20000000000000000
+00000000000000000029FFFFFFFF92000000000000000000
+0000000000000000000029FFFF9200000000000000000000
+00000000000000000000002AA20000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_KRAKENJS_BADGE(_alias) ENTITY(rectangle,black,krakenjs_badge,_alias,DEV KRAKENJS_BADGE)
+!define DEV_KRAKENJS_BADGE(_alias,_label) ENTITY(rectangle,black,krakenjs_badge,_label,_alias,DEV KRAKENJS_BADGE)
+!define DEV_KRAKENJS_BADGE(_alias,_label,_shape) ENTITY(_shape,black,krakenjs_badge,_label,_alias,DEV KRAKENJS_BADGE)
+!define DEV_KRAKENJS_BADGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,krakenjs_badge,_label,_alias,DEV KRAKENJS_BADGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/laravel.puml b/stdlib/devicons/laravel.puml
new file mode 100644
index 000000000..655e2811f
--- /dev/null
+++ b/stdlib/devicons/laravel.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $laravel [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000012000000000000000000000000000000000
+00000008BCDEEDE900000000000000000000000000000000
+0000000CC210002F30000000000000000000000000000000
+00000005F2000008D0000000000000000000000000000000
+00000000DA000000E6000000000000000000000000000000
+000000006F2000005F100000000000000000000000000000
+000000000E9000000C900000000000001369700000000000
+0000000008F1000003F300000000004EEB86980000000000
+0000000001F9000000AC00000000000D50000C4000000000
+00000000009F1000001F600000000003E20001D300000000
+00000000002F80000007F100000000007C00003D10000000
+00000000000AF1000000D900000000000C70037EB0000000
+000000000003F80000005F300000000005FBFFC830000000
+000000000000CE0000000BC00000048CFFCF610000000000
+0000000000004F70000002F626ADFFB73008C00000000000
+0000000000000DE0000015EFFFD951000000C70000000000
+00000000000005F726ADFFDFC100000000002E3000000000
+00000000000000EFFFEA6107F2000000000005E100000000
+000000000000002862000000DB000000000000BB00000000
+0000000000000000000000005F50000000028DFF20000000
+0000000000000000000000000BE0000039EFFA4000000000
+00000000000000000000000002F8039EFFB5000000000000
+00000000000000000000000000AFDFFD7200000000000000
+000000000000000000000000001ED8300000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_LARAVEL(_alias) ENTITY(rectangle,black,laravel,_alias,DEV LARAVEL)
+!define DEV_LARAVEL(_alias,_label) ENTITY(rectangle,black,laravel,_label,_alias,DEV LARAVEL)
+!define DEV_LARAVEL(_alias,_label,_shape) ENTITY(_shape,black,laravel,_label,_alias,DEV LARAVEL)
+!define DEV_LARAVEL(_alias,_label,_shape,_color) ENTITY(_shape,_color,laravel,_label,_alias,DEV LARAVEL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/less.puml b/stdlib/devicons/less.puml
new file mode 100644
index 000000000..07566ae4e
--- /dev/null
+++ b/stdlib/devicons/less.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $less [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000001567730000000000000000000000046100000000
+00000005FFFFF700000000000000000000000BFF60000000
+0000000EF95CF70000000000000000000000039FE0000000
+0000000FF00BF70000000000000000000000000FF1000000
+0000001FE00BF70000000000000000000000000EF1000000
+0000001FE00BF70007CEC60006CDDA3039DDB40EF1000000
+0000001FE00BF700CFFFFF807FFEEF34FFEEF60EF2000000
+0000004FC00BF707FD204FF2DF70020AFA00110CF4000000
+000005EF700BF70DF5000CF6CFA00009FC100007FE600000
+00000CFE000BF70FFEDDDFF75FFE8103FFF92000DFC00000
+000004DF800BF71FFCBBBBB603BFFF3029FFF608FC400000
+0000003FC00BF70EF50000000003CFC0001AFF0CF4000000
+0000001FE00BFA09FD20000000005FE00002FF1EF2000000
+0000001FE007FFB2EFFDCEB0DEBBFFAAEBBEFD0EF1000000
+0000001FE0009EB02AFFFE80CFFFF919FFFFB20EF1000000
+0000000FF000000000010000001000000110000FF1000000
+0000000EFB5000000000000000000000000005BFD0000000
+00000004DFC00000000000000000000000000CFE30000000
+000000000230000000000000000000000000032000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_LESS(_alias) ENTITY(rectangle,black,less,_alias,DEV LESS)
+!define DEV_LESS(_alias,_label) ENTITY(rectangle,black,less,_label,_alias,DEV LESS)
+!define DEV_LESS(_alias,_label,_shape) ENTITY(_shape,black,less,_label,_alias,DEV LESS)
+!define DEV_LESS(_alias,_label,_shape,_color) ENTITY(_shape,_color,less,_label,_alias,DEV LESS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/linux.puml b/stdlib/devicons/linux.puml
new file mode 100644
index 000000000..a13441b65
--- /dev/null
+++ b/stdlib/devicons/linux.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $linux [48x48/16] {
+000000000000000000000000000000000000000000000000
+00000000000000000000269AA74000000000000000000000
+00000000000000000007FFFFFFFD30000000000000000000
+0000000000000000006FFFFFFFFFF4000000000000000000
+000000000000000001FFFFFFFFFFFE100000000000000000
+000000000000000006FFFFFFFFFFFF700000000000000000
+000000000000000009FFFFFFFFFFFFC00000000000000000
+00000000000000000AFFFFFFFFFFFFF00000000000000000
+00000000000000000AF9CFFF836FFFF20000000000000000
+000000000000000009A32EFD0739FFF40000000000000000
+0000000000000000087D8BFD6F87FFF60000000000000000
+0000000000000000077FFBCE9FF8FFF70000000000000000
+000000000000000006DB65314AA9FFF80000000000000000
+000000000000000005E200000018FFFB0000000000000000
+000000000000000004B000000631FFFD0000000000000000
+000000000000000003F61004722BFFFF2000000000000000
+000000000000000006FA34410763FFFFA000000000000000
+00000000000000000CF3A5378100CFFFF400000000000000
+00000000000000007FA0034100005FFFFD00000000000000
+0000000000000004FF20000000000CFFFF90000000000000
+000000000000002EFA000000000006FFFFF4000000000000
+00000000000000CFF5000000000004FFFFFE100000000000
+00000000000007FFF0000000000000DFFFFFC00000000000
+0000000000000EFFA00000000000004FC8FFF50000000000
+0000000000004FAD200000000000000AFE8FFD0000000000
+0000000000008F9A0000000000000002FF9EFF5000000000
+000000000000DAE20000000000000000DFEAFFC000000000
+000000000004F8B000000000000000009FF8FFF100000000
+00000000000CCB6000000000000000007FF8FFF400000000
+00000000005F9E2000000000000000006FF9FFF600000000
+0000000000CF7F0000000000000000006FBCFFF700000000
+0000000003FF9B0000000000000000006F7DFFF700000000
+0000000005FFF50000000000000000007A9A99E600000000
+000000000573AE4000000000000000179DFFFF9200000000
+0000000009000AF700000000000000818FFFFFC700000000
+00000298730000EFC1000000000000902FFFFC0700000000
+000008000000004FFD100000000000A006EFA00430000000
+000007000000000BFFD10000000000800000000080000000
+0000070000000001EFF80000000001900000000029300000
+00000800000000003FE2000000000CA00000000000760000
+0000060000000000081000000002CFA00000000000080000
+000006000000000000800000017FFF900000000002610000
+0000610000000000007FA88ACFFFFF600000000274000000
+0000710000000000002FFFFFFFFFFF500000006600000000
+0000057741000000000FFFFFFFFFFF200000072000000000
+0000000015763000003D743222356A200001810000000000
+000000000000366326800000000000840057000000000000
+000000000000000131000000000000036730000000000000
+}
+
+
+!define DEV_LINUX(_alias) ENTITY(rectangle,black,linux,_alias,DEV LINUX)
+!define DEV_LINUX(_alias,_label) ENTITY(rectangle,black,linux,_label,_alias,DEV LINUX)
+!define DEV_LINUX(_alias,_label,_shape) ENTITY(_shape,black,linux,_label,_alias,DEV LINUX)
+!define DEV_LINUX(_alias,_label,_shape,_color) ENTITY(_shape,_color,linux,_label,_alias,DEV LINUX)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/magento.puml b/stdlib/devicons/magento.puml
new file mode 100644
index 000000000..1853f2b8c
--- /dev/null
+++ b/stdlib/devicons/magento.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $magento [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000019910000000000000000000000
+0000000000000000000006EFFF6000000000000000000000
+00000000000000000002CFFFFFFC30000000000000000000
+0000000000000000009FFFFFFFFFF9000000000000000000
+00000000000000005EFFFFFFFFFFFFE50000000000000000
+000000000000001AFFFFFFF99FFFFFFFA100000000000000
+00000000000008FFFFFFFC3003CFFFFFFF80000000000000
+000000000004DFFFFFFF60000006FFFFFFFD300000000000
+0000000001AFFFFFFFA1000000001AFFFFFFFA1000000000
+000000006EFFFFFFE40000000000004DFFFFFFE600000000
+00000006FFFFFFF900000000000000009FFFFFFF60000000
+00000007FFFFFC30000000000000000003CFFFFF60000000
+00000007FFFF600000007900009700000006FFFF60000000
+00000007FFFF0000005EF900009FE5000000FFFF60000000
+00000007FFFF00002BFFF900009FFFB20000FFFF60000000
+00000007FFFF0000BFFFF900009FFFFB0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000007FFFF0000CFFFF900009FFFFC0000FFFF60000000
+00000005FFFF0000CFFFF900009FFFFC0000FFFF50000000
+000000002BFF0000CFFFF900009FFFFC0000FFB200000000
+00000000004D0000CFFFF900009FFFFC0000D40000000000
+0000000000000000CFFFF900009FFFFC0000000000000000
+0000000000000000CFFFF900009FFFFC0000000000000000
+0000000000000000BFFFFD2002DFFFFB0000000000000000
+00000000000000001BFFFFF77FFFFFB10000000000000000
+0000000000000000004DFFFFFFFFD4000000000000000000
+000000000000000000008FFFFFF800000000000000000000
+0000000000000000000002CFFC2000000000000000000000
+000000000000000000000007700000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MAGENTO(_alias) ENTITY(rectangle,black,magento,_alias,DEV MAGENTO)
+!define DEV_MAGENTO(_alias,_label) ENTITY(rectangle,black,magento,_label,_alias,DEV MAGENTO)
+!define DEV_MAGENTO(_alias,_label,_shape) ENTITY(_shape,black,magento,_label,_alias,DEV MAGENTO)
+!define DEV_MAGENTO(_alias,_label,_shape,_color) ENTITY(_shape,_color,magento,_label,_alias,DEV MAGENTO)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mailchimp.puml b/stdlib/devicons/mailchimp.puml
new file mode 100644
index 000000000..deab419e6
--- /dev/null
+++ b/stdlib/devicons/mailchimp.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mailchimp [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000220389206300000000000000000
+00000008901206B000000775600106600000000000000000
+000000008188458000061868000038214000000000000000
+000000008908808077034A62000068021210033400000000
+00000000D31B3076182774930002C9680C98786730000000
+00000003901700A89A9B99794376826B97628C9A90000000
+0000000000000000000000003410300010000D1000000000
+0000000000000000000000000000000000000D0000000000
+000000000000000000000000000000000000050000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MAILCHIMP(_alias) ENTITY(rectangle,black,mailchimp,_alias,DEV MAILCHIMP)
+!define DEV_MAILCHIMP(_alias,_label) ENTITY(rectangle,black,mailchimp,_label,_alias,DEV MAILCHIMP)
+!define DEV_MAILCHIMP(_alias,_label,_shape) ENTITY(_shape,black,mailchimp,_label,_alias,DEV MAILCHIMP)
+!define DEV_MAILCHIMP(_alias,_label,_shape,_color) ENTITY(_shape,_color,mailchimp,_label,_alias,DEV MAILCHIMP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/markdown.puml b/stdlib/devicons/markdown.puml
new file mode 100644
index 000000000..dfca63a70
--- /dev/null
+++ b/stdlib/devicons/markdown.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $markdown [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000233333333333333333333333333332000000000
+00000003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE30000000
+0000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000FFFF51113FFFFF91111EFFF61117FFFFFF0000000
+0000000FFFF400006FFFC00000EFFF50006FFFFFF0000000
+0000000FFFF400000AFE100000EFFF50006FFFFFF0000000
+0000000FFFF4000000D4000000EFFF50006FFFFFF0000000
+0000000FFFF400000010000000EFFF50006FFFFFF0000000
+0000000FFFF400000000000000EFFF50006FFFFFF0000000
+0000000FFFF400020000020000E9662000266AFFF0000000
+0000000FFFF4000760001C0000EE100000001EFFF0000000
+0000000FFFF40007F300CE0000EFA0000000CFFFF0000000
+0000000FFFF40007FE18FE0000EFF6000007FFFFF0000000
+0000000FFFF40007FFCFFE0000EFFF20002FFFFFF0000000
+0000000FFFF40007FFFFFE0000EFFFC000DFFFFFF0000000
+0000000FFFF74449FFFFFE4444EFFFF809FFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF0000000
+0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
+00000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC10000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MARKDOWN(_alias) ENTITY(rectangle,black,markdown,_alias,DEV MARKDOWN)
+!define DEV_MARKDOWN(_alias,_label) ENTITY(rectangle,black,markdown,_label,_alias,DEV MARKDOWN)
+!define DEV_MARKDOWN(_alias,_label,_shape) ENTITY(_shape,black,markdown,_label,_alias,DEV MARKDOWN)
+!define DEV_MARKDOWN(_alias,_label,_shape,_color) ENTITY(_shape,_color,markdown,_label,_alias,DEV MARKDOWN)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/materializecss.puml b/stdlib/devicons/materializecss.puml
new file mode 100644
index 000000000..47b3b5a73
--- /dev/null
+++ b/stdlib/devicons/materializecss.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $materializecss [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000002EEEEEC2000004EEEEEA000000000000000
+00000000000009FFFFF7010000CFFFFF4000000000000000
+0000000000000FFFFFF2000002FFFFFD0000000000000000
+0000000000004FFFFFC0000007FFFFF90000000000000000
+0000000000008FFFFF8000000BFFFFF50000000000000000
+000000000000CFFFFF5000000EFFFFF20000000000000000
+000000000000FFFFFF2000002FFFFFE00000000000000000
+000000000003FFFFFD0000005FFFFFA00000000000000000
+000000000006FFFFFA0000008FFFFF800000100000000000
+000000000009FFFFF9000000BFFFFF600000100000000000
+00000000000CFFFFF7000000EFFFFF400000100000000000
+00023111112FFFFFF2200001FFFFFE20000014BCCCC81000
+00000100004FFFFFE0300005FFFFFB1100002EFFFF900000
+00000200007FFFFFB0300008FFFFF80200007FFFFF100000
+00000010009FFFFF8020000BFFFFF5020000AFFFFC000000
+0000001000CFFFFF4020000EFFFFF1020000DFFFF9000000
+0000001001FFFFFF0002003FFFFFD0020002FFFFF7000000
+0000001006FFFFFC0002008FFFFF90002005FFFFF4000000
+000000000AFFFFF8000200BFFFFF50002009FFFFF1000000
+000000010EFFFFF2000112FFFFFE0000201EFFFFC0000000
+000000016DDDDD90000028DDDDD60000028DDDDD30000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MATERIALIZECSS(_alias) ENTITY(rectangle,black,materializecss,_alias,DEV MATERIALIZECSS)
+!define DEV_MATERIALIZECSS(_alias,_label) ENTITY(rectangle,black,materializecss,_label,_alias,DEV MATERIALIZECSS)
+!define DEV_MATERIALIZECSS(_alias,_label,_shape) ENTITY(_shape,black,materializecss,_label,_alias,DEV MATERIALIZECSS)
+!define DEV_MATERIALIZECSS(_alias,_label,_shape,_color) ENTITY(_shape,_color,materializecss,_label,_alias,DEV MATERIALIZECSS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/meteor.puml b/stdlib/devicons/meteor.puml
new file mode 100644
index 000000000..ceaa77af6
--- /dev/null
+++ b/stdlib/devicons/meteor.puml
@@ -0,0 +1,68 @@
+@startuml
+sprite $meteor [48x57/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000001000000000000000000000000000000000000000
+000000001300000000000000000000000000000000000000
+000000000240000000000000000000000000000000000000
+000000000026000002000000000000000000000000000000
+000000000002700000400000000000000000000000000000
+000000000000480000160000000000000000000000000000
+000000000000049000028000030000000000000000000000
+000000000000005A00003A00005000000000000000000000
+0000000000000005B00003C1000800000000000000000000
+00000000000000007B00005C100191000000000000000000
+000000000002100008C10006D2001B100000000000000000
+0000000000004300008D10007E3001C20000000000000000
+00000000000007300009D10009F3002D2000000000000000
+00000000000000840000AE2000AF4003E300000000000000
+000000000000000A60000BE2000BF5004F40000000000000
+0000000000000000B80000BF4000CF7004F6000000000000
+00000000000000000C80000CF4001DF7006F600000000000
+000000000000011001D90001DF4001DF8007F60000000000
+0000000000000032001EB0001EF5002EF9008F7000000000
+00000000000000053002EC1001EF7002EFA008F700000000
+000000000000000074003FC1002EF7003FFA008F00000000
+0000000000000000095004FD1003FF8003FFB00100000000
+000000000000000000B6005FD1004FF8004FFB0000000000
+0000000000000000000C7006FE2004FF9005FFB000000000
+00000000000000000001D8007FE2005FF9005FF800000000
+000000000000000000001DA008FE3006FFA004C400000000
+0000000000000000000001DB008FF4006FFB000000000000
+00000000000000000000002EC009FF4007FFB00000000000
+000000000000000000000003FC00BFF4009FF70000000000
+0000000000000000000000003FC00BFF5009C20000000000
+00000000000000000000000004FB00CFF300000000000000
+000000000000000000000000003B000AD200000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_METEOR(_alias) ENTITY(rectangle,black,meteor,_alias,DEV METEOR)
+!define DEV_METEOR(_alias,_label) ENTITY(rectangle,black,meteor,_label,_alias,DEV METEOR)
+!define DEV_METEOR(_alias,_label,_shape) ENTITY(_shape,black,meteor,_label,_alias,DEV METEOR)
+!define DEV_METEOR(_alias,_label,_shape,_color) ENTITY(_shape,_color,meteor,_label,_alias,DEV METEOR)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/meteorfull.puml b/stdlib/devicons/meteorfull.puml
new file mode 100644
index 000000000..34f9aeaa8
--- /dev/null
+++ b/stdlib/devicons/meteorfull.puml
@@ -0,0 +1,68 @@
+@startuml
+sprite $meteorfull [48x57/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000001000000000000000000
+000000000000000000000000000000201100000000000000
+000000000000000000000000000000041313000000000000
+394002950599996049999920899993205152500006988710
+5FE10CF908FBBB706CEFDC30DEBBB404072737000AFCDFC0
+5FF96FF908E00000005F3000DA0000016082948109E008F1
+5F9FF9F908FDDD20005F2000DFDDC00228193A4509F44CF0
+5F2CE1F808F88810005F2000DD88700033A2A4B409FFFF40
+5F2130F808E11100005F2000DA111000054B2B4209E1AF20
+5F2000F808FFFFA0005F2000DFFFF6000065C37009E01EC0
+150000520255553000150000455552000002120003400251
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_METEORFULL(_alias) ENTITY(rectangle,black,meteorfull,_alias,DEV METEORFULL)
+!define DEV_METEORFULL(_alias,_label) ENTITY(rectangle,black,meteorfull,_label,_alias,DEV METEORFULL)
+!define DEV_METEORFULL(_alias,_label,_shape) ENTITY(_shape,black,meteorfull,_label,_alias,DEV METEORFULL)
+!define DEV_METEORFULL(_alias,_label,_shape,_color) ENTITY(_shape,_color,meteorfull,_label,_alias,DEV METEORFULL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mitlicence.puml b/stdlib/devicons/mitlicence.puml
new file mode 100644
index 000000000..93652d55e
--- /dev/null
+++ b/stdlib/devicons/mitlicence.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mitlicence [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000000000000000016ADFFFFDA61000000000000000000
+00000000000000003BFFB855558BFFB30000000000000000
+000000000000001AFD500000000005DFA100000000000000
+00000000000004EE5000000000000006EE40000000000000
+0000000000006FB100000000000000001BF6000000000000
+000000000005F9000000000000000000009F500000000000
+00000000003F90000000000000000000000AF30000000000
+0000000000DC000000000000000000000000CD0000000000
+0000000007F20000000000000000000000002F7000000000
+000000000F9000000000000000000000000009E000000000
+000000006F104EED0009EE806E91EEEEEEEE01F600000000
+00000000CB004FFF100CFF906FA1FFFFFFFF00BC00000000
+00000000F6004FFF400FFF906FA0445FF444006F00000000
+00000003F2004FDF803FDF906FA0001FF000002F30000000
+00000006F0004FAFB06FAF906FA0001FF000000F60000000
+00000007E0004F9DE0AF7F906FA0001FF000000E70000000
+00000008D0004F9AF2DE5F906FA0001FF000000D80000000
+00000007E0004F97F6FB5F906FA0001FF000000E70000000
+00000006F0004F94FDF85F906FA0001FF000000F50000000
+00000003F2004F90FFF55F906FA0001FF000002F30000000
+00000000F7004F90DFF15F906FA0001FF000007F00000000
+00000000BC004F90AFE05F906FA0001FF00000CB00000000
+000000005F204E906EA04E806E90001EE00002F500000000
+000000000EB00000000000000000000000000BD000000000
+0000000006F30000000000000000000000003F6000000000
+0000000000CD100000000000000000000001DC0000000000
+00000000001EC0000000000000000000000CE10000000000
+000000000003FB00000000000000000000BF300000000000
+0000000000004FD200000000000000002DF4000000000000
+00000000000002DF8000000000000008FD20000000000000
+0000000000000008FE820000000028EF8000000000000000
+000000000000000018EFEB9779BEFE810000000000000000
+000000000000000000048BDDDDB840000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MITLICENCE(_alias) ENTITY(rectangle,black,mitlicence,_alias,DEV MITLICENCE)
+!define DEV_MITLICENCE(_alias,_label) ENTITY(rectangle,black,mitlicence,_label,_alias,DEV MITLICENCE)
+!define DEV_MITLICENCE(_alias,_label,_shape) ENTITY(_shape,black,mitlicence,_label,_alias,DEV MITLICENCE)
+!define DEV_MITLICENCE(_alias,_label,_shape,_color) ENTITY(_shape,_color,mitlicence,_label,_alias,DEV MITLICENCE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/modernizr.puml b/stdlib/devicons/modernizr.puml
new file mode 100644
index 000000000..608a40c5d
--- /dev/null
+++ b/stdlib/devicons/modernizr.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $modernizr [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000006DDDDDDD00CCB96200000000000000000
+0000000000000007FFFFFFF00FFFFFFD8200000000000000
+0000000000000007FFFFFFF00FFFFFFFFFB4000000000000
+0000000000000007FFFFFFF00FFFFFFFFFFFA10000000000
+0000000000000007FFFFFFF00FFFFFFFFFFFFF5000000000
+0000000000000007FFFFFFF00FFFFFFFFFFFFFF800000000
+0000000000000007FFFFFFF00FFFFFFFFFFFFFFF90000000
+000000006666666AFFFFFFF00FFFFFFFFFFFFFFFF9000000
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFF700000
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF40000
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFD0000
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF8000
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF100
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF800
+00000000FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF00
+7DDDDDDDFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF40
+8FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF90
+8FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFE0
+8FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF1
+8FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF4
+8FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF6
+8FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF7
+5AAAAAAAAAAAAAAAAAAAAAA00AAAAAAAAAAAAAAAAAAAAAA5
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MODERNIZR(_alias) ENTITY(rectangle,black,modernizr,_alias,DEV MODERNIZR)
+!define DEV_MODERNIZR(_alias,_label) ENTITY(rectangle,black,modernizr,_label,_alias,DEV MODERNIZR)
+!define DEV_MODERNIZR(_alias,_label,_shape) ENTITY(_shape,black,modernizr,_label,_alias,DEV MODERNIZR)
+!define DEV_MODERNIZR(_alias,_label,_shape,_color) ENTITY(_shape,_color,modernizr,_label,_alias,DEV MODERNIZR)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mongodb.puml b/stdlib/devicons/mongodb.puml
new file mode 100644
index 000000000..b5a9eec51
--- /dev/null
+++ b/stdlib/devicons/mongodb.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mongodb [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000001000000000000000000000000
+000000000000000000000006400000000000000000000000
+00000000000000000000002EC00000000000000000000000
+0000000000000000000002EFF70000000000000000000000
+000000000000000000002EFFFF4000000000000000000000
+00000000000000000001EFFFFFF300000000000000000000
+0000000000000000000BFFFFFFFE20000000000000000000
+0000000000000000006FFFFFFFFFD0000000000000000000
+000000000000000001FFFFFFFFFFF9000000000000000000
+00000000000000000AFFFFFFFFFFFF300000000000000000
+00000000000000003FFFFFFFFFFFFFD00000000000000000
+0000000000000000BFFFFFFFFFFFFFF50000000000000000
+0000000000000002FFFFFFFFFFFFFFFC0000000000000000
+0000000000000009FFFFFFFFFFFFFFFF3000000000000000
+000000000000000EFFFFFFFFFFFFFFFFA000000000000000
+000000000000003FFFFFFFFFFFFFFFFFF000000000000000
+000000000000007FFFFFFFFFFFFFFFFFF500000000000000
+00000000000000BFFFFFFFFFFFFFFFFFF900000000000000
+00000000000000DFFFFFFFFFFFFFFFFFFD00000000000000
+00000000000000FFFFFFFFFFFFFFFFFFFF00000000000000
+00000000000001FFFFFFFFFFFFFFFFFFFF20000000000000
+00000000000002FFFFFFFFFFFFFFFFFFFF30000000000000
+00000000000002FFFFFFFFFFFFFFFFFFFF30000000000000
+00000000000003FFFFFFFFFFFFFFFFFFFF30000000000000
+00000000000002FFFFFFFFFFFFFFFFFFFF20000000000000
+00000000000000FFFFFFFFFFFFFFFFFFFF00000000000000
+00000000000000EFFFFFFFFFFFFFFFFFFE00000000000000
+00000000000000BFFFFFFFFFFFFFFFFFFB00000000000000
+000000000000006FFFFFFFFFFFFFFFFFF700000000000000
+000000000000001FFFFFFFFFFFFFFFFFF300000000000000
+000000000000000BFFFFFFFFFFFFFFFFD000000000000000
+0000000000000004FFFFFFFFFFFFFFFF7000000000000000
+0000000000000000BFFFFFFFFFFFFFFF1000000000000000
+00000000000000003FFFFFFFFFFFFFF90000000000000000
+000000000000000009FFFFFFFFFFFFE10000000000000000
+000000000000000000CFFFFFFFFFFF500000000000000000
+0000000000000000002FFFFFFFFFF9000000000000000000
+00000000000000000003FFFFFFFFA0000000000000000000
+000000000000000000004FFFFFFA00000000000000000000
+0000000000000000000004FFFFA000000000000000000000
+00000000000000000000002EF90000000000000000000000
+000000000000000000000009F20000000000000000000000
+000000000000000000000006F00000000000000000000000
+000000000000000000000004F00000000000000000000000
+000000000000000000000003F00000000000000000000000
+000000000000000000000002F00000000000000000000000
+000000000000000000000000100000000000000000000000
+}
+
+
+!define DEV_MONGODB(_alias) ENTITY(rectangle,black,mongodb,_alias,DEV MONGODB)
+!define DEV_MONGODB(_alias,_label) ENTITY(rectangle,black,mongodb,_label,_alias,DEV MONGODB)
+!define DEV_MONGODB(_alias,_label,_shape) ENTITY(_shape,black,mongodb,_label,_alias,DEV MONGODB)
+!define DEV_MONGODB(_alias,_label,_shape,_color) ENTITY(_shape,_color,mongodb,_label,_alias,DEV MONGODB)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mootools.puml b/stdlib/devicons/mootools.puml
new file mode 100644
index 000000000..cfb713e19
--- /dev/null
+++ b/stdlib/devicons/mootools.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mootools [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000260000000000
+00000028945931795059706AAAAAA8118940CC4892000000
+0000006FCFFCFEC9FDE9EB5DD8DF9CEEBAF5CC8D85000000
+0000007C0D91FC007F203F1A90F500EB009AA85F40000000
+0000008B0D71FC008F104F1B80F401FA00AAB607F1000000
+0000009A0E62FFBBFDDAF80CC09EAEDFBBF2B658F1000000
+000000540731738820794004800586038720525840000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MOOTOOLS(_alias) ENTITY(rectangle,black,mootools,_alias,DEV MOOTOOLS)
+!define DEV_MOOTOOLS(_alias,_label) ENTITY(rectangle,black,mootools,_label,_alias,DEV MOOTOOLS)
+!define DEV_MOOTOOLS(_alias,_label,_shape) ENTITY(_shape,black,mootools,_label,_alias,DEV MOOTOOLS)
+!define DEV_MOOTOOLS(_alias,_label,_shape,_color) ENTITY(_shape,_color,mootools,_label,_alias,DEV MOOTOOLS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mootools_badge.puml b/stdlib/devicons/mootools_badge.puml
new file mode 100644
index 000000000..193a77110
--- /dev/null
+++ b/stdlib/devicons/mootools_badge.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mootools_badge [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000650000000000000000000000
+000000000000000000000000AFD300000000000000000000
+00000000000000000000D6004FFF30000000000000000000
+00000000000000000002FB000DFFD0000000000000000000
+00000000000000000007FF0008FFF4000000000000000000
+0000000000000000000CFF5006FFF8000000000000000000
+0000000000000000000FFFD57EFFF9000000000000000000
+0000000000000000004FFFFFFFFFF7000000000000000000
+0000000000000000005FFFFFFFFFF1000000000000000000
+0000000000000000004FFFFFFFFF80000000000000000000
+0000000000000000001FFFFFFFFD00000000000000000000
+0000000000000000000DFFFFFFF500000000000000000000
+00000000000000000008FFFFFFD000000000000000000000
+00000000000000000005FFFFFF7000000000000000000000
+00000000000000000002FFFFFF2000000000000000000000
+00000000000000000001FFFFFE0000000000000000000000
+00000000000000000000FFFFFA0000000000000000000000
+00000000000000000000FFFFF80000000000000000000000
+00000000000000000001FFFFF60000000000000000000000
+00000000000000000003FFFFF40000000000000000000000
+00000000000000000005FFFFF30000000000000000000000
+00000000000000000008FFFFF30000000000000000000000
+0000000000000000000AFFFFF30000000000000000000000
+0000000000000000000CFFFFF30000000000000000000000
+0000000000000000000FFFFFF30000000000000000000000
+0000000000000000002FFFFFF30000000000000000000000
+0000000000000000004FFFFFF30000000000000000000000
+0000000000000000007FD7AFF30000000000000000000000
+0000000000000000009F300CF30000000000000000000000
+0000000000000000009F200BF10000000000000000000000
+0000000000000000004FC68FC00000000000000000000000
+00000000000000000007FFFD200000000000000000000000
+000000000000000000002540000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MOOTOOLS_BADGE(_alias) ENTITY(rectangle,black,mootools_badge,_alias,DEV MOOTOOLS_BADGE)
+!define DEV_MOOTOOLS_BADGE(_alias,_label) ENTITY(rectangle,black,mootools_badge,_label,_alias,DEV MOOTOOLS_BADGE)
+!define DEV_MOOTOOLS_BADGE(_alias,_label,_shape) ENTITY(_shape,black,mootools_badge,_label,_alias,DEV MOOTOOLS_BADGE)
+!define DEV_MOOTOOLS_BADGE(_alias,_label,_shape,_color) ENTITY(_shape,_color,mootools_badge,_label,_alias,DEV MOOTOOLS_BADGE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mozilla.puml b/stdlib/devicons/mozilla.puml
new file mode 100644
index 000000000..18cc69c00
--- /dev/null
+++ b/stdlib/devicons/mozilla.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mozilla [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000024300000000000000000000000000
+000000000000000039EFFFE9400023000000000000000000
+000000000000003BFFDA9CFFFFDFFFF60000000000000000
+00000000000008FFD4000004EFC855CF4000000000000000
+000000000001CFF800169604725CFFEFB000000000000000
+00000000003EFF5002FF8015AEFC9FFFC000000000000000
+0000000005FFF9000BCF00168CB4DFFFF700000000000000
+000000007FFFFCB1015C003A12C3EFD8FFC3000000000000
+00000008FFFFFF10000508ED604269ED4BFFC60000000000
+0000009FB8EFF90000006CFE06407A600028EFF820000000
+000003402DFFF6000015656720CA0000000005BFF9000000
+00000004EFFFE50003400000032ED20000000002CF900000
+0000005FFFFD76000A1000000719FF5000000000DFC00000
+000004E95EF803000D300000097DFFFB10000006FFD00000
+00000513EFFB00000CB0000008FFFFFFE6000001ABF00000
+0000003E9AFF00000EF6000003FFFFFFCFD6100019F20000
+000001814FFF70000F8C3000008FC9FFFFDFFC974CF10000
+00000002FFEFF100077009000004A63AFFFFDDFEFFB00000
+0000000CB3DFFB00007307C20000001416AFFFFFCF400000
+0000003409FFFF30000100CF93269DFFB5004DFFFD000000
+000000004BAFFE000000001EFFFFFFDDFFFBBFE510000000
+0000000052FCF80000000000CFFFC300037AB91000000000
+00000000033EF9550000000CFFF600000000000000000000
+00000000008FFFB200000089BF7000000000000000000000
+00000000004FC54100000720FE0000000000000000000000
+000000000005E910000006E7FA0000000000000000000000
+00000000000020000000107FF70000000000000000000000
+000000000000005500000B2FF30000000000000000000000
+0000000000000005CC8429FFD00000000000000000000000
+0000000000000000028BEFFFE00000000000000000000000
+000000000000000000000011100000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MOZILLA(_alias) ENTITY(rectangle,black,mozilla,_alias,DEV MOZILLA)
+!define DEV_MOZILLA(_alias,_label) ENTITY(rectangle,black,mozilla,_label,_alias,DEV MOZILLA)
+!define DEV_MOZILLA(_alias,_label,_shape) ENTITY(_shape,black,mozilla,_label,_alias,DEV MOZILLA)
+!define DEV_MOZILLA(_alias,_label,_shape,_color) ENTITY(_shape,_color,mozilla,_label,_alias,DEV MOZILLA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/msql_server.puml b/stdlib/devicons/msql_server.puml
new file mode 100644
index 000000000..0ad0ed0d4
--- /dev/null
+++ b/stdlib/devicons/msql_server.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $msql_server [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000454300000000000000000000000000
+000000000000000167100600000000000000000000000000
+000000000000007C87520800000000000000000000000000
+000000000000099080246A70000000000000000000000000
+00000000000004B75B0173B0000000000000000000000000
+00000000000000475BAE9677000000000000000000000000
+000000000000000466004ABBCB9620000000000000000000
+000000000000000049158060006CDD950000000000000000
+000000000000000009C600702963305BE810000000000000
+000000000000000002FD8497A10800002BF7000000000000
+000000000000000000915CFD201902897477C20000000000
+000000000000000000802BC8FAAAB8200A002B2000000000
+0000000000000000007394603EFA0000930000A100000000
+000000000000000000A80928BE5D70066000001800000000
+000000000000000000E82DB48400A5371479865200000000
+0000000000000000036BF60570001CDDA620000000000000
+0000000000000000084DC228017CC7300000000000000000
+00000000000000003B941797BA9800000000000000000000
+000000000000000196506EE9404900000000000000000000
+0000000000000008769C60A0353B00000000000000000000
+000000000000009ECD890090007B00000000000000000000
+00000000000009F81B165090164B00000000000000000000
+0000000000009C9059008788602B00000000000000000000
+0000000000062590D1004FD1004900000000000000000000
+00000000005003C7839C8C38605800000000000000000000
+00000000080000EFC830760015A500000000000000000000
+00000000831688ED1000D00055B200000000000000000000
+00000000E6510744C207738600D000000000000000000000
+00000001F10037003C6EB60003A000000000000000000000
+00000000CA0080005BFD6000075000000000000000000000
+000000002E86137853A037653B0000000000000000000000
+0000000002DC62000A100025780000000000000000000000
+000000000007D71063037840720000000000000000000000
+000000000000049AB8630000800000000000000000000000
+000000000000000025897656200000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MSQL_SERVER(_alias) ENTITY(rectangle,black,msql_server,_alias,DEV MSQL_SERVER)
+!define DEV_MSQL_SERVER(_alias,_label) ENTITY(rectangle,black,msql_server,_label,_alias,DEV MSQL_SERVER)
+!define DEV_MSQL_SERVER(_alias,_label,_shape) ENTITY(_shape,black,msql_server,_label,_alias,DEV MSQL_SERVER)
+!define DEV_MSQL_SERVER(_alias,_label,_shape,_color) ENTITY(_shape,_color,msql_server,_label,_alias,DEV MSQL_SERVER)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/mysql.puml b/stdlib/devicons/mysql.puml
new file mode 100644
index 000000000..3360354fe
--- /dev/null
+++ b/stdlib/devicons/mysql.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $mysql [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000006EEB6000000000000000000000000000000000000
+0000000D95AFE60000000000000000000000000000000000
+0000000990019FFC84000000000000000000000000000000
+00000002F2000147BFC40000000000000000000000000000
+000000008C00000003BF9000000000000000000000000000
+000000000E5000000004EC10000000000000000000000000
+0000000005D0000000001CD1000000000000000000000000
+0000000000E40000000000BE200000000000000000000000
+00000000007B00000000000BD10000000000000000000000
+00000000001F100000000000DC0000000000000000000000
+00000000000A9000000000002F9000000000000000000000
+000000000002F2000000000007F300000000000000000000
+00000000000089000000000000DC00000000000000000000
+0000000000007A0000000000005F40000000000000000000
+000000000000960000000000000CC0000000000000000000
+000000000000D300000000000004F4000000000000000000
+000000000000F100000000000000CC000000000000000000
+000000000001F0000000000000004F400000000000000000
+000000000001F001E000000000000CC00000000000000000
+000000000000F209F7000000000003F70000000000000000
+000000000000B50DFF1000000000009F8000000000000000
+0000000000005B2F7D80000000000007EE50000000000000
+0000000000000CFF22E200000000000005DB200000000000
+00000000000001C7004A0000000000000006E50000000000
+0000000000000000000530000000000000002C8000000000
+00000000000000000000000000000000000249F600000000
+0000000000000000000000000000000009FFC95100000000
+0000000000000000000000000000000009F4000000000000
+0000000000000000000000000000000000AF600000000000
+000000000000000000000000000000000006FB0000000000
+0000000000000000000000000000000000003DC000000000
+000000000000000000000000000000000000007B00000000
+000000000000000000000000000000000000000130000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_MYSQL(_alias) ENTITY(rectangle,black,mysql,_alias,DEV MYSQL)
+!define DEV_MYSQL(_alias,_label) ENTITY(rectangle,black,mysql,_label,_alias,DEV MYSQL)
+!define DEV_MYSQL(_alias,_label,_shape) ENTITY(_shape,black,mysql,_label,_alias,DEV MYSQL)
+!define DEV_MYSQL(_alias,_label,_shape,_color) ENTITY(_shape,_color,mysql,_label,_alias,DEV MYSQL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/nancy.puml b/stdlib/devicons/nancy.puml
new file mode 100644
index 000000000..36c9c027b
--- /dev/null
+++ b/stdlib/devicons/nancy.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $nancy [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000100000000000000000000000000000000000
+000000000000A00000000000000000000000000000000000
+0000000000009B0000000000000000000000000000000000
+0000000000007F7000000000000000000000000000000000
+0000000000004FF300500000000000000000000000000000
+0000000000002FFD009B0000000000000000000000000000
+0000000000000FFFA02F9000000000000000000000000000
+0000000000000EFFF809F700000000000000000000000000
+0000000000000CFFFF70DF50000000000000000000000000
+0000000000000AFFFFF54FF4000000000000000000000000
+00000000000008FFFFFF3AFE200000000000000000000000
+00000000000007FFFFFFE3EFD00000000000000000000000
+00000000000006FFFFFFFE7FFA0004000000000000000000
+00000000000004FFFFFFFFEFFF6001B10000000000000000
+00000000000003FFFFFFFFFFFFF2006C0000000000000000
+00000000000003FFFFFFFFFFFFFC000DA000000000000000
+00000000000003FFFFFFFFFFFFFF6006F500000000000000
+00000000000004FFFFFFFFFFFFFFE001FD00000000000000
+00000000000009FFFFFFFFFFFFFFF700CF50000000000000
+0000000000000DFFFFFFFFFFFFFFFE009FB0000000000000
+0000000000003FFFFFFFFFFFFFFFFF407FF0000000000000
+0000000000009FFFFFFFFFFFFFFFFF806FF2000000000000
+000000000000FFFFFFFFFFFFFFFFFFA06FF3000000000000
+000000000006FFFFFFFFFFFFFFFFFFC08FF3000000000000
+00000000000EFFFFFFFFFFFFFFFFFFB0CFF3000000000000
+00000000004FFFFFFFFFFFFFFFFFFF91FFF1000000000000
+00000000004FFFFFFFFFFFFFFFFFFF49FFD0000000000000
+000000000006EFFFFFFFFFFFFFFFF94FFF90310000000000
+0000000000001AFFFFFFFFFFFFFFC4FFFF31F50000000000
+00000000000001FFFFFFFFFFFFFFBFFFFB09F50000000000
+00000000000000FFFFFFFFFFFFFFFFFFF24FF40000000000
+00000000000001FFFFFFFFFFFFFFFFFF42EFF10000000000
+00000000000000FFFFFFFFFFFFFFFFF52EFFE00000000000
+0000000000000017FFFFFFFFFFFFFD35EFFFB00000000000
+0000000000000001FFFFFFFFFFFFD5BFFFFF700000000000
+0000000000000003FFFFFFFFFFFFFFFFFFFF300000000000
+00000000000000003BFFFFFFFFFFFFFFFFFD000000000000
+000000000000000000AFFFFFFFFFFFFFFB71000000000000
+0000000000000000004FFFFFFFFFFFD61000000000000000
+0000000000000000000FFFFFFFFFC4000000000000000000
+0000000000000000000AFFFFFFD500000000000000000000
+00000000000000000001CFFFC60000000000000000000000
+000000000000000000000453000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NANCY(_alias) ENTITY(rectangle,black,nancy,_alias,DEV NANCY)
+!define DEV_NANCY(_alias,_label) ENTITY(rectangle,black,nancy,_label,_alias,DEV NANCY)
+!define DEV_NANCY(_alias,_label,_shape) ENTITY(_shape,black,nancy,_label,_alias,DEV NANCY)
+!define DEV_NANCY(_alias,_label,_shape,_color) ENTITY(_shape,_color,nancy,_label,_alias,DEV NANCY)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/netbeans.puml b/stdlib/devicons/netbeans.puml
new file mode 100644
index 000000000..ab6552ba3
--- /dev/null
+++ b/stdlib/devicons/netbeans.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $netbeans [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000016630000000000000000000000
+000000000000000000005BFFFFD710000000000000000000
+0000000000000000029EFFFECFFFFA400000000000000000
+0000000000000017DFFFFA40017DFFFE8200000000000000
+0000000000004AFFFFC6100000004AFFFFB5000000000000
+00000000028EFFFE8200000000000016CFFFE82000000000
+00000003AFFFFC60000000000000000004AFFFFB40000000
+0000000EFFFA200000000000000000000001AFFFE0000000
+0000000EFFFFA3000000000000000000005CFFFFD0000000
+0000000DF9CFFFC500000000000000006DFFFBAFC0000000
+0000000DF503AFFFE71000000000018FFFF9206FC0000000
+0000000DF500018EFFF920000003AFFFE710007FB0000000
+0000000CF50000006DFFFB4005CFFFD60000007FB0000000
+0000000CF6000000004BFFFEEFFFB4000000008FA0000000
+0000000CF6000000000029FFFF9200000000008FA0000000
+0000000CF60000000000002FF30000000000009F90000000
+0000000BF70000000000001FF10000000000009F90000000
+0000000BF70000000000001FF1000000000000AF80000000
+0000000BF80000000000001FF1000000000000AF80000000
+0000000AF80000000000001FF1000000000000BF70000000
+0000000AF80000000000001FF1000000000000BF70000000
+0000000AF80000000000001FF1000000000000CF60000000
+0000000AF80000000000001FF1000000000000CF60000000
+00000009F90000000000001FF1000000000000DF50000000
+00000009F90000000000001FF1000000000000EF50000000
+00000009F90000000000001FF1000000000000EF40000000
+00000009FB0000000000001FF1000000000000FF40000000
+00000008FFB300000000001FF100000000003BFF30000000
+00000002BFFFB3000000001FF1000000004CFFFB00000000
+0000000002AFFFC50000001FF10000005DFFF92000000000
+000000000002AFFFD500001FF100005DFFF9200000000000
+00000000000003BFFFC4001FF1005DFFFA20000000000000
+0000000000000003BFFFC41FF15DFFF92000000000000000
+000000000000000003AFFFEFFDFFF9200000000000000000
+000000000000000000029FFFFFF810000000000000000000
+0000000000000000000002AFF91000000000000000000000
+000000000000000000000002100000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NETBEANS(_alias) ENTITY(rectangle,black,netbeans,_alias,DEV NETBEANS)
+!define DEV_NETBEANS(_alias,_label) ENTITY(rectangle,black,netbeans,_label,_alias,DEV NETBEANS)
+!define DEV_NETBEANS(_alias,_label,_shape) ENTITY(_shape,black,netbeans,_label,_alias,DEV NETBEANS)
+!define DEV_NETBEANS(_alias,_label,_shape,_color) ENTITY(_shape,_color,netbeans,_label,_alias,DEV NETBEANS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/netmagazine.puml b/stdlib/devicons/netmagazine.puml
new file mode 100644
index 000000000..a5c8576d8
--- /dev/null
+++ b/stdlib/devicons/netmagazine.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $netmagazine [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000000000000000000000002DC900000000000
+0000000000000000000000000000000004FFF10000000000
+0000000000000000000000000000000004FFE00000000000
+0000000000000000048700000059A5005EFFFBBB00000000
+00000000000CEDC2CFFFE4005FFFFFD3FFFFFFFF30000000
+00000000000FFFFFFFFFFB05FFF9BFFE4BFFFAA910000000
+0000000000038FFFB8CFFF0DFF700CFF76FFC00000000000
+0000000000006FFF300FFF2FFFB89EFF98FFB00000000000
+0000000000007FFF000EFF5FFFFFFFFFAAFFC00400000000
+0000000000007FFF100FFF5FFF96578829FFE06F60000000
+0000000000006FFF100FFF5FFF00005817FFE0CFD0000000
+0000000284005FFF404FFF2DFFB22CFF94FFF5FFE0000000
+0000000CFF3DFFFFF6FFFFFFFFFFFFFF32FFFFFF90000000
+0000000DFF4FFFFFF6FFFFFF4DFFFFD500DFFFFB00000000
+00000002A703445650444454003542000004553000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NETMAGAZINE(_alias) ENTITY(rectangle,black,netmagazine,_alias,DEV NETMAGAZINE)
+!define DEV_NETMAGAZINE(_alias,_label) ENTITY(rectangle,black,netmagazine,_label,_alias,DEV NETMAGAZINE)
+!define DEV_NETMAGAZINE(_alias,_label,_shape) ENTITY(_shape,black,netmagazine,_label,_alias,DEV NETMAGAZINE)
+!define DEV_NETMAGAZINE(_alias,_label,_shape,_color) ENTITY(_shape,_color,netmagazine,_label,_alias,DEV NETMAGAZINE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/nginx.puml b/stdlib/devicons/nginx.puml
new file mode 100644
index 000000000..586bf6de0
--- /dev/null
+++ b/stdlib/devicons/nginx.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $nginx [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000100000000000000000000000
+0000000BE2003F20BFFFF105E0D7000BE1E9001CC0000000
+0000000DFD105F33F855EA06F0F800AFF1CF91DF80000000
+0000000EDEB05F3CD000480380F908FBF10CFFF900000000
+0000000EB4F95F6F73CCCC65B0F95F77F202FFD000000000
+0000000EB06FCF3AD299DF16F0FCF907F21DFFFA00000000
+0000000EB008FF32F844F706F0FFC007F2CF91CF80000000
+0000000B80009E108DDDC004C0BB1004D2F8000BB0000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NGINX(_alias) ENTITY(rectangle,black,nginx,_alias,DEV NGINX)
+!define DEV_NGINX(_alias,_label) ENTITY(rectangle,black,nginx,_label,_alias,DEV NGINX)
+!define DEV_NGINX(_alias,_label,_shape) ENTITY(_shape,black,nginx,_label,_alias,DEV NGINX)
+!define DEV_NGINX(_alias,_label,_shape,_color) ENTITY(_shape,_color,nginx,_label,_alias,DEV NGINX)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/nodejs.puml b/stdlib/devicons/nodejs.puml
new file mode 100644
index 000000000..559ed63d6
--- /dev/null
+++ b/stdlib/devicons/nodejs.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $nodejs [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000010000000000000000000000
+0000000000000000000000000C9100000000000000000000
+0000000000000000000000000CFA00000000000000000000
+0000000000000000000000000CFA00000000000000000000
+0000000000000000000000000CFA00000000000000000000
+0001400000000240000000022CFA00000410000000062000
+007FFC3000018FFB2000008FFFFA0002BFF7000006938800
+3EFFFFF9004EFFFFF7004EFFFFFA007FFFFFD30094000293
+6FFC8FFF008FFFFFFD00BFFABFFA00EFF9CFF70170788826
+6FF008FF008FFFFFFD00BFC00CFA00EF9C6F910170998626
+6FF008FF008FFFFFFD00BFD11EFA00EFB622000170972B36
+6FF007FF008FFFFFFC00BFFFFFFA00DFFE60000190937545
+6B20006E0008FFFFA2002AFFFFA1002BFFFC000049501860
+0000000000001AC30000003CC30000004C91000000598100
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NODEJS(_alias) ENTITY(rectangle,black,nodejs,_alias,DEV NODEJS)
+!define DEV_NODEJS(_alias,_label) ENTITY(rectangle,black,nodejs,_label,_alias,DEV NODEJS)
+!define DEV_NODEJS(_alias,_label,_shape) ENTITY(_shape,black,nodejs,_label,_alias,DEV NODEJS)
+!define DEV_NODEJS(_alias,_label,_shape,_color) ENTITY(_shape,_color,nodejs,_label,_alias,DEV NODEJS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/nodejs_small.puml b/stdlib/devicons/nodejs_small.puml
new file mode 100644
index 000000000..99519a59e
--- /dev/null
+++ b/stdlib/devicons/nodejs_small.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $nodejs_small [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000016610000000000000000000000
+0000000000000000000009FFFF9000000000000000000000
+00000000000000000006EFFFFFFE60000000000000000000
+000000000000000003CFFFC33CFFFC300000000000000000
+0000000000000001BFFFD400004DFFFB2000000000000000
+000000000000008FFFF6000000006FFFF800000000000000
+0000000000005EFFF91000000000019FFFE5000000000000
+00000000003CFFFC3000000000000003CFFFC30000000000
+0000000019FFFE60000000000000000006EFFF9100000000
+00000001EFFF800000000000000000000008FFFE10000000
+00000009FFB20000000000000000000000002BFF90000000
+0000000CFC0000000000000000000000000000CFC0000000
+0000000CFB00000009A500018DFFFEC7000000BFC0000000
+0000000CFB0000000FF9005FFFFFFFFFE30000BFC0000000
+0000000CFB0000000FF902FFFB8778DFFE0000BFC0000000
+0000000CFB0000000FF907FF6000000AFF6000BFC0000000
+0000000CFB0000000FF909FF30000002FF9000BFC0000000
+0000000CFB0000000FF907FFD6200000231000BFC0000000
+0000000CFB0000000FF901EFFFFFDA85100000BFC0000000
+0000000CFB0000000FF9002CFFFFFFFFF80000BFC0000000
+0000000CFB0000000FF90000268BDFFFFFA000BFC0000000
+0000000CFB0000000FF9023100000027FFF000BFC0000000
+0000000CFB0000000FF90FF9000000009FF200BFC0000000
+0000000CFB0000000FF90EFE10000000CFF100BFC0000000
+0000000CFB0000000FF908FFE842225BFFB000BFC0000000
+0000000CFB0000000FF900BFFFFFFFFFFD1000BFC0000000
+0000000CFB0000000FF90006CFFFFFFE810000BFC0000000
+0000000CFD0000000FF9000000244420000000DFC0000000
+00000008FFD500000FF900000000000000005DFF80000000
+00000001CFFFB2005FF8000000000000002CFFFC10000000
+0000000006EFFFBBFFF400000000000019FFFF7000000000
+000000000019FFFFFFB0000000000007FFFF910000000000
+00000000000018DDC7000000000004DFFFC2000000000000
+0000000000000000000220000002BFFFD500000000000000
+000000000000000002AFF810018FFFF70000000000000000
+0000000000000000009FFFE66EFFFA100000000000000000
+00000000000000000002BFFFFFFC30000000000000000000
+0000000000000000000005EFFE5000000000000000000000
+000000000000000000000004400000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NODEJS_SMALL(_alias) ENTITY(rectangle,black,nodejs_small,_alias,DEV NODEJS_SMALL)
+!define DEV_NODEJS_SMALL(_alias,_label) ENTITY(rectangle,black,nodejs_small,_label,_alias,DEV NODEJS_SMALL)
+!define DEV_NODEJS_SMALL(_alias,_label,_shape) ENTITY(_shape,black,nodejs_small,_label,_alias,DEV NODEJS_SMALL)
+!define DEV_NODEJS_SMALL(_alias,_label,_shape,_color) ENTITY(_shape,_color,nodejs_small,_label,_alias,DEV NODEJS_SMALL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/npm.puml b/stdlib/devicons/npm.puml
new file mode 100644
index 000000000..11b4196bc
--- /dev/null
+++ b/stdlib/devicons/npm.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $npm [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+6CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC6
+8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+8FFDDDDDDDDDDEFFEDDDDDDDDDEFFEDDDDDDDDDDDDDDDFF8
+8FF00000000006FF20000000005FF3000000000000000FF8
+8FF00000000006FF20000000005FF3000000000000000FF8
+8FF00000588006FF20000488005FF3000048800288200FF8
+8FF000009FF006FF200008FF005FF300007FF004FF500FF8
+8FF000009FF006FF200008FF005FF300007FF004FF500FF8
+8FF000009FF006FF200008FF005FF300007FF004FF500FF8
+8FF000009FF006FF200008FF005FF300007FF004FF500FF8
+8FF000009FF006FF200005AA005FF300007FF004FF500FF8
+8FF000009FF006FF20000000005FF300007FF004FF500FF8
+8FF000009FF006FF20000000005FF300007FF004FF500FF8
+8FFAAAAADFFAACFF200005AAAACFFBAAAADFFBACFFCAAFF8
+8FFFFFFFFFFFFFFF200008FFFFFFFFFFFFFFFFFFFFFFFFF8
+7EEEEEEEEEEEEFFF311118FFFEEEEEEEEEEEEEEEEEEEEEE7
+00000000000006FFFFFFFFFF000000000000000000000000
+00000000000006FFFFFFFFFF000000000000000000000000
+000000000000039999999999000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_NPM(_alias) ENTITY(rectangle,black,npm,_alias,DEV NPM)
+!define DEV_NPM(_alias,_label) ENTITY(rectangle,black,npm,_label,_alias,DEV NPM)
+!define DEV_NPM(_alias,_label,_shape) ENTITY(_shape,black,npm,_label,_alias,DEV NPM)
+!define DEV_NPM(_alias,_label,_shape,_color) ENTITY(_shape,_color,npm,_label,_alias,DEV NPM)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/onedrive.puml b/stdlib/devicons/onedrive.puml
new file mode 100644
index 000000000..df9193279
--- /dev/null
+++ b/stdlib/devicons/onedrive.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $onedrive [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000016ABB830000000000000000000
+0000000000000000000006FFFFFFFB100000000000000000
+000000000000000000007FFFFFFFFFE20000000000000000
+00000000000000489846FFFFFFFFFFFD0000000000000000
+0000000000001CFFFFFFFFFC989CFFFF6000000000000000
+000000000000CFFFFFFFFB2012103DFFC000000000000000
+000000000007FFFFFFFF708EFFFD60BEA000000000000000
+00000000000EFFFFFFF81DFFFFFFF8000000000000000000
+00000000001FFFFFFFE09FFFFFFFFFBDFFD7000000000000
+00000000004FFFFFFF81FFFFFFFFFFFFFFFFB00000000000
+000000003CFFFFFFF917FFFFFFFFFFFFFFFFF70000000000
+00000004FFFFFFFA215EFFFFFFFFFFFFFFFFFD0000000000
+0000000EFFFFFF809FFFFFFFFFFFFFFFFFFFFF0000000000
+0000003FFFFFFD0AFFFFFFFFFFFFFFFFFFFFFFB300000000
+0000004FFFFFF72FFFFFFFFFFFFFFFFFFFFFFFFF50000000
+0000003FFFFFF54FFFFFFFFFFFFFFFFFFFFFFFFFE0000000
+0000000DFFFFF44FFFFFFFFFFFFFFFFFFFFFFFFFF3000000
+00000003FFFFF61FFFFFFFFFFFFFFFFFFFFFFFFFF3000000
+000000003DFFFB0AFFFFFFFFFFFFFFFFFFFFFFFFF0000000
+0000000000122101CFFFFFFFFFFFFFFFFFFFFFFF80000000
+000000000000000005899999999999999999999500000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ONEDRIVE(_alias) ENTITY(rectangle,black,onedrive,_alias,DEV ONEDRIVE)
+!define DEV_ONEDRIVE(_alias,_label) ENTITY(rectangle,black,onedrive,_label,_alias,DEV ONEDRIVE)
+!define DEV_ONEDRIVE(_alias,_label,_shape) ENTITY(_shape,black,onedrive,_label,_alias,DEV ONEDRIVE)
+!define DEV_ONEDRIVE(_alias,_label,_shape,_color) ENTITY(_shape,_color,onedrive,_label,_alias,DEV ONEDRIVE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/openshift.puml b/stdlib/devicons/openshift.puml
new file mode 100644
index 000000000..c76eb1f34
--- /dev/null
+++ b/stdlib/devicons/openshift.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $openshift [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000002320000000000000000000000
+000000000000000000048CFFFFFEA6000000000000000000
+000000000000000006DFFFFFFFFFFFF81000000000000000
+0000000000000004DFFFFFFFFFFFFFFFE600000000000000
+000000000000007FFFFFFFFFFFFFFFFFFFA0000000000000
+00000000000009FFFFFFFFFFFFFFFFFFFFFB000000000000
+0000000000007FFFFFFFFD96568CFFFFFFFFA00400000000
+000000000004FFFFFFFB300000002AFFFFFFCBFF40000000
+00000000000EFFFFFF6000000000004EFCAEFFFFC0000000
+00000000007FFFFFF400000000000001201EFFB600000000
+0000000000EFFFFF60000000000000000007710000000000
+0000000004FFFFFB000000000000000028EF700000000000
+0000000009FFFFF3000000000000000BFFFFD00000000000
+000000000DFFFFD0000000000000000AFFFFF20000000000
+000000000FFFFF900000000000000004FFFFF50000000000
+000000001FFFFF9BB000000000000000FFFFF81620000000
+000000001FFCBEFFB000000000000000DFFFCDFF40000000
+00000000072BFFFF9000000000000000CB7FFFFF40000000
+000000000008FB510000000000000000106FFFFF20000000
+0000000000183000000000000000000000AFFFFF00000000
+000000006BFF4000000000000000000001FFFFFC00000000
+0000001FFFFFA000000000000000000008FFFFF700000000
+0000000CFFFFF20000000000000000003FFFFFF100000000
+00000007FFFFFC001200000000000002EFFFFFA000000000
+00000001EFFFFF9BFF6000000000004EFFFFFF1000000000
+000000006FFABFFFFFFC3000000029FFFFFFF60000000000
+0000000006107FFFFFFFFE97668CFFFFFFFFA00000000000
+00000000000008FFFFFFFFFFFFFFFFFFFFFB000000000000
+000000000000007FFFFFFFFFFFFFFFFFFF90000000000000
+0000000000000004EFFFFFFFFFFFFFFFE400000000000000
+000000000000000007EFFFFFFFFFFFE70000000000000000
+00000000000000000005ADFFFFFD95000000000000000000
+000000000000000000000001210000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_OPENSHIFT(_alias) ENTITY(rectangle,black,openshift,_alias,DEV OPENSHIFT)
+!define DEV_OPENSHIFT(_alias,_label) ENTITY(rectangle,black,openshift,_label,_alias,DEV OPENSHIFT)
+!define DEV_OPENSHIFT(_alias,_label,_shape) ENTITY(_shape,black,openshift,_label,_alias,DEV OPENSHIFT)
+!define DEV_OPENSHIFT(_alias,_label,_shape,_color) ENTITY(_shape,_color,openshift,_label,_alias,DEV OPENSHIFT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/opensource.puml b/stdlib/devicons/opensource.puml
new file mode 100644
index 000000000..f9d5ab968
--- /dev/null
+++ b/stdlib/devicons/opensource.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $opensource [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000004799996400000000000000000000
+000000000000000005BFFFFFFFFFFB500000000000000000
+0000000000000004DFFFFFFFFFFFFFFD4000000000000000
+00000000000001AFFFFFFFFFFFFFFFFFFA10000000000000
+0000000000002DFFFFFFFFFFFFFFFFFFFFD1000000000000
+000000000001EFFFFFFFFFFFFFFFFFFFFFFE100000000000
+00000000001DFFFFFFFFFFFFFFFFFFFFFFFFD00000000000
+0000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFA0000000000
+0000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000
+000000000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000000000
+000000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF400000000
+00000000AFFFFFFFFFFFFD7447DFFFFFFFFFFFFA00000000
+00000000FFFFFFFFFFFF70000007FFFFFFFFFFFF00000000
+00000003FFFFFFFFFFF7000000007FFFFFFFFFFF30000000
+00000006FFFFFFFFFFD0000000000DFFFFFFFFFF60000000
+00000008FFFFFFFFFF800000000008FFFFFFFFFF80000000
+00000009FFFFFFFFFF500000000005FFFFFFFFFF90000000
+00000009FFFFFFFFFF600000000006FFFFFFFFFF90000000
+00000008FFFFFFFFFF800000000008FFFFFFFFFF70000000
+00000006FFFFFFFFFFE0000000000EFFFFFFFFFF60000000
+00000003FFFFFFFFFFF9000000009FFFFFFFFFFF20000000
+00000000FFFFFFFFFFFF90000009FFFFFFFFFFFE00000000
+00000000AFFFFFFFFFFFFD0000DFFFFFFFFFFFF900000000
+000000003FFFFFFFFFFFF800008FFFFFFFFFFFF300000000
+000000000CFFFFFFFFFFF200002FFFFFFFFFFFC000000000
+0000000002FFFFFFFFFFC000000CFFFFFFFFFF2000000000
+00000000009FFFFFFFFF60000006FFFFFFFFF80000000000
+00000000000BFFFFFFFF00000000FFFFFFFFB00000000000
+000000000001DFFFFFFA00000000AFFFFFFD100000000000
+0000000000000BFFFFF4000000004FFFFFB0000000000000
+000000000000008FFFE0000000000EFFF800000000000000
+0000000000000003BF800000000008FB3000000000000000
+000000000000000003100000000001300000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_OPENSOURCE(_alias) ENTITY(rectangle,black,opensource,_alias,DEV OPENSOURCE)
+!define DEV_OPENSOURCE(_alias,_label) ENTITY(rectangle,black,opensource,_label,_alias,DEV OPENSOURCE)
+!define DEV_OPENSOURCE(_alias,_label,_shape) ENTITY(_shape,black,opensource,_label,_alias,DEV OPENSOURCE)
+!define DEV_OPENSOURCE(_alias,_label,_shape,_color) ENTITY(_shape,_color,opensource,_label,_alias,DEV OPENSOURCE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/opera.puml b/stdlib/devicons/opera.puml
new file mode 100644
index 000000000..df843097b
--- /dev/null
+++ b/stdlib/devicons/opera.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $opera [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000000000369ABBA8620000000000000000000
+000000000000000029EFFFFFFFFFFE920000000000000000
+000000000000001AFFFFFFFFFFFFFFFFA100000000000000
+00000000000005FFFFFFF843348FFFFFFE40000000000000
+0000000000007FFFFFFD39877893DFFFFFF7000000000000
+000000000006FFFFFFF3B100001A3FFFFFFF600000000000
+00000000004FFFFFFF781000000197FFFFFFF40000000000
+0000000001EFFFFFFF460000000064FFFFFFFE0000000000
+0000000008FFFFFFFC800000000008CFFFFFFF8000000000
+000000001FFFFFFFF78000000000098FFFFFFFF100000000
+000000008FFFFFFFF67000000000076FFFFFFFF700000000
+00000000DFFFFFFFF64000000000046FFFFFFFFD00000000
+00000003FFFFFFFFF61000000000027FFFFFFFFF30000000
+00000006FFFFFFFFE80000000000008FFFFFFFFF60000000
+0000000AFFFFFFFFD80000000000008DFFFFFFFFA0000000
+0000000DFFFFFFFFC80000000000009CFFFFFFFFD0000000
+0000000EFFFFFFFFC80000000000008CFFFFFFFFE0000000
+0000000FFFFFFFFFB80000000000008BFFFFFFFFF0000000
+0000000FFFFFFFFFB80000000000008BFFFFFFFFF0000000
+0000000FFFFFFFFFB90000000000008CFFFFFFFFF0000000
+0000000EFFFFFFFFC90000000000008CFFFFFFFFE0000000
+0000000CFFFFFFFFC90000000000008CFFFFFFFFC0000000
+00000009FFFFFFFFD90000000000008DFFFFFFFF90000000
+00000006FFFFFFFFF80000000000008FFFFFFFFF60000000
+00000002FFFFFFFFF72000000000017FFFFFFFFF20000000
+00000000CFFFFFFFF74000000000046FFFFFFFFC00000000
+000000006FFFFFFFF77000000000077FFFFFFFF600000000
+000000000FFFFFFFF89000000000088FFFFFFFE000000000
+0000000007FFFFFFFC810000000007CFFFFFFF7000000000
+0000000000DFFFFFFF470000000064FFFFFFFD0000000000
+00000000002FFFFFFF991000000189FFFFFFF20000000000
+000000000004FFFFFFF39200002A3FFFFFFF400000000000
+0000000000005FFFFFFE37888873EFFFFFF5000000000000
+00000000000003DFFFFFFB6446BFFFFFFD30000000000000
+0000000000000008FFFFFFFFFFFFFFFE8000000000000000
+000000000000000006BFFFFFFFFFFB600000000000000000
+000000000000000000014688886400000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_OPERA(_alias) ENTITY(rectangle,black,opera,_alias,DEV OPERA)
+!define DEV_OPERA(_alias,_label) ENTITY(rectangle,black,opera,_label,_alias,DEV OPERA)
+!define DEV_OPERA(_alias,_label,_shape) ENTITY(_shape,black,opera,_label,_alias,DEV OPERA)
+!define DEV_OPERA(_alias,_label,_shape,_color) ENTITY(_shape,_color,opera,_label,_alias,DEV OPERA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/perl.puml b/stdlib/devicons/perl.puml
new file mode 100644
index 000000000..6d5e89965
--- /dev/null
+++ b/stdlib/devicons/perl.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $perl [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000001366663100000000000000000000
+0000000000000000028DFFF9FFFFD8200000000000000000
+0000000000000002AFFFFFF6FFFFFFFA2000000000000000
+000000000000008FFFFFFF85FFFFFFFFF800000000000000
+0000000000001BFFFFFFFF66AFFFFFFFFFB0000000000000
+000000000001DFFFFFFFFF763FFFFFFFFFFD100000000000
+00000000000CFFFFFFFFFF754EFFFFFFFFFFC00000000000
+0000000000AFFFFFFFFFFF656DFFFFFFFFFFFA0000000000
+0000000005FFFFFFFFFFF89558FFFFFFFFFFFF4000000000
+000000000EFFFFFFFFFF92C5409FFFFFFFFFFFD000000000
+000000006FFFFFFFFFF61D772004EFFFFFFFFFF600000000
+00000000CFFFFFFFFD20CE1C000009FFFFFFFFFC00000000
+00000002FFFFFFFF900CF43C0000003EFFFFFFFF10000000
+00000006FFFFFFF700BF90B900000001BFFFFFFF60000000
+00000009FFFFFF6008FC05F50000000009FFFFFF90000000
+0000000CFFFFF9006FF20EF10000000000BFFFFFC0000000
+0000000DFFFFE002FF806FE000000000001FFFFFD0000000
+0000000DFFFF700BFF00CFB0000000000009FFFFD0000000
+0000000DFFFF301FFA01FF90000000000004FFFFD0000000
+0000000BFFFF105FF704FF70000000000003FFFFB0000000
+00000009FFFF106FF705FF70000000000002FFFF90000000
+00000005FFFF206FF903FF60000000000004FFFF50000000
+00000001FFFF503FFD00FF70000000000007FFFF10000000
+00000000BFFFA00EFF20AF9000000000000CFFFB00000000
+000000004FFFF206FF904FB000000000003FFFF400000000
+000000000CFFFB00BFF30CF00000000000DFFFC000000000
+0000000003FFFF900CFD12F50000000009FFFF3000000000
+00000000008FFFFA10BFD17B00000000AFFFF80000000000
+00000000000BFFFFE607FD4F7200004DFFFFB00000000000
+000000000000BFFFFFE74FFFFFB25CFFFFFB000000000000
+00000000000009FFFFFFFFEFDEFFFFFFFF90000000000000
+000000000000005EFFFFFFDFDEFFFFFFE500000000000000
+00000000000000008FFFFFFFFFFFFFF80000000000000000
+0000000000000000006BEFFFFFFEB6000000000000000000
+000000000000000000000134431000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_PERL(_alias) ENTITY(rectangle,black,perl,_alias,DEV PERL)
+!define DEV_PERL(_alias,_label) ENTITY(rectangle,black,perl,_label,_alias,DEV PERL)
+!define DEV_PERL(_alias,_label,_shape) ENTITY(_shape,black,perl,_label,_alias,DEV PERL)
+!define DEV_PERL(_alias,_label,_shape,_color) ENTITY(_shape,_color,perl,_label,_alias,DEV PERL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/phonegap.puml b/stdlib/devicons/phonegap.puml
new file mode 100644
index 000000000..073453c02
--- /dev/null
+++ b/stdlib/devicons/phonegap.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $phonegap [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000002775310000000000000000000
+00000000000000000000003FFFFFFFCA8641000000000000
+0000000000000000000000AFFFFFFFFFFFFFE91000000000
+0000000000000000043100BFFFFFFFFFFFFFFFC000000000
+0000000000000002EFFFFBBFFFFFFFFFFFFFFFF400000000
+0000000000000009FFFFFDBFFFFFFFFFFFFFFFF600000000
+000000000000000AFFFFFDAFFD99ABCDFFFFFFF800000000
+000000000016531AFFFFFEAFE9FFED4000136EF900000000
+0000000000DFFFDAFF989A9FAEFFFF60000002FA00000000
+0000000000FFFFE9F8EEE39F9024CF60000000EB00000000
+0000000000FFFFF9F9FFF68FA0002F70000000CC00000000
+0000000000F80019F458F68FA0000F80000000BD00000000
+00000009C7F79109F200A78FB0000E90000000AE00000000
+0000000EF8F8F508F300977FB0000D900000009F00000000
+0000000D00F44608F300987FC0000DA00000008F00000000
+0000000C00F42708F300986FC0000CB00000007F10000000
+0000000C00F51808F300986FD0000BB00000006F20000000
+0000000C00F51907F400995FE0000AC00000005F30000000
+0000000C00E61907F400995FE0000AD00000004F40000000
+0000000D10E64907F400994FF00009D00000003F50000000
+0000000EFAE9F906F5009A4FF00009E00000003F60000000
+0000000AFAD9C406F600AA3FF00008F00000002F70000000
+0000000000DD4346F79CFA3FF00008F00000001F80000000
+0000000000CFFFF8F8FFFA2FF1000AF00000000F90000000
+0000000000BFFFF8FCADD72FF446BFF10000001FB0000000
+0000000000AFFFF9FFDABD7FF8FFFFF1000000AFB0000000
+00000000002ABA86FFFFFF8FFC9BB9944689BEFFC0000000
+0000000000000004FFFFFF8FFFECEFFFFFFFFFFFD0000000
+0000000000000003FFFFFF8FFFFFFFFFFFFFFFFFE0000000
+0000000000000001FFFFFF9EFFFFFFFFFFFFFFFFE0000000
+00000000000000004CECA94EFFFFFFFFFFFFFFFFA0000000
+00000000000000000000000DFFFFFFFFFFFFFFFD10000000
+00000000000000000000000AFFFFFFFFFFFC964000000000
+000000000000000000000002EFFFFC974100000000000000
+000000000000000000000000044100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_PHONEGAP(_alias) ENTITY(rectangle,black,phonegap,_alias,DEV PHONEGAP)
+!define DEV_PHONEGAP(_alias,_label) ENTITY(rectangle,black,phonegap,_label,_alias,DEV PHONEGAP)
+!define DEV_PHONEGAP(_alias,_label,_shape) ENTITY(_shape,black,phonegap,_label,_alias,DEV PHONEGAP)
+!define DEV_PHONEGAP(_alias,_label,_shape,_color) ENTITY(_shape,_color,phonegap,_label,_alias,DEV PHONEGAP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/photoshop.puml b/stdlib/devicons/photoshop.puml
new file mode 100644
index 000000000..316ab61fc
--- /dev/null
+++ b/stdlib/devicons/photoshop.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $photoshop [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000
+00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000
+00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000
+00000FFF200000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000599999840000000000000000003FFE0000
+00000FFF1000009FFFFFFFD300000000000000003FFE0000
+00000FFF1000009FFFCEFFFF10000000000000003FFE0000
+00000FFF1000009FFB005FFF90000000000000003FFE0000
+00000FFF1000009FFB0009FFD002AEFEB50000003FFE0000
+00000FFF1000009FFB0006FFE03FFFFFFD0000003FFE0000
+00000FFF1000009FFB0008FFD0BFFE78DD0000003FFE0000
+00000FFF1000009FFB004FFF80FFF800020000003FFE0000
+00000FFF1000009FFFCEFFFE10DFFF92000000003FFE0000
+00000FFF1000009FFFFFFFE3004FFFFFB10000003FFE0000
+00000FFF1000009FFFFEC70000029FFFFE0000003FFE0000
+00000FFF1000009FFB0000000000009FFF5000003FFE0000
+00000FFF1000009FFB0000000030000FFF7000003FFE0000
+00000FFF1000009FFB00000000CD97AFFF4000003FFE0000
+00000FFF1000009FFB00000000CFFFFFFB0000003FFE0000
+00000FFF1000009FFB000000004BFFFE800000003FFE0000
+00000FFF100000000000000000000110000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFF100000000000000000000000000000003FFE0000
+00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000
+00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000
+00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0000
+000001111111111111111111111111111111111111100000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_PHOTOSHOP(_alias) ENTITY(rectangle,black,photoshop,_alias,DEV PHOTOSHOP)
+!define DEV_PHOTOSHOP(_alias,_label) ENTITY(rectangle,black,photoshop,_label,_alias,DEV PHOTOSHOP)
+!define DEV_PHOTOSHOP(_alias,_label,_shape) ENTITY(_shape,black,photoshop,_label,_alias,DEV PHOTOSHOP)
+!define DEV_PHOTOSHOP(_alias,_label,_shape,_color) ENTITY(_shape,_color,photoshop,_label,_alias,DEV PHOTOSHOP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/php.puml b/stdlib/devicons/php.puml
new file mode 100644
index 000000000..f910e328b
--- /dev/null
+++ b/stdlib/devicons/php.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $php [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000CCC000000000000000000000000
+000000000000000000003FFD000000000000000000000000
+000000000000000000006FFA000000000000000000000000
+000000000266666530009FFB665200056666642000000000
+0000000009FFFFFFFE40DFFFFFFFC10FFFFFFFFA00000000
+000000000CFFFFFFFFF1FFFFFFFFF73FFFFFFFFF90000000
+000000000FFF1005FFF8FFD000BFF86FFA001BFFD0000000
+000000002FFE0000DFFCFFA000BFF69FF70004FFF0000000
+000000005FFC0000FFFEFF7000EFF3CFF50007FFD0000000
+000000008FF90006FFFDFF4001FFF1FFF2000DFF90000000
+00000000CFF8337FFF9FFF1004FFE3FFF334BFFF20000000
+00000000FFFFFFFFFB3FFD0007FFB6FFFFFFFFF500000000
+00000002FFFFFFFE706FFA000AFF89FFFFFFFC3000000000
+00000005FFB333200013310002331CFF5333100000000000
+00000008FF7000000000000000000FFF0000000000000000
+0000000CFF4000000000000000003FFD0000000000000000
+000000089910000000000000000039960000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_PHP(_alias) ENTITY(rectangle,black,php,_alias,DEV PHP)
+!define DEV_PHP(_alias,_label) ENTITY(rectangle,black,php,_label,_alias,DEV PHP)
+!define DEV_PHP(_alias,_label,_shape) ENTITY(_shape,black,php,_label,_alias,DEV PHP)
+!define DEV_PHP(_alias,_label,_shape,_color) ENTITY(_shape,_color,php,_label,_alias,DEV PHP)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/postgresql.puml b/stdlib/devicons/postgresql.puml
new file mode 100644
index 000000000..a76a7833d
--- /dev/null
+++ b/stdlib/devicons/postgresql.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $postgresql [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000014666300000000000000
+000000000005AEEEDB7306CFFFDDFC989BFB400000000000
+0000000001CC5211259DFB400026BE400005DA0000000000
+000000000D700000000D6000000003D9000009C000000000
+000000006A000000009900000000000C900000A900000000
+00000000D300000001E0000000000000D600001F00000000
+00000001F000000008800000000000002E20000E10000000
+00000003C00000000B300000000000000790000F00000000
+00000003B00000000F0000000000000013F1001F00000000
+00000003C00000001E5BEE800000003DEDF3003C00000000
+00000001E00000002FC447C6000000D892C2007900000000
+00000000E10000002C004B6A000000F040E100B500000000
+00000000B40000002C00002D000000F000F001F000000000
+00000000870000002C00000F000000B500F006B000000000
+000000005B0000003C00000F0000006B00F00C4000000000
+000000000F0000004B00001F0000000E20E22E0000000000
+000000000C4000005B00004C00000007A0D2B70000000000
+00000000079000003D00009700000000E3E4E00000000000
+0000000002E000000D4000E1000000006DDB700000000000
+0000000000C4000005E305A0000000000DCD000000000000
+00000000006A000000DFBDA20000000005F7003300000000
+00000000000E20000AB05FCE200000003EAEFFEF20000000
+000000000006A0008C13CA0970000000880015E800000000
+000000000000C706D8FC703E700000009FEEFB4000000000
+0000000000001CFC1AD87AED70000000B511000000000000
+00000000000000000047861880000000D200000000000000
+00000000000000000000000880000000F000000000000000
+00000000000000000000000880000001E000000000000000
+00000000000000000000000780000003C000000000000000
+00000000000000000000000690000005A000000000000000
+000000000000000000000004B00000097000000000000000
+000000000000000000000001E000000E2000000000000000
+000000000000000000000000A90002C90000000000000000
+0000000000000000000000000BEBDE700000000000000000
+000000000000000000000000002420000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_POSTGRESQL(_alias) ENTITY(rectangle,black,postgresql,_alias,DEV POSTGRESQL)
+!define DEV_POSTGRESQL(_alias,_label) ENTITY(rectangle,black,postgresql,_label,_alias,DEV POSTGRESQL)
+!define DEV_POSTGRESQL(_alias,_label,_shape) ENTITY(_shape,black,postgresql,_label,_alias,DEV POSTGRESQL)
+!define DEV_POSTGRESQL(_alias,_label,_shape,_color) ENTITY(_shape,_color,postgresql,_label,_alias,DEV POSTGRESQL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/prolog.puml b/stdlib/devicons/prolog.puml
new file mode 100644
index 000000000..3674b0a56
--- /dev/null
+++ b/stdlib/devicons/prolog.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $prolog [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000008972000000000000000000379800000000000
+000000000008FFFA0000013553200001BFFF700000000000
+000000000001FFFFC26BEFFFFFFFB62CFFFF000000000000
+000000000000DFFFFFFFFFFFFFFFFFFFFFFC000000000000
+000000000000DFFFFFFFFFFFFFFFFFFFFFFC000000000000
+000000000000EFFFFFFFFFFFFFFFFFFFFFFD000000000000
+000000000002FFFEDFFFFFFFFFFFFFEBCEFF100000000000
+00000000000BE710003AFFFFFFFFB300003CC00000000000
+00000000008C100000005FFFFFF700000000890000000000
+0000000004E10000000006FFFF80000000000A4000000000
+000000000D500000131000BFFE000000010001D000000000
+000000006E000007FFFA005FF8000009FFE400A600000000
+00000000DA00005F925E801FF500008E53BF206D00000000
+00000003F90000ACB307D00FF30000F8A00E805F20000000
+00000007FA0000BB0005E006620000F3000D907F70000000
+0000000BFD00006F301C908EE90000CA005F50AFA0000000
+0000000DFF40000AFDFC19FFFFA0003EEDFB01FFD0000000
+0000000FFFD0000036400FFFFFF1000168400BFFE0000000
+0000000FFFFB000000001FFFFFF3000000009FFFF0000000
+0000000EFFFFD5000018CCFFFFDBC400005DFFFFE0000000
+0000000DFFFFFFFCBDFFF8FFFF9FFFFDEFFFFFFFD0000000
+0000000BFFFFFFFFFFFFFCCFFDCFFFFFFFFFFFFFB0000000
+00000008A8ECFEFFFFFFFF9FF9FFFFFFFFFFEFBB70000000
+00000003ECFB6FAAFFFFFFDBCCFFFFFFCBF69FAC30000000
+00000000EFFFFFCCFFFFFFF98FFFFFFFA9FFEFFE00000000
+000000009BCEFFFFFFFFFFFEDFFFFFFFFFFFFEDA00000000
+000000004C8F97FFFFFFFFFFFFFFFFFFFF99F79400000000
+000000000FFFDEFFFFFFFFFFFFFFFFFFFFDBFFE000000000
+000000000BDFFFFFFFFFFFFFFFFFFFFFFFFFFFB000000000
+000000000788FFFFFFFFFFFFFFFFFFFFFFFF878000000000
+0000000005FFFDFFFFFFFFFFFFFFFFFFFFFFFD5000000000
+0000000003FF508FFFFFFFFFFFFFFFFFFE63EF4000000000
+0000000002F4000AFFFFFFFFFFFFFFFFE0002E3000000000
+000000000130006FFFFFFD9AAAEFFFFFF700022000000000
+00000000000000DFFDDFFE0000DFFDDFFE00000000000000
+00000000000000FF3004FF0000FE3004FF00000000000000
+00000000000000C700008D0000D700008D00000000000000
+000000000000005300004700006300004600000000000000
+000000000000000000001000000000001000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_PROLOG(_alias) ENTITY(rectangle,black,prolog,_alias,DEV PROLOG)
+!define DEV_PROLOG(_alias,_label) ENTITY(rectangle,black,prolog,_label,_alias,DEV PROLOG)
+!define DEV_PROLOG(_alias,_label,_shape) ENTITY(_shape,black,prolog,_label,_alias,DEV PROLOG)
+!define DEV_PROLOG(_alias,_label,_shape,_color) ENTITY(_shape,_color,prolog,_label,_alias,DEV PROLOG)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/python.puml b/stdlib/devicons/python.puml
new file mode 100644
index 000000000..74603b105
--- /dev/null
+++ b/stdlib/devicons/python.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $python [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000025789997520000000000000000000
+000000000000000008EFFFFFFFFFFC200000000000000000
+00000000000000009FFEFFFFFFFFFFF30000000000000000
+0000000000000000FF307FFFFFFFFFFC0000000000000000
+0000000000000001FE002FFFFFFFFFFF0000000000000000
+0000000000000002FF619FFFFFFFFFFF1000000000000000
+0000000000000002FFFFFFFFFFFFFFFF1000000000000000
+0000000000000002FFFFFFFFFFFFFFFF1000000000000000
+000000000000000000000000FFFFFFFF1000000000000000
+00000000005BDEEEEEEEEEEEFFFFFFFF1DEEEA2000000000
+000000000CFFFFFFFFFFFFFFFFFFFFFF1EFFFFE100000000
+000000009FFFFFFFFFFFFFFFFFFFFFFF1EFFFFF900000000
+00000001FFFFFFFFFFFFFFFFFFFFFFFF1EFFFFFF00000000
+00000005FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF40000000
+00000008FFFFFFFFFFFFFFFFFFFFFFFA3FFFFFFF80000000
+0000000BFFFFFFFFFFFFFFFFFFFFFFE1CFFFFFFFA0000000
+0000000CFFFFFFFFFFFDCCCCCCCCC81AFFFFFFFFC0000000
+0000000DFFFFFFFFF7123333333336DFFFFFFFFFD0000000
+0000000CFFFFFFFF44EFFFFFFFFFFFFFFFFFFFFFC0000000
+0000000AFFFFFFF74FFFFFFFFFFFFFFFFFFFFFFFB0000000
+00000007FFFFFFF1DFFFFFFFFFFFFFFFFFFFFFFF70000000
+00000004FFFFFFD1FFFFFFFFFFFFFFFFFFFFFFFF30000000
+00000000EFFFFFD2FFFFFFFFFFFFFFFFFFFFFFFD00000000
+000000007FFFFFD2FFFFFFFFFFFFFFFFFFFFFFF500000000
+000000000AFFFFD2FFFFFFFFFFFFFFFFFFFFFFA000000000
+0000000000488872FFFFFFFF888888888888850000000000
+0000000000000002FFFFFFFF666666660000000000000000
+0000000000000002FFFFFFFFFFFFFFFF1000000000000000
+0000000000000002FFFFFFFFFFFFCFFF1000000000000000
+0000000000000002FFFFFFFFFFF402FF1000000000000000
+0000000000000000FFFFFFFFFFF100FF0000000000000000
+00000000000000009FFFFFFFFFFB4AF90000000000000000
+00000000000000000AFFFFFFFFFFFFA00000000000000000
+0000000000000000004AFFFFFFFFA4000000000000000000
+000000000000000000000357763000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_PYTHON(_alias) ENTITY(rectangle,black,python,_alias,DEV PYTHON)
+!define DEV_PYTHON(_alias,_label) ENTITY(rectangle,black,python,_label,_alias,DEV PYTHON)
+!define DEV_PYTHON(_alias,_label,_shape) ENTITY(_shape,black,python,_label,_alias,DEV PYTHON)
+!define DEV_PYTHON(_alias,_label,_shape,_color) ENTITY(_shape,_color,python,_label,_alias,DEV PYTHON)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/rackspace.puml b/stdlib/devicons/rackspace.puml
new file mode 100644
index 000000000..44bb6b379
--- /dev/null
+++ b/stdlib/devicons/rackspace.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $rackspace [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000004300000000000000000000000
+00000000000000000000005FF20000000000000000000000
+0000000000000000000000EFFB0000000000000000000000
+0000000000000000000008FFFF5000000000000000000000
+000000000000000000002FFFFFD000000000000000000000
+00000000000000000000BFFFFFF700000000000000000000
+00000000000000000004FFFFFFFF10000000000000000000
+0000000000000000000DFFFFFFFFA0000000000000000000
+0000000000000000007FFFFFFFFFF3000000000000000000
+000000000000000001FFFFFFFFFFFC000000000000000000
+000000000000000009FFFFFFFFFFFF600000000000000000
+00000000000000003FFFFFFFFFFFFFE00000000000000000
+0000000000000000BFEB998889DFFFF80000000000000000
+0000000000000005FFA000000004FFFF2000000000000000
+000000000000000DFFA0000000005FFFA000000000000000
+000000000000007FFFD9BCCC91000EFFF400000000000000
+00000000000001FFFFFFFFFFFC000CFFFD00000000000000
+0000000000000AFFFFFFFFFFFF000CFFFF60000000000000
+0000000000003FFFFFFFFFECCC000CFFFFE1000000000000
+000000000000CFFFFFFB300000000CFFFFF9000000000000
+000000000006FFFFFF80000000000CFFFFFF200000000000
+00000000000EFFFFFD0006BCDD000CFFFFFFB00000000000
+00000000008FFFFFF8004FFFFF000CFFFFFFF40000000000
+0000000002FFFFFFF6007FFFFF000CCEFFFFFD0000000000
+000000000BFFFFFFF7003FFFF6000A805CFFFF7000000000
+000000004FFFFFFFFA0003762000000000DFFFF100000000
+00000000DFFFFFFFFF200000082000001CFFFFFA00000000
+00000006FFFFFFFFFFE40003BF568BE5DFFFFFFF30000000
+0000001EFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFC0000000
+0000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000
+000002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000
+000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF100000
+000000455555555555555555555555555555555553000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RACKSPACE(_alias) ENTITY(rectangle,black,rackspace,_alias,DEV RACKSPACE)
+!define DEV_RACKSPACE(_alias,_label) ENTITY(rectangle,black,rackspace,_label,_alias,DEV RACKSPACE)
+!define DEV_RACKSPACE(_alias,_label,_shape) ENTITY(_shape,black,rackspace,_label,_alias,DEV RACKSPACE)
+!define DEV_RACKSPACE(_alias,_label,_shape,_color) ENTITY(_shape,_color,rackspace,_label,_alias,DEV RACKSPACE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/raphael.puml b/stdlib/devicons/raphael.puml
new file mode 100644
index 000000000..0036845ed
--- /dev/null
+++ b/stdlib/devicons/raphael.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $raphael [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+0000000000000000000017CEEC7100000000000000000000
+00000000000000000005EFFFFFFE50000000000000000000
+0000000000000000007FFFFCCFFFF7000000000000000000
+000000000000000007FFF800008FFF700000000000000000
+00000000000000007FFF60000006FFF70000000000000000
+0000000000000007FFFD00000000DFFF7000000000000000
+000000000000007FFFF8000000008FFFF700000000000000
+00000000000007FFFFF7000000007FFFFF70000000000000
+0000000000007FFFFFFA00000000AFF7FFF7000000000000
+000000000007FFFFFFFF10000002FFD05FFF700000000000
+00000000007FFF6FFFFFC100001DFF6005FFF70000000000
+0000000006FFF55FF9FFFE7337EFFC00005FFF6000000000
+000000003FFF508FF3FFFFFFFFFFC1000005FFF300000000
+00000000CFF600BFF0AFFFFFFFF8000000006FFB00000000
+00000001FFB000DFD04FF8467500000000000CFF10000000
+00000004FF6000EFC00DFE0000000000000006FF40000000
+00000005FF4000FFB005FF9000000000000005FF50000000
+00000004FF7000FFA000BFF600000000000007FF40000000
+00000001FFC000FFB0001EFF5000000000000DFF10000000
+00000000AFF800EFC00004FFF700000000008FFA00000000
+000000002FFF70CFE000004FFFC300000009FFF200000000
+0000000005FFF7AFF0000003EFFFD85449EFFF4000000000
+00000000005FFFEFF40000001AFFFFFFFFFFF40000000000
+000000000005FFFFF8000000003AFFFFFFFF400000000000
+0000000000005FFFFE0000000000036CFFF4000000000000
+00000000000004FFFF6000000000008FFF40000000000000
+000000000000005FFFD00000000007FFF500000000000000
+0000000000000005FFF9000000007FFF5000000000000000
+00000000000000004FFF70000007FFF50000000000000000
+000000000000000004FFFA2002AFFF500000000000000000
+0000000000000000004FFFFEEFFFF5000000000000000000
+00000000000000000003DFFFFFFD30000000000000000000
+0000000000000000000005ACCA5000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RAPHAEL(_alias) ENTITY(rectangle,black,raphael,_alias,DEV RAPHAEL)
+!define DEV_RAPHAEL(_alias,_label) ENTITY(rectangle,black,raphael,_label,_alias,DEV RAPHAEL)
+!define DEV_RAPHAEL(_alias,_label,_shape) ENTITY(_shape,black,raphael,_label,_alias,DEV RAPHAEL)
+!define DEV_RAPHAEL(_alias,_label,_shape,_color) ENTITY(_shape,_color,raphael,_label,_alias,DEV RAPHAEL)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/rasberry_pi.puml b/stdlib/devicons/rasberry_pi.puml
new file mode 100644
index 000000000..86b65a10b
--- /dev/null
+++ b/stdlib/devicons/rasberry_pi.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $rasberry_pi [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000149DCDB7300000037BDDD841000000000000
+00000000003AFDCA56ADEB1002BEDA669BDE930000000000
+0000000000AA4000000029D01EA3000000049A0000000000
+0000000000BA0000000000988B00000000009B0000000000
+00000000009C00025100002EE30000053000B90000000000
+00000000005D00000670000DE00007600000C50000000000
+00000000000F5000002B500FF104B2000004F00000000000
+000000000007D0000000A9BFFC8B0000000C700000000000
+000000000001DA0000000EFFFFF00000009C100000000000
+0000000000002EA100006FFFFFF700001AE2000000000000
+00000000000000DD936AFFFFFFFFB638DD00000000000000
+000000000000006FECBFFA3003BFEDEFF600000000000000
+00000000000009E4001F700000089002AF90000000000000
+0000000000006E1001DF10000001F70008F6000000000000
+000000000000E6001DFFA0000008FF7000DD000000000000
+000000000002F104EFFFFE9768DECEF9008F200000000000
+000000000004F08FF81018FFFF50005ED26F400000000000
+000000000008FFFF4000008FF6000002EFEF800000000000
+00000000009F9FF80000000FF00000006FB9F80000000000
+0000000004F30BF10000000DD00000000F408F4000000000
+000000000C800AD00000000EF00000000C300DC000000000
+000000001F200AC00000003FF40000000D4008F000000000
+000000002F100CF0000000BFFD0000001F6007F200000000
+000000001F200FF9000008FFFFB10000BF9009F100000000
+000000000D704FFFA335CD5114BE867DFFE00EC000000000
+0000000005E2CFFFFFFFB0000009FFFFFAC79F5000000000
+0000000000BFE45BFFFF10000000EFFC100DFB0000000000
+00000000006F80006FFC000000009FC00009F60000000000
+00000000001F600006FB000000008E100008F10000000000
+00000000000C800000CE00000000C7000009B00000000000
+000000000007E000006F80000005F100000D700000000000
+000000000001F600002FF910007FE000007F100000000000
+0000000000006F60003FFFFDCFFFE00006F5000000000000
+00000000000005FD86CFFE9889CFF956BF50000000000000
+0000000000000019FFFE50000002EFFF9100000000000000
+00000000000000004DFD00000001FFD40000000000000000
+0000000000000000005EC200003DE5000000000000000000
+00000000000000000001BF966BFB10000000000000000000
+00000000000000000000049CC94000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RASBERRY_PI(_alias) ENTITY(rectangle,black,rasberry_pi,_alias,DEV RASBERRY_PI)
+!define DEV_RASBERRY_PI(_alias,_label) ENTITY(rectangle,black,rasberry_pi,_label,_alias,DEV RASBERRY_PI)
+!define DEV_RASBERRY_PI(_alias,_label,_shape) ENTITY(_shape,black,rasberry_pi,_label,_alias,DEV RASBERRY_PI)
+!define DEV_RASBERRY_PI(_alias,_label,_shape,_color) ENTITY(_shape,_color,rasberry_pi,_label,_alias,DEV RASBERRY_PI)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/react.puml b/stdlib/devicons/react.puml
new file mode 100644
index 000000000..3cdb9bb7c
--- /dev/null
+++ b/stdlib/devicons/react.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $react [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000005CEC710000000029DEB300000000000000
+00000000000006FEBEFF7000001AFFDCFF30000000000000
+0000000000000FE1003BFC2004EFA2003FB0000000000000
+0000000000004F7000006FE36FE500000AF0000000000000
+0000000000006F40000004FFFE20000007F2000000000000
+0000000000008F200000008FF500000006F4000000000000
+0000000000007F30000004FEFF20000006F3000000000000
+0000000000005F5000002FF25FE1000008F2000000000000
+0000000000003F700000DF5118FA00000AF0000000000000
+0000000000000FB379BDFFFFFFFFCA752ED0000000000000
+0000000000027FFFFFFFDAAAAAAEFFFFFFD5000000000000
+0000000004CFFFF942DF20000004FB25BFFFF92000000000
+00000001CFFA43F907F700000000BF50CE16CFF800000000
+0000003EF91000DF2FD0008DC6001FD3F90003CFC0000000
+000001EF4000007FDF400CFFFF8008FEF3000008FB000000
+000006F70000001FFC004FFFFFF101EFC0000000AF200000
+000009F20000000BF6007FFFFFF3009F700000006F500000
+000006F70000001FFC004FFFFFF001EFD0000000BF300000
+000000EF6000007FEF400BFFFF7008FDF3000008FB000000
+0000002EFB2000DF2FD0007CB5001FD2F90004CFD1000000
+00000001BFFB63F907F700000000BF40CF16CFF900000000
+0000000003BFFFF942DF20000005FB36CFFFFA2000000000
+0000000000016FFFFFFFDBAAABBEFFFFFFE6100000000000
+0000000000000FB257ADFFFFFFFFCA852EC0000000000000
+0000000000003F700000DF5008F900000BF0000000000000
+0000000000005F5000002FF36FD0000008F2000000000000
+0000000000007F30000004FEFE10000007F3000000000000
+0000000000007F300000008FF400000006F4000000000000
+0000000000006F40000004FFFD20000007F3000000000000
+0000000000004F7000007FE36FE500000BF1000000000000
+0000000000000EE1004CFD2004EFA2004FC0000000000000
+00000000000005FFCFFF8000001AFFEDFF30000000000000
+000000000000004ACA610000000029DEB300000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_REACT(_alias) ENTITY(rectangle,black,react,_alias,DEV REACT)
+!define DEV_REACT(_alias,_label) ENTITY(rectangle,black,react,_label,_alias,DEV REACT)
+!define DEV_REACT(_alias,_label,_shape) ENTITY(_shape,black,react,_label,_alias,DEV REACT)
+!define DEV_REACT(_alias,_label,_shape,_color) ENTITY(_shape,_color,react,_label,_alias,DEV REACT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/redhat.puml b/stdlib/devicons/redhat.puml
new file mode 100644
index 000000000..b1f9442b8
--- /dev/null
+++ b/stdlib/devicons/redhat.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $redhat [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000133320000000000000000000000
+0000000000000000016BEFFFFFFE95000000000000000000
+0000000000000002AFFFFFFFFFFFFFE81000000000000000
+000000000000019FFFFFFFFFFFFFFFFFF700000000000000
+0000000000003DFFFFDACEFFC877BFFFFFB1000000000000
+000000000004FFFFF9000000169B55FFFFFD200000000000
+00000000004FFFFFF0000000005FD08FFFFFE10000000000
+0000000002FFFFFFC08000000011001FFFFFFD0000000000
+000000000DFFFFFF81FECDC400000008FFFFFFA000000000
+000000008FFFFFFF404F853000000002FFFFFFF400000000
+00000001FFFFFFFF3000000000000000CFFFFFFD00000000
+00000008FFFC977BA0000000000000006FFFFFFF40000000
+0000000EFF40000AFC500000000000001FFFFFFFB0000000
+0000004FFB000004FFFFC840000000000FFFFFFFF0000000
+0000008FFD0000004EFFFFFE300000002A05CFFFF4000000
+000000BFFF700000007EFFFFB0000000510008FFF7000000
+000000EFFFF6000000004AEFF3000000000000CFFA000000
+000000FFFFFF900000000002420000000000008FFB000000
+000000FFFFFFFD300000000000000000000000AFFC000000
+000000EFFFFFFFFA2000000000000000000001FFFB000000
+000000DFFFFFFF54CA3000000000000000000CFFFA000000
+000000BFFFFFFB001EFC6100000000000003DFFFF8000000
+0000008FFFFFFE00021AFFB84100000016BFFFFFF4000000
+0000004FFFC78FA00000BFFFFFFEDDDFFFFFFFFFF1000000
+00000003210007F8000007BBA88B78A7FFFFFFFFB0000000
+00000000000000210000000000000004FFFFFFFF50000000
+00000000000000000000000004020007FFFFFFFD00000000
+0000000000000000000000001AEA000AFFFFFFF400000000
+0000000000000000000000000000002FFB41002000000000
+000000000000000000000000000000DFA100000000000000
+000000000000000000000000000008E30000000000000000
+00000000000000000000000000003E300000000000000000
+000000000000000000000000000020000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_REDHAT(_alias) ENTITY(rectangle,black,redhat,_alias,DEV REDHAT)
+!define DEV_REDHAT(_alias,_label) ENTITY(rectangle,black,redhat,_label,_alias,DEV REDHAT)
+!define DEV_REDHAT(_alias,_label,_shape) ENTITY(_shape,black,redhat,_label,_alias,DEV REDHAT)
+!define DEV_REDHAT(_alias,_label,_shape,_color) ENTITY(_shape,_color,redhat,_label,_alias,DEV REDHAT)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/redis.puml b/stdlib/devicons/redis.puml
new file mode 100644
index 000000000..7e8be253c
--- /dev/null
+++ b/stdlib/devicons/redis.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $redis [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000043023000000000000000000000
+00000000000000000000006FEF4000000000000000000000
+0000000000000000000007ADFFD600000000000000000000
+000000000000000466630000C300017C9200000000000000
+00000000000005FFFFFFD1002004BFFFFFC6000000000000
+00000002000007FFFFFFF2000005CFFFFD71000650000000
+00000006E7100027999500000020029A400006EF50000000
+00000006FFF920000001479CEF6000000018EFFF50000000
+00000005FFFFFB5000005CFFFA0000003AFFFFFE20000000
+000000006EFFFFFE71000029D100005CFFFFFE7000000000
+00000000004BFFFFFF93000000017EFFFFFC500010000000
+00000004500028FFFFFFC600029FFFFFFA30004C50000000
+00000006FD600006DFFFFFFCDFFFFFE810006DFF50000000
+00000006FFFF920004AFFFFFFFFFD600018EFFFF50000000
+00000003EFFFFFB400018EFFFFC500029FFFFFE800000000
+0000000007DFFFFFD7100058730004BFFFFFD60000000000
+000000021004BFFFFFF920000006DFFFFFB4000650000000
+00000006E710028FFFFFFB5238EFFFFFA30007DF50000000
+00000005FFF930006DFFFFFFFFFFFF810029FFFF60000000
+00000005FFFFFC50004AFFFFFFFE70003BFFFFFE20000000
+000000006EFFFFFE710018EFFB50005CFFFFFE7000000000
+00000000005CFFFFFFA3000210007EFFFFFC500000000000
+00000000000029FFFFFFC500028FFFFFFA30000000000000
+0000000000000006DFFFFFFCDFFFFFE81000000000000000
+000000000000000003AFFFFFFFFFD5000000000000000000
+000000000000000000028EFFFFB400000000000000000000
+000000000000000000000058720000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_REDIS(_alias) ENTITY(rectangle,black,redis,_alias,DEV REDIS)
+!define DEV_REDIS(_alias,_label) ENTITY(rectangle,black,redis,_label,_alias,DEV REDIS)
+!define DEV_REDIS(_alias,_label,_shape) ENTITY(_shape,black,redis,_label,_alias,DEV REDIS)
+!define DEV_REDIS(_alias,_label,_shape,_color) ENTITY(_shape,_color,redis,_label,_alias,DEV REDIS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/requirejs.puml b/stdlib/devicons/requirejs.puml
new file mode 100644
index 000000000..338cd7226
--- /dev/null
+++ b/stdlib/devicons/requirejs.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $requirejs [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000012210000000000000000000000
+00000000000000000016AEFFFFEA61000000000000000000
+00000000000000001AFFFFFFFFFFFFA10000000000000000
+0000000000000006FFFFFFFFFFFFFFFE5000000000000000
+000000000000009FFFFFFA8668AFFFFFF800000000000000
+0000000000000AFFFFD5002332005DFFFFA0000000000000
+0000000000007FFFF7029EFFFFE9208FFFF7000000000000
+000000000003FFFF508FFFFFFFFFF805FFFF300000000000
+00000000000CFFF60BFFFFFFFFFFFFB06FFFC00000000000
+00000000004FFFA0AFFFFC7447CFFFFA0AFFF40000000000
+0000000000BFFF25FFFF50255205FFFF52FFFA0000000000
+0000000000FFFA0DFFF31BFFFFA13FFFD0BFFF0000000000
+0000000004FFF53FFF80CFFFFFFC08FFF35FFF4000000000
+0000000006FFF18FFF17FFFFFFFF62FFF81FFF7000000000
+0000000008FFF0AFFE0CFFFFFFFFC0EFFA0FFF8000000000
+0000000009FFE0BFFC0DFFFFFFFFD0CFFB0FFF9000000000
+0000000008FFF0AFFE0BFFFFFFFFB0EFF90FFF8000000000
+0000000007FFF18FFF26FFFFFFFF62FFF72FFF7000000000
+0000000004FFF63FFF90CFFFFFFB09FFF36FFF4000000000
+0000000000FFFB0DFFF509FFFF905FFFC0BFFE0000000000
+0000000000AFFF34FFFF60144106FFFF43FFFA0000000000
+00000000004FFFB09FFFFD8558EFFFF90CFFF30000000000
+00000000000BFFF80AFFFFFFFFFFFFA08FFFB00000000000
+000000000003FFFF607FFFFFFFFFF606FFFF200000000000
+0000000000006FFFF9018CFFFFC8109FFFF6000000000000
+00000000000008FFFFE6100110016EFFFF80000000000000
+000000000000007FFFFFFC9889CFFFFFF700000000000000
+0000000000000004EFFFFFFFFFFFFFFE4000000000000000
+000000000000000007EFFFFFFFFFFE700000000000000000
+000000000000000000049DFFFFD940000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000102211000000000000000000000000000
+000000000000000199899100000008300000000000000000
+0000000000000008DDEEDDBBBBBBBFFC4000000000000000
+00000000000000039ACCA95555555ED60000000000000000
+000000000000000379767000000003000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_REQUIREJS(_alias) ENTITY(rectangle,black,requirejs,_alias,DEV REQUIREJS)
+!define DEV_REQUIREJS(_alias,_label) ENTITY(rectangle,black,requirejs,_label,_alias,DEV REQUIREJS)
+!define DEV_REQUIREJS(_alias,_label,_shape) ENTITY(_shape,black,requirejs,_label,_alias,DEV REQUIREJS)
+!define DEV_REQUIREJS(_alias,_label,_shape,_color) ENTITY(_shape,_color,requirejs,_label,_alias,DEV REQUIREJS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/responsive.puml b/stdlib/devicons/responsive.puml
new file mode 100644
index 000000000..86e92d093
--- /dev/null
+++ b/stdlib/devicons/responsive.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $responsive [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000022222222200000000
+000000000000000000000000000002EEEEEEEEEEB0000000
+0000000000000000000000000000057000000000D0000000
+0000000000000000000000000000057000000000D0000000
+0000000000000000000000000000057000000000D0000000
+0000000133320000000000000000057000000000D0000000
+0000000EFFFFB000000000000000057000000000D0000000
+0000000DAAAAB000000000000000057000000000D0000000
+0000000900009000000000000000057000000000D0000000
+0000000900009000000000000000057000000000D0000000
+0000000900009000000008000000057000000000D0000000
+0000000900009000000009000000057000000000D0000000
+0000000900009000000000000000057000000000D0000000
+000000090000900000000000000005B777777777E0000000
+0000000A3333A00000000000000005FFF4C5A8FFF0000000
+0000000FFFFFC00000000000000001DFFDFDEEFFA0000000
+00000007AAAA500000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RESPONSIVE(_alias) ENTITY(rectangle,black,responsive,_alias,DEV RESPONSIVE)
+!define DEV_RESPONSIVE(_alias,_label) ENTITY(rectangle,black,responsive,_label,_alias,DEV RESPONSIVE)
+!define DEV_RESPONSIVE(_alias,_label,_shape) ENTITY(_shape,black,responsive,_label,_alias,DEV RESPONSIVE)
+!define DEV_RESPONSIVE(_alias,_label,_shape,_color) ENTITY(_shape,_color,responsive,_label,_alias,DEV RESPONSIVE)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ror.puml b/stdlib/devicons/ror.puml
new file mode 100644
index 000000000..6bb8ee1a5
--- /dev/null
+++ b/stdlib/devicons/ror.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ror [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000023300000000000000000
+00000000000000000000001000009FF00000000000000000
+0000000000000000000007FB00004CC52000010000000000
+0000000000000000000006FE338DFFFFFFB51D3000000000
+000000000000000000000054BFFFFFFFFFFFE87000000000
+00000000000000000000008FFFFFFFFFFFFFFFC200000000
+000000000000000000000BFFFFFFFFFFFD978BFF50000000
+00000000000000059100CFFFFFFFFFFB4000352AC0000000
+000000000000004FFE1CFFFFFFFFFE48F100382010000000
+000000000000003CF68FFFFFFFFFC1026000000000000000
+000000000000000044FFFFFFFFFD90000000000000000000
+00000000000000000DFFFFFFFFF8F8000000000000000000
+00000000000000006FFFFFFFFF70AA000000000000000000
+0000000000000000EFFFFFFFFE0001000000000000000000
+0000000000000008FFFFFFFFF70000000000000000000000
+000000000054001FFFFFFFFFF15000000000000000000000
+0000000000EFE27FFFFFFFFFD6F900000000000000000000
+0000000004FFF0EFFFFFFFFFA3EC00000000000000000000
+00000000004985FFFFFFFFFF801600000000000000000000
+0000000000000CFFFFFFFFFF700000000000000000000000
+0000000000002FFFFFFFFFFF600000000000000000000000
+0000000000007FFFFFFFFFFF684000000000000000000000
+000000000000CFFFFFFFFFFF7CF900000000000000000000
+000000000001FFFFFFFFFFFF85DB00000000000000000000
+000000000004FFFFFFFFFFFFA00200000000000000000000
+000000022008FFFFFFFFFFFFD00000000000000000000000
+0000000BFF8CFFFFFFFFFFFFF00000000000000000000000
+0000000DFF5EFFFFFFFFFFFFF30000000000000000000000
+0000000EFF4FFFFFFFFFFFFFF73320000000000000000000
+00000000124FFFFFFFFFFFFFFBCFF2000000000000000000
+00000000005FFFFFFFFFFFFFFF9FF9000000000000000000
+00000000006FFFFFFFFFFFFFFF6222000000000000000000
+00000000006FFFFFFFFFFFFFFFA000000000000000000000
+00000000005FFFFFFFFFFFFFFFF100000000000000000000
+000000000001111111111111111000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_ROR(_alias) ENTITY(rectangle,black,ror,_alias,DEV ROR)
+!define DEV_ROR(_alias,_label) ENTITY(rectangle,black,ror,_label,_alias,DEV ROR)
+!define DEV_ROR(_alias,_label,_shape) ENTITY(_shape,black,ror,_label,_alias,DEV ROR)
+!define DEV_ROR(_alias,_label,_shape,_color) ENTITY(_shape,_color,ror,_label,_alias,DEV ROR)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ruby.puml b/stdlib/devicons/ruby.puml
new file mode 100644
index 000000000..cabd9e5fc
--- /dev/null
+++ b/stdlib/devicons/ruby.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ruby [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000002200000000000
+0000000000000000000000000001357987410026ADD00000
+000000000000000000000000120267300148CFFFFFF30000
+000000000000000000000018FFC6000028DFFFFFFFF80000
+0000000000000000000007FFFFFC0BFB72016AFFFFFE0000
+00000000000000000004DFFFFFF43FFFFFEA62038CFF4000
+000000000000000002BFFFFFFFC0BFFFFFFFFFD950155000
+00000000000000004EFFFFFFFF43FFFFFFFDA85311301000
+0000000000000005FFFFFFFFFB0BEB964101479CFF719000
+000000000000006FFFFFFFFFD10001479CFFFFFFFC0AA000
+00000000000007FFFFFFFFFC1456FFFFFFFFFFFFF25F9000
+0000000000008FFFFFFFFFB05FC1FFFFFFFFFFFF71EF8000
+00000000000AFFFFFFFFF907FFF3AFFFFFFFFFFC0BFF8000
+0000000000BFFFFFFFFF908FFFF94FFFFFFFFFF25FFF7000
+000000000AFFFFFFFFF70AFFFFFF1DFFFFFFFF71FFFF6000
+000000006FFFFFFFFF60AFFFFFFF67FFFFFFFC0AFFFF5000
+00000001FFFFFFFFF60BFFFFFFFFD1FFFFFFF25FFFFF4000
+0000000BFFFFFFFE41CFFFFFFFFFF3AFFFFF71EFFFFF4000
+0000006FFFFFFE7004BFFFFFFFFFFA3FFFFC0AFFFFFF3000
+000001FFFFFE701606105AFFFFFFFF1DFFF25FFFFFFF2000
+0000008FFE6019F83FFD83039EFFFF76FF71EFFFFFFF1000
+000008077008FFF57FFFFFC72049EFE0FC0AFFFFFFFF0000
+00002F8007EFFFF1BFFFFFFFFD830493825FFFFFFFFF0000
+00006FF09FFFFFD0EFFFFFFFFFFFE83001EFFFFFFFFF0000
+00009F903FFFFF92FFFFFFFFFFFFFFC206FFFFFFFFFE0000
+0000CF280DFFFF56FFFFFFFFFFFFF604B1EFFFFFFFFD0000
+0000FB1F66FFFF1AFFFFFFFFFFFA11AFF75FFFFFFFFC0000
+0003F47FC1FFFE0EFFFFFFFFFE406EFFFF2CFFFFFFFC0000
+0006D0EFF2AFFA1FFFFFFFFF911BFFFFFFB2FFFFFFFB0000
+000964FFF84FF65FFFFFFFD307FFFFFFFFF49FFFFFFA0000
+000B0BFFFE0EF29FFFFFF802CFFFFFFFFFFD1EFFFFF90000
+00082FFFFF58E0DFFFFD308FFFFFFFFFFFFF75FFFFF80000
+00329FFFFFB2A1FFFF703DFFFFFFFFFFFFFFF2CFFFF80000
+0000EFFFFFF124FFD308FFFFFFFFFFFFFFFFFA3FFFF70000
+0006FFFFFFF708F604EFFFFFFFFFFFFFFFFFFF49FFF60000
+000DFFFFFFFD0821AFFFFFFFFFFFFFFFFFFFFFD1EFF50000
+001998887766004EFFFFFFFFFFFFFFFFFFFFFFF76FF40000
+0000022334444311357ACEFFFFFFFFFFFFFFFFFF2CF40000
+0000034678ABDEFFCA864102479BDFFFFFFFFFFFA2F30000
+000000000000000134678ABA9864202468ACFFFFF4720000
+000000000000000000000000001245554332013577000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RUBY(_alias) ENTITY(rectangle,black,ruby,_alias,DEV RUBY)
+!define DEV_RUBY(_alias,_label) ENTITY(rectangle,black,ruby,_label,_alias,DEV RUBY)
+!define DEV_RUBY(_alias,_label,_shape) ENTITY(_shape,black,ruby,_label,_alias,DEV RUBY)
+!define DEV_RUBY(_alias,_label,_shape,_color) ENTITY(_shape,_color,ruby,_label,_alias,DEV RUBY)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/ruby_rough.puml b/stdlib/devicons/ruby_rough.puml
new file mode 100644
index 000000000..765ca19a6
--- /dev/null
+++ b/stdlib/devicons/ruby_rough.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $ruby_rough [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000466666542000000000000
+0000000000000000000000015766FFFFFFFFE60000000000
+0000000000000000000004BFFFFF7EFFFFFFFF8000000000
+00000000000000000003CFFFFFFFA2DFFFFFFFF400000000
+0000000000000000008FFFFFFFFFC00AFFFFFFF900000000
+00000000000000002CFFFFFFFFFFB0007FFFFFFC00000000
+0000000000000003EFFFFFFFFFFF700004EFFFFD00000000
+000000000000004FFFFFFFFFFFFF1000001CFFFC00000000
+00000000000002FFFFFFFFFFFFFA00000000AFFB00000000
+0000000000001EFFFFFFFFFFFFF20000000006FA00000000
+000000000000AFFFFFFFFFFFFF8000000000007900000000
+000000000004FFFFFFFFFFFFFE02689ABCDEFFF800000000
+00000000000EFFFFFFFFFFFFF304FFFFFFFFFFF700000000
+00000000007FFFFFFFFFFFFF7000FFFFFFFFFFF600000000
+0000000000EFFFFFFFFFFFF80000CFFFFFFFFFF500000000
+0000000004FFFFFFFFFFFF8000008FFFFFFFFFF300000000
+0000000008FFFFFFFFFFF60000003FFFFFFFFFF200000000
+0000000009FFFFFFFFFD300000000FFFFFFFFFF100000000
+0000000007FFFFFFFF80000000000CFFFFFFFFF000000000
+0000000055EFFFFF91000000000008FFFFFFFFF000000000
+000000009C3BDC8100972000000004FFFFFFFFD000000000
+00000000AF30000001FFFE94000000FFFFFFFFC000000000
+00000000BF90000005FFFFFFE94000BFFFFFFFB000000000
+00000000CFF100000AFFFFFFFFFFA55FFFFFFFA000000000
+00000000CFF700000EFFFFFFFFFFFC1AFFFFFF8000000000
+00000000DFFD00004FFFFFFFFFFFB0009FFFFF7000000000
+00000000DFFF40008FFFFFFFFFFA000007FFFF6000000000
+00000000BFFFB000EFFFFFFFFF600000006FFF5000000000
+000000007FFFFACEFFFFFFFFD20000000004FF3000000000
+000000001FFFFFFFFFFFFFFE6432100000003E2000000000
+0000000005FFFFFFFFFFFFFFFFFFFFEDCB86420000000000
+00000000003BFFFFFFFEDCBA987654321000000000000000
+000000000000023221000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RUBY_ROUGH(_alias) ENTITY(rectangle,black,ruby_rough,_alias,DEV RUBY_ROUGH)
+!define DEV_RUBY_ROUGH(_alias,_label) ENTITY(rectangle,black,ruby_rough,_label,_alias,DEV RUBY_ROUGH)
+!define DEV_RUBY_ROUGH(_alias,_label,_shape) ENTITY(_shape,black,ruby_rough,_label,_alias,DEV RUBY_ROUGH)
+!define DEV_RUBY_ROUGH(_alias,_label,_shape,_color) ENTITY(_shape,_color,ruby_rough,_label,_alias,DEV RUBY_ROUGH)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/rust.puml b/stdlib/devicons/rust.puml
new file mode 100644
index 000000000..3663ae304
--- /dev/null
+++ b/stdlib/devicons/rust.puml
@@ -0,0 +1,68 @@
+@startuml
+sprite $rust [48x57/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000003200000000000000000000000
+00000000000000000002F50ED05F10000000000000000000
+00000000000000006E48FFCFFCFF74E60000000000000000
+00000000000002409FFFFFFEEFFFFFF90420000000000000
+00000000000008FDFFFFFFE01FFFFFFFEF70000000000000
+00000000000207FFFFFFDBF25FBCFFFFFF60200000000000
+00000000002FFFFFFF8100AFF70028FFFFFFF10000000000
+00000000000FFFFFA10000085000001AFFFFE00000000000
+00000000277FFFF600000000000000006FFFE77200000000
+000000004FFFFF73333333333333100005FFFFF300000000
+000000000DFFFFFFFFFFFFFFFFFFFE80007FFFC000000000
+000000069FFFFFFFFFFFFFFFFFFFFFFD100BFFE960000000
+0000000EFFFFFFFFFFFFFFFFFFFFFFFFB007FFFFE0000000
+00000004FFDEFEFFFFFFFFFFFFFFFFFFF10DEEFF30000000
+00000018FD03F22FFFFFE000006FFFFFF35F11FF71000000
+000000FFFE36F62FFFFFE000000FFFFFF09F33FFFF000000
+0000006FFFFF802FFFFFF77777CFFFFF602BFFFFF5000000
+0000000CFFA0002FFFFFFFFFFFFFFFF700002CFFC0000000
+000002EFFF70002FFFFFFFFFFFFFFFC1000008FFFD200000
+000003EFFF70002FFFFFFFFFFFFFFFFC000029FFFD200000
+0000000CFF90002FFFFFE3334AFFFFFF4002FFFFC0000000
+0000005FFFB0002FFFFFE00000BFFFFF9004FFFFF4000000
+000000FFFFF6668FFFFFE444105FFFFFF76DFFFFFF000000
+00000028FFFFFFFFFFFFFFFF502FFFFFFFFFFFFF72000000
+00000004FFFFFFFFFFFFFFFF500EFFFFFFFFFFFF30000000
+0000000EFFFFFFFFFFFFFFFF5008FFFFFFFFFFFFE0000000
+000000069FFFFEDDDDDDDDDD4000ADDDDDEFFFE960000000
+000000000DFFF900200000000000000000AFFFD000000000
+000000004FFFFFCFFA000000000000CFDCFFFFF400000000
+00000000288FFFE49E000000000001F87FFFE88200000000
+00000000000FFFB03F200000000004F00EFFE00000000000
+00000000002FFFFADFC5100000015CFBBFFFF10000000000
+00000000000207FFFFFFFCA99ADFFFFFFF60200000000000
+00000000000008FDFFFFFFFFFFFFFFFFEF70000000000000
+00000000000002409FFFFFFFFFFFFFF90420000000000000
+00000000000000006E48FFCFFCFF74E60000000000000000
+00000000000000000002F50EE06F10000000000000000000
+000000000000000000001003300100000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_RUST(_alias) ENTITY(rectangle,black,rust,_alias,DEV RUST)
+!define DEV_RUST(_alias,_label) ENTITY(rectangle,black,rust,_label,_alias,DEV RUST)
+!define DEV_RUST(_alias,_label,_shape) ENTITY(_shape,black,rust,_label,_alias,DEV RUST)
+!define DEV_RUST(_alias,_label,_shape,_color) ENTITY(_shape,_color,rust,_label,_alias,DEV RUST)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/safari.puml b/stdlib/devicons/safari.puml
new file mode 100644
index 000000000..bf6109429
--- /dev/null
+++ b/stdlib/devicons/safari.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $safari [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000044000000000000000000000000000
+000000000000000000933900000000000000000000000000
+000000000000000002600430000000000000000000000000
+000000000000000000916910000000000000000000000000
+0000000000000000002CFE89997400000000000000000000
+000000000000000004AFFFFFFFFFFB500000000000000000
+0000000000000005DFFFFFFFFFFFFFFE5000000000000000
+00000000000001BFFFFD84211248DFFFFB10000000000000
+0000000000002DFFFA200146652002AFFFE2000000000000
+000000000002EFFD2029E8FFFFFFA303DFFF300000000000
+00000000001EFFB01AFFFFFFFFFFFF700BFFE20000000000
+0000000000CFFA03EFFFFFFFFFFFFF9D20AFFC0000000000
+0000000006FFC03FFFFFFFFFFFFFFFCEF30CFF7000000000
+000000001FFF11EFFFFFFFCFFFFFFB8FFE11FFF100000000
+000000007FF806DFFFFFFF6EFFFFA2FFFFB08FF800000000
+00000000EFE05FEFFFFFFF67FFF90BFFFFF41FFE00000000
+00000003FF90CFFFFFFFFF61FF805FFFFFFC09FF30000000
+00000007FF42FFFFFFFEFF529700EFFFFFFF14FF70000000
+0000000BFF06FFFFFFFA58DF6008FFFFFFFA30FFB0000000
+0000000CFE09FFFFFFFF8EF50029777AFFFF90EFD0000000
+0000000EFC0BFFFFFFFF9F7990B604BFFFFFA0CFE0000000
+0000000EFC0BFFFFFF927D0FF5F9DFFFFFFFB0CFE0000000
+0000000EFD0AFFFFB43383035EF9FFFFFFFFA0DFE0000000
+0000000CFF069FFFFFFFA002EFB1BFFFFFFF80FFC0000000
+0000000AFF13FFFFFFFF102CB7CFBFFFFFFF52FF90000000
+00000006FF60FFFFFFF603FD20FFFFFFFFFF06FF60000000
+00000002FFB0AFFFFFD04FFF80FFFFFFFFFA0CFF10000000
+00000000CFF32FFFFF35FFFFF1FFFFFFFEB23FFC00000000
+000000005FFB08FFFA6FFFFFF8FFFFFFFF60BFF400000000
+000000000DFF50BFF8FFFFFFFEFFFFFFFB05FFC000000000
+0000000003FFF20BEEFFFFFFFFFFFFFFB03FFF3000000000
+00000000008FFE2097FFFFFFFFFFFFF902EFF80000000000
+00000000000BFFE403CFFFFFFFBFFC304FFFB00000000000
+000000000000BFFF91038CEFFE782019FFFB000000000000
+00000000000009FFFF930000000039FFFF90000000000000
+000000000000005EFFFFEA9779AEFFFFE500000000000000
+00000000000000018EFFFFFFFFFFFFE70000000000000000
+0000000000000000005ADFFFFFFDA5000000000000000000
+000000000000000000000023320000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_SAFARI(_alias) ENTITY(rectangle,black,safari,_alias,DEV SAFARI)
+!define DEV_SAFARI(_alias,_label) ENTITY(rectangle,black,safari,_label,_alias,DEV SAFARI)
+!define DEV_SAFARI(_alias,_label,_shape) ENTITY(_shape,black,safari,_label,_alias,DEV SAFARI)
+!define DEV_SAFARI(_alias,_label,_shape,_color) ENTITY(_shape,_color,safari,_label,_alias,DEV SAFARI)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/sass.puml b/stdlib/devicons/sass.puml
new file mode 100644
index 000000000..d91b31bc0
--- /dev/null
+++ b/stdlib/devicons/sass.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $sass [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000210000000000000000000000000
+000000000000000049CEFFFFEA5000000000000000000000
+000000000000039FFFFFFFFFFFFC20000000000000000000
+000000000005CFFFFFFFDCBCFFFFE2000000000000000000
+0000000004DFFFFFC730000004CFFA000000000000000000
+00000002BFFFFF8200000000000DFF000000000000000000
+0000005FFFFF8100000000000007FF100000000000000000
+000009FFFFA10000000000000008FF000000000000000000
+0000AFFFE400000000000000000CFD000000000000000000
+000AFFFC1000000000000000003FF7000000000000000000
+007FFFB0000000000000000001DFE1000000000000000000
+03FFFC0000000000000000000BFF50000000000000000000
+0BFFF1000000000000000002CFF900000000000000000000
+1FFF9000000100000000007FFF8000000000000000000000
+6FFF30000007800000038EFFF50000000000000000000000
+7FFF20000000BFB99CFFFFF8100000000376000000000000
+2FFF3000000005BEFFEC8400000010000EFF100000000000
+0BFF90000000000000000000001EFB003FFC000000000000
+02FFF4000000000000024000006FF8009FF9000000000000
+004FFE300000000001BFF90000CFF502FEFB000000000000
+0004FFF5000000001DFDEC0003FFF40AE4FE000000000000
+00002DFF80000003DFA0BD810AEAF73F70EF649DEEC82000
+0000009FFB0001AFFE00FFF31F75FDCD007FFFCA9ACFF700
+00000004EFD28FFFF604FFF08F10FFF3008FF50000019F80
+000000001BFFF95FF00AFFB0F9009FE006FDF800000005F1
+000000005DFF807FB00FFF76F200CFF12F59F800000000C6
+0000002CFE8FB09F906FFF4DA009FFF3AD0EF20000000087
+000007FF901FD09F90DEFF7F206F8FF1EBDE3000000000C2
+0000AFF4001FE07FC5F8FFF903F8DF908D81000000000940
+000AFF30005FC03FFFF1FFF10BFEE6000000000000000000
+005FF60000BF900CFF80AF40025300000000000000000000
+00BFF00006FF3002A8000000000000000000000000000000
+00EFD0006FFA000000000000000000000000000000000000
+00DFF77CFFD1000000000000000000000000000000000000
+008FFFFFFA10000000000000000000000000000000000000
+0009EEDA3000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_SASS(_alias) ENTITY(rectangle,black,sass,_alias,DEV SASS)
+!define DEV_SASS(_alias,_label) ENTITY(rectangle,black,sass,_label,_alias,DEV SASS)
+!define DEV_SASS(_alias,_label,_shape) ENTITY(_shape,black,sass,_label,_alias,DEV SASS)
+!define DEV_SASS(_alias,_label,_shape,_color) ENTITY(_shape,_color,sass,_label,_alias,DEV SASS)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/scala.puml b/stdlib/devicons/scala.puml
new file mode 100644
index 000000000..9aec3a551
--- /dev/null
+++ b/stdlib/devicons/scala.puml
@@ -0,0 +1,59 @@
+@startuml
+sprite $scala [48x48/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000011000000000000
+0000000000000000000000000000000004D2000000000000
+00000000000000000000000000000027DFF2000000000000
+00000000000000000000000000269EFFFFF2000000000000
+000000000000000000001368BFFFFFFFFFF2000000000000
+000000000000013579CEFFFFFFFFFFFFFFF2000000000000
+0000000000002FFFFFFFFFFFFFFFFFFFFFF2000000000000
+0000000000002FFFFFFFFFFFFFFFFFFFFFF2000000000000
+0000000000002FFFFFFFFFFFFFFFFFFFFFF2000000000000
+0000000000002FFFFFFFFFFFFFFFFFFFFFC0000000000000
+0000000000002FFFFFFFFFFFFFFFFFFFE700000000000000
+0000000000002FFFFFFFFFFFFFFFFFB50000000000000000
+0000000000002FFFFFFFFFFFFFC851000012000000000000
+0000000000002FFFFFFFEB863000000005E3000000000000
+0000000000001DB96420000000000048EFF3000000000000
+0000000000000000000000000036AFFFFFF3000000000000
+00000000000000000000358ADFFFFFFFFFF3000000000000
+00000000000003579BEFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFB0000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFE600000000000000
+0000000000000FFFFFFFFFFFFFFFFFA40000000000000000
+0000000000000FFFFFFFFFFFFFB730000023000000000000
+0000000000000FFFFFFFCA742000000007F3000000000000
+0000000000000B97531000000000015AFFF3000000000000
+0000000000000000000000000258CFFFFFF3000000000000
+00000000000000000002479BEFFFFFFFFFF3000000000000
+0000000000000579BDFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFFF3000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFFF90000000000000
+0000000000000FFFFFFFFFFFFFFFFFFFC400000000000000
+0000000000000FFFFFFFFFFFFFFFFD820000000000000000
+0000000000000FFFFFFFFFFFFD9510000000000000000000
+0000000000000FFFFFFDB853000000000000000000000000
+000000000000097531000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_SCALA(_alias) ENTITY(rectangle,black,scala,_alias,DEV SCALA)
+!define DEV_SCALA(_alias,_label) ENTITY(rectangle,black,scala,_label,_alias,DEV SCALA)
+!define DEV_SCALA(_alias,_label,_shape) ENTITY(_shape,black,scala,_label,_alias,DEV SCALA)
+!define DEV_SCALA(_alias,_label,_shape,_color) ENTITY(_shape,_color,scala,_label,_alias,DEV SCALA)
+skinparam folderBackgroundColor<> White
+@enduml
diff --git a/stdlib/devicons/scriptcs.puml b/stdlib/devicons/scriptcs.puml
new file mode 100644
index 000000000..46586ecda
--- /dev/null
+++ b/stdlib/devicons/scriptcs.puml
@@ -0,0 +1,56 @@
+@startuml
+sprite $scriptcs [48x45/16] {
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000001100000000000000000000000
+00000000000000000027CEFFFFDA61000000000000000000
+00000000000000003CFFFFFFFFFFFF910000000000000000
+000000000000001AFFFFFFFFFFFFFFFF7000000000000000
+00000000000003EFFFFFFFFFFFFFFFFFFC10000000000000
+0000000000003FFFFFFFFFFFFFFFFFFFFFD1000000000000
+000000000002FFFFFFFFFFFFFFFFFFFFFFFD000000000000
+00000000000DFFFFFFFFFFFFFFFFFFFFFFFFA00000000000
+00000000008FFFFFFFFFFFFFFFFFFFFFFFFFF40000000000
+0000000001FFFFFFFFC99AEFFFFFDA9BEFFFFD0000000000
+0000000009FFFFFFB2134206FFF603410CFFFF5000000000
+000000000EFFFFF909FFFFDCFF62EFFFBDFFFFB000000000
+000000004FFFFFC0CFFFFFFFFF0BFFFFFFFFFFF000000000
+000000007FFFFF37FFFFFFFFFF0CFFFFFFFFFFF300000000
+00000000AFFFFD0DFFFFFFFFFF26FFFFFFFFFFF600000000
+00000000BFFFFA1FFFFFFFFFFFC05EFFFFFFFFF700000000
+00000000CFFFF82FFFFFFFFFFFFD406EFFFFFFF800000000
+00000000BFFFF82FFFFFFFFFFFFFFB309FFFFFF700000000
+000000009FFFFA0FFFFFFFFFFFFFFFF90BFFFFF600000000
+000000007FFFFE0BFFFFFFFFFFFFFFFF45FFFFF300000000
+000000003FFFFF53FFFFFFFFFFFFFFFF65FFFFF000000000
+000000000EFFFFD15FFFFFFFFFCFFFFE1AFFFFA000000000
+0000000008FFFFFC217AA61CFF0489715FFFFF4000000000
+0000000001FFFFFFF95447CFFFC6446BFFFFFC0000000000
+00000000007FFFFFFFFFFFFFFFFFFFFFFFFFF30000000000
+00000000000CFFFFFFFFFFFFFFFFFFFFFFFF900000000000
+000000000001EFFFFFFFFFFFFFFFFFFFFFFB000000000000
+0000000000003FFFFFFFFFFFFFFFFFFFFFD1000000000000
+00000000000002DFFFFFFFFFFFFFFFFFFA00000000000000
+000000000000001AFFFFFFFFFFFFFFFF7000000000000000
+00000000000000003BFFFFFFFFFFFF910000000000000000
+00000000000000000027BEFFFFEA61000000000000000000
+000000000000000000000001100000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+
+!define DEV_SCRIPTCS(_alias) ENTITY(rectangle,black,scriptcs,_alias,DEV SCRIPTCS)
+!define DEV_SCRIPTCS(_alias,_label) ENTITY(rectangle,black,scriptcs,_label,_alias,DEV SCRIPTCS)
+!define DEV_SCRIPTCS(_alias,_label,_shape) ENTITY(_shape,black,scriptcs,_label,_alias,DEV SCRIPTCS)
+!define DEV_SCRIPTCS(_alias,_label,_shape,_color) ENTITY(_shape,_color,scriptcs,_label,_alias,DEV SCRIPTCS)
+skinparam folderBackgroundColor<