QR Code renderer
- Will output QR Code as SVG - Temporarily removed Base64 feature - Changed install.sh to focus on platform - Makefile can now build and package for macOS or Linux separately
This commit is contained in:
parent
09b52a4f28
commit
66d4cbc9ec
12 changed files with 318 additions and 37 deletions
50
BuildCommand.cs
Normal file
50
BuildCommand.cs
Normal file
|
@ -0,0 +1,50 @@
|
|||
namespace Glyph;
|
||||
|
||||
[Command("build", Description = "Build Glyph program.")]
|
||||
public class BuildCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = "file", Description = "Path to the Glyph source file.")]
|
||||
public string FilePath { get; set; }
|
||||
|
||||
[CommandOption("dry", 'd', Description = "Dry run.")]
|
||||
public bool DryRun { get; set; }
|
||||
|
||||
[CommandOption("verbose", 'v', Description = "Enable verbose output.")]
|
||||
public bool Verbose { get; set; }
|
||||
|
||||
public async ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
|
||||
var file = new FileInfo(FilePath);
|
||||
|
||||
if (!File.Exists(FilePath))
|
||||
{
|
||||
await console.Error.WriteLineAsync($"Error: File not found: {FilePath}");
|
||||
return;
|
||||
}
|
||||
|
||||
var lines = await File.ReadAllLinesAsync(FilePath);
|
||||
var source = ScriptHelper.LinesToString(lines);
|
||||
|
||||
if (Verbose)
|
||||
{
|
||||
await console.Output.WriteLineAsync($"Compiling: {FilePath}");
|
||||
}
|
||||
|
||||
var counter = ScriptHelper.CharacterCounter(1259, source);
|
||||
|
||||
if (counter.checker)
|
||||
await console.Output.WriteAsync(counter.output);
|
||||
|
||||
if (DryRun)
|
||||
return;
|
||||
|
||||
var qrGenerator = new QRCodeGenerator();
|
||||
var qrCodeData = qrGenerator.CreateQrCode(source, QRCodeGenerator.ECCLevel.H);
|
||||
var qrCode = new SvgQRCode(qrCodeData);
|
||||
var qrCodeAsSvg = qrCode.GetGraphic(57);
|
||||
var path = Path.GetDirectoryName(FilePath);
|
||||
var srcName = Path.GetFileNameWithoutExtension(file.Name);
|
||||
File.WriteAllText(Path.Combine(path, $"{srcName}.svg"), qrCodeAsSvg);
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
namespace Glyph;
|
||||
|
||||
[Command("build", Description = "Build Glyph program.")]
|
||||
public class CompileCommand : ICommand
|
||||
{
|
||||
[CommandParameter(0, Name = "file", Description = "Path to the Glyph source file.")]
|
||||
public string FilePath { get; set; }
|
||||
|
||||
[CommandOption("verbose", 'v', Description = "Enable verbose output.")]
|
||||
public bool Verbose { get; set; }
|
||||
|
||||
public async ValueTask ExecuteAsync(IConsole console)
|
||||
{
|
||||
|
||||
if (!System.IO.File.Exists(FilePath))
|
||||
{
|
||||
await console.Error.WriteLineAsync($"Error: File not found: {FilePath}");
|
||||
return;
|
||||
}
|
||||
|
||||
var lines = await System.IO.File.ReadAllLinesAsync(FilePath);
|
||||
var source = ScriptHelper.LinesToString(lines);
|
||||
|
||||
if (Verbose)
|
||||
{
|
||||
await console.Output.WriteLineAsync($"Compiling: {FilePath}");
|
||||
}
|
||||
|
||||
var binary = ScriptHelper.EncodeTo64(source);
|
||||
File.WriteAllText(Path.Combine(Path.GetDirectoryName(FilePath), "output.glyb"), binary);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
global using Glyph;
|
||||
global using QRCoder;
|
||||
global using CliFx;
|
||||
global using CliFx.Attributes;
|
||||
global using CliFx.Infrastructure;
|
||||
|
|
|
@ -6,12 +6,13 @@
|
|||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<AssemblyName>glyph</AssemblyName>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>0.1.106</Version>
|
||||
<Version>0.2.100</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CliFx" Version="2.3.5" />
|
||||
<PackageReference Include="DynamicExpresso.Core" Version="2.19.0" />
|
||||
<PackageReference Include="QRCoder" Version="1.6.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
4
Makefile
4
Makefile
|
@ -11,6 +11,10 @@ APPIMAGE_DIR = ./AppDir
|
|||
|
||||
all: build-linux build-mac package-linux package-mac
|
||||
|
||||
linux: build-linux package-linux
|
||||
|
||||
mac: build-mac package-mac
|
||||
|
||||
clean:
|
||||
rm -rf bin obj $(OUTPUT_DIR)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
await new CliApplicationBuilder()
|
||||
.AddCommand<RunCommand>()
|
||||
.AddCommand<CompileCommand>()
|
||||
.AddCommand<BuildCommand>()
|
||||
.SetExecutableName("Glyph")
|
||||
.Build()
|
||||
.RunAsync();
|
||||
|
|
|
@ -12,9 +12,9 @@ Glyph is a human-readable esoteric programming language that is designed to fit
|
|||
|
||||
- [ ] Compiler
|
||||
|
||||
- [ ] QR Code
|
||||
- [x] QR Code
|
||||
|
||||
- [x] Base64
|
||||
- [ ] Base64
|
||||
|
||||
## 🧾 Program Structure
|
||||
|
||||
|
@ -48,6 +48,8 @@ verb subject object [modifier]
|
|||
|
||||
- .NET 8.0
|
||||
- Dynamic Expresso for interpreter
|
||||
- CILx for command line
|
||||
- QRCoder for renderer
|
||||
|
||||
## 🗓️ Update Cycle
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ public class RunCommand : ICommand
|
|||
}
|
||||
|
||||
lines = await System.IO.File.ReadAllLinesAsync(FilePath);
|
||||
var source = ScriptHelper.LinesToString(lines);
|
||||
|
||||
if (!string.IsNullOrEmpty(InputPath))
|
||||
{
|
||||
|
@ -46,6 +47,9 @@ public class RunCommand : ICommand
|
|||
await console.Output.WriteLineAsync($"Executing: {FilePath}");
|
||||
}
|
||||
|
||||
if (source.Length >= 1187)
|
||||
await console.Output.WriteAsync("Warning over 1,187 characters.");
|
||||
|
||||
Runner.Interpret(lines);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,4 +25,11 @@ public static class ScriptHelper
|
|||
/// <returns>The resulting string.</returns>
|
||||
static public string LinesToString(string[] lines) => string.Join(Environment.NewLine, lines);
|
||||
|
||||
static public (bool checker, string output) CharacterCounter(int limit, string text)
|
||||
{
|
||||
if (text.Length >= limit)
|
||||
return (true, $"Warning source is over {limit:n} characters");
|
||||
|
||||
return (false, string.Empty);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
|
||||
set -e
|
||||
|
||||
SOURCE_BIN="$1"
|
||||
PLATFORM="$1"
|
||||
SOURCE_BIN="./dist/glyph-$PLATFORM/glyph"
|
||||
INSTALL_DIR="$HOME/.local/bin"
|
||||
TARGET="$INSTALL_DIR/glyph"
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
set x 5
|
||||
mul x 2
|
||||
say x
|
||||
inp y
|
||||
say y
|
||||
end
|
||||
|
|
241
sample.svg
Normal file
241
sample.svg
Normal file
|
@ -0,0 +1,241 @@
|
|||
<svg version="1.1" baseProfile="full" shape-rendering="crispEdges" width="2337" height="2337" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect x="0" y="0" width="2337" height="2337" fill="#FFFFFF" />
|
||||
<rect x="228" y="228" width="399" height="57" fill="#000000" />
|
||||
<rect x="741" y="228" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="228" width="114" height="57" fill="#000000" />
|
||||
<rect x="1083" y="228" width="456" height="57" fill="#000000" />
|
||||
<rect x="1596" y="228" width="57" height="171" fill="#000000" />
|
||||
<rect x="1710" y="228" width="399" height="57" fill="#000000" />
|
||||
<rect x="228" y="285" width="57" height="285" fill="#000000" />
|
||||
<rect x="570" y="285" width="57" height="285" fill="#000000" />
|
||||
<rect x="684" y="285" width="114" height="57" fill="#000000" />
|
||||
<rect x="969" y="285" width="57" height="57" fill="#000000" />
|
||||
<rect x="1083" y="285" width="57" height="57" fill="#000000" />
|
||||
<rect x="1254" y="285" width="171" height="57" fill="#000000" />
|
||||
<rect x="1482" y="285" width="57" height="57" fill="#000000" />
|
||||
<rect x="1710" y="285" width="57" height="285" fill="#000000" />
|
||||
<rect x="2052" y="285" width="57" height="285" fill="#000000" />
|
||||
<rect x="342" y="342" width="171" height="171" fill="#000000" />
|
||||
<rect x="798" y="342" width="57" height="57" fill="#000000" />
|
||||
<rect x="1083" y="342" width="114" height="57" fill="#000000" />
|
||||
<rect x="1311" y="342" width="57" height="57" fill="#000000" />
|
||||
<rect x="1425" y="342" width="114" height="57" fill="#000000" />
|
||||
<rect x="1824" y="342" width="171" height="171" fill="#000000" />
|
||||
<rect x="684" y="399" width="171" height="114" fill="#000000" />
|
||||
<rect x="969" y="399" width="57" height="57" fill="#000000" />
|
||||
<rect x="1254" y="399" width="171" height="57" fill="#000000" />
|
||||
<rect x="1482" y="399" width="171" height="57" fill="#000000" />
|
||||
<rect x="1083" y="456" width="114" height="57" fill="#000000" />
|
||||
<rect x="1425" y="456" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="513" width="114" height="57" fill="#000000" />
|
||||
<rect x="1083" y="513" width="57" height="57" fill="#000000" />
|
||||
<rect x="1254" y="513" width="114" height="57" fill="#000000" />
|
||||
<rect x="1482" y="513" width="171" height="57" fill="#000000" />
|
||||
<rect x="228" y="570" width="399" height="57" fill="#000000" />
|
||||
<rect x="684" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="798" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="912" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="1026" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="1140" y="570" width="57" height="114" fill="#000000" />
|
||||
<rect x="1254" y="570" width="57" height="114" fill="#000000" />
|
||||
<rect x="1368" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="1482" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="1596" y="570" width="57" height="57" fill="#000000" />
|
||||
<rect x="1710" y="570" width="399" height="57" fill="#000000" />
|
||||
<rect x="684" y="627" width="114" height="171" fill="#000000" />
|
||||
<rect x="912" y="627" width="114" height="57" fill="#000000" />
|
||||
<rect x="1539" y="627" width="57" height="57" fill="#000000" />
|
||||
<rect x="285" y="684" width="57" height="114" fill="#000000" />
|
||||
<rect x="399" y="684" width="228" height="57" fill="#000000" />
|
||||
<rect x="969" y="684" width="57" height="57" fill="#000000" />
|
||||
<rect x="1083" y="684" width="171" height="57" fill="#000000" />
|
||||
<rect x="1368" y="684" width="57" height="57" fill="#000000" />
|
||||
<rect x="1482" y="684" width="114" height="57" fill="#000000" />
|
||||
<rect x="1653" y="684" width="114" height="57" fill="#000000" />
|
||||
<rect x="1824" y="684" width="114" height="57" fill="#000000" />
|
||||
<rect x="1995" y="684" width="57" height="57" fill="#000000" />
|
||||
<rect x="399" y="741" width="57" height="57" fill="#000000" />
|
||||
<rect x="513" y="741" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="741" width="57" height="114" fill="#000000" />
|
||||
<rect x="1026" y="741" width="57" height="57" fill="#000000" />
|
||||
<rect x="1140" y="741" width="228" height="57" fill="#000000" />
|
||||
<rect x="1425" y="741" width="57" height="57" fill="#000000" />
|
||||
<rect x="1539" y="741" width="57" height="57" fill="#000000" />
|
||||
<rect x="1710" y="741" width="57" height="57" fill="#000000" />
|
||||
<rect x="1824" y="741" width="171" height="57" fill="#000000" />
|
||||
<rect x="342" y="798" width="57" height="57" fill="#000000" />
|
||||
<rect x="456" y="798" width="57" height="114" fill="#000000" />
|
||||
<rect x="570" y="798" width="171" height="57" fill="#000000" />
|
||||
<rect x="1140" y="798" width="57" height="57" fill="#000000" />
|
||||
<rect x="1368" y="798" width="57" height="57" fill="#000000" />
|
||||
<rect x="1482" y="798" width="171" height="57" fill="#000000" />
|
||||
<rect x="1938" y="798" width="57" height="114" fill="#000000" />
|
||||
<rect x="2052" y="798" width="57" height="57" fill="#000000" />
|
||||
<rect x="285" y="855" width="114" height="57" fill="#000000" />
|
||||
<rect x="684" y="855" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="855" width="114" height="57" fill="#000000" />
|
||||
<rect x="1083" y="855" width="57" height="57" fill="#000000" />
|
||||
<rect x="1254" y="855" width="57" height="57" fill="#000000" />
|
||||
<rect x="1425" y="855" width="285" height="57" fill="#000000" />
|
||||
<rect x="1767" y="855" width="114" height="57" fill="#000000" />
|
||||
<rect x="342" y="912" width="114" height="57" fill="#000000" />
|
||||
<rect x="513" y="912" width="114" height="57" fill="#000000" />
|
||||
<rect x="684" y="912" width="171" height="57" fill="#000000" />
|
||||
<rect x="969" y="912" width="57" height="57" fill="#000000" />
|
||||
<rect x="1140" y="912" width="114" height="57" fill="#000000" />
|
||||
<rect x="1311" y="912" width="57" height="57" fill="#000000" />
|
||||
<rect x="1425" y="912" width="57" height="57" fill="#000000" />
|
||||
<rect x="1539" y="912" width="228" height="57" fill="#000000" />
|
||||
<rect x="1995" y="912" width="114" height="57" fill="#000000" />
|
||||
<rect x="228" y="969" width="114" height="57" fill="#000000" />
|
||||
<rect x="513" y="969" width="57" height="57" fill="#000000" />
|
||||
<rect x="627" y="969" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="969" width="228" height="57" fill="#000000" />
|
||||
<rect x="1197" y="969" width="228" height="57" fill="#000000" />
|
||||
<rect x="1539" y="969" width="57" height="57" fill="#000000" />
|
||||
<rect x="1653" y="969" width="57" height="57" fill="#000000" />
|
||||
<rect x="1767" y="969" width="57" height="57" fill="#000000" />
|
||||
<rect x="1938" y="969" width="114" height="57" fill="#000000" />
|
||||
<rect x="228" y="1026" width="57" height="114" fill="#000000" />
|
||||
<rect x="399" y="1026" width="114" height="57" fill="#000000" />
|
||||
<rect x="570" y="1026" width="57" height="57" fill="#000000" />
|
||||
<rect x="741" y="1026" width="57" height="114" fill="#000000" />
|
||||
<rect x="912" y="1026" width="57" height="57" fill="#000000" />
|
||||
<rect x="1026" y="1026" width="171" height="57" fill="#000000" />
|
||||
<rect x="1311" y="1026" width="114" height="57" fill="#000000" />
|
||||
<rect x="1482" y="1026" width="57" height="114" fill="#000000" />
|
||||
<rect x="1653" y="1026" width="114" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1026" width="57" height="57" fill="#000000" />
|
||||
<rect x="1938" y="1026" width="57" height="57" fill="#000000" />
|
||||
<rect x="399" y="1083" width="57" height="57" fill="#000000" />
|
||||
<rect x="513" y="1083" width="57" height="57" fill="#000000" />
|
||||
<rect x="969" y="1083" width="171" height="57" fill="#000000" />
|
||||
<rect x="1197" y="1083" width="57" height="57" fill="#000000" />
|
||||
<rect x="1368" y="1083" width="57" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1083" width="228" height="57" fill="#000000" />
|
||||
<rect x="342" y="1140" width="285" height="57" fill="#000000" />
|
||||
<rect x="798" y="1140" width="114" height="57" fill="#000000" />
|
||||
<rect x="969" y="1140" width="114" height="57" fill="#000000" />
|
||||
<rect x="1140" y="1140" width="171" height="57" fill="#000000" />
|
||||
<rect x="1368" y="1140" width="114" height="57" fill="#000000" />
|
||||
<rect x="1539" y="1140" width="228" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1140" width="57" height="114" fill="#000000" />
|
||||
<rect x="2052" y="1140" width="57" height="57" fill="#000000" />
|
||||
<rect x="342" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="513" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="684" y="1197" width="171" height="57" fill="#000000" />
|
||||
<rect x="912" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="1026" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="1254" y="1197" width="114" height="57" fill="#000000" />
|
||||
<rect x="1482" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="1596" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="1710" y="1197" width="57" height="57" fill="#000000" />
|
||||
<rect x="1938" y="1197" width="171" height="57" fill="#000000" />
|
||||
<rect x="399" y="1254" width="285" height="57" fill="#000000" />
|
||||
<rect x="741" y="1254" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="1254" width="114" height="114" fill="#000000" />
|
||||
<rect x="1197" y="1254" width="57" height="57" fill="#000000" />
|
||||
<rect x="1311" y="1254" width="57" height="57" fill="#000000" />
|
||||
<rect x="1425" y="1254" width="570" height="57" fill="#000000" />
|
||||
<rect x="2052" y="1254" width="57" height="57" fill="#000000" />
|
||||
<rect x="285" y="1311" width="57" height="57" fill="#000000" />
|
||||
<rect x="456" y="1311" width="57" height="57" fill="#000000" />
|
||||
<rect x="627" y="1311" width="57" height="57" fill="#000000" />
|
||||
<rect x="1083" y="1311" width="57" height="57" fill="#000000" />
|
||||
<rect x="1197" y="1311" width="228" height="57" fill="#000000" />
|
||||
<rect x="1482" y="1311" width="57" height="57" fill="#000000" />
|
||||
<rect x="1653" y="1311" width="114" height="57" fill="#000000" />
|
||||
<rect x="1938" y="1311" width="114" height="57" fill="#000000" />
|
||||
<rect x="342" y="1368" width="114" height="57" fill="#000000" />
|
||||
<rect x="513" y="1368" width="114" height="57" fill="#000000" />
|
||||
<rect x="855" y="1368" width="57" height="57" fill="#000000" />
|
||||
<rect x="969" y="1368" width="57" height="57" fill="#000000" />
|
||||
<rect x="1140" y="1368" width="171" height="57" fill="#000000" />
|
||||
<rect x="1425" y="1368" width="228" height="57" fill="#000000" />
|
||||
<rect x="1767" y="1368" width="57" height="57" fill="#000000" />
|
||||
<rect x="2052" y="1368" width="57" height="57" fill="#000000" />
|
||||
<rect x="228" y="1425" width="57" height="171" fill="#000000" />
|
||||
<rect x="342" y="1425" width="171" height="57" fill="#000000" />
|
||||
<rect x="627" y="1425" width="114" height="57" fill="#000000" />
|
||||
<rect x="1026" y="1425" width="228" height="57" fill="#000000" />
|
||||
<rect x="1425" y="1425" width="57" height="57" fill="#000000" />
|
||||
<rect x="1539" y="1425" width="57" height="57" fill="#000000" />
|
||||
<rect x="1653" y="1425" width="57" height="57" fill="#000000" />
|
||||
<rect x="1767" y="1425" width="114" height="57" fill="#000000" />
|
||||
<rect x="1995" y="1425" width="57" height="57" fill="#000000" />
|
||||
<rect x="342" y="1482" width="114" height="57" fill="#000000" />
|
||||
<rect x="570" y="1482" width="114" height="57" fill="#000000" />
|
||||
<rect x="741" y="1482" width="114" height="114" fill="#000000" />
|
||||
<rect x="1083" y="1482" width="57" height="57" fill="#000000" />
|
||||
<rect x="1311" y="1482" width="114" height="57" fill="#000000" />
|
||||
<rect x="1539" y="1482" width="171" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1482" width="57" height="57" fill="#000000" />
|
||||
<rect x="1938" y="1482" width="171" height="57" fill="#000000" />
|
||||
<rect x="342" y="1539" width="57" height="57" fill="#000000" />
|
||||
<rect x="513" y="1539" width="57" height="57" fill="#000000" />
|
||||
<rect x="627" y="1539" width="57" height="57" fill="#000000" />
|
||||
<rect x="969" y="1539" width="57" height="57" fill="#000000" />
|
||||
<rect x="1083" y="1539" width="114" height="57" fill="#000000" />
|
||||
<rect x="1254" y="1539" width="171" height="57" fill="#000000" />
|
||||
<rect x="1482" y="1539" width="57" height="57" fill="#000000" />
|
||||
<rect x="1596" y="1539" width="114" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1539" width="228" height="57" fill="#000000" />
|
||||
<rect x="228" y="1596" width="114" height="57" fill="#000000" />
|
||||
<rect x="399" y="1596" width="57" height="57" fill="#000000" />
|
||||
<rect x="513" y="1596" width="114" height="57" fill="#000000" />
|
||||
<rect x="684" y="1596" width="285" height="57" fill="#000000" />
|
||||
<rect x="1026" y="1596" width="114" height="57" fill="#000000" />
|
||||
<rect x="1197" y="1596" width="57" height="57" fill="#000000" />
|
||||
<rect x="1596" y="1596" width="399" height="57" fill="#000000" />
|
||||
<rect x="2052" y="1596" width="57" height="57" fill="#000000" />
|
||||
<rect x="684" y="1653" width="171" height="57" fill="#000000" />
|
||||
<rect x="912" y="1653" width="57" height="57" fill="#000000" />
|
||||
<rect x="1140" y="1653" width="171" height="57" fill="#000000" />
|
||||
<rect x="1425" y="1653" width="114" height="57" fill="#000000" />
|
||||
<rect x="1596" y="1653" width="57" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1653" width="57" height="114" fill="#000000" />
|
||||
<rect x="1938" y="1653" width="114" height="57" fill="#000000" />
|
||||
<rect x="228" y="1710" width="399" height="57" fill="#000000" />
|
||||
<rect x="741" y="1710" width="114" height="57" fill="#000000" />
|
||||
<rect x="912" y="1710" width="114" height="57" fill="#000000" />
|
||||
<rect x="1083" y="1710" width="171" height="114" fill="#000000" />
|
||||
<rect x="1311" y="1710" width="114" height="57" fill="#000000" />
|
||||
<rect x="1539" y="1710" width="114" height="57" fill="#000000" />
|
||||
<rect x="1710" y="1710" width="57" height="57" fill="#000000" />
|
||||
<rect x="1938" y="1710" width="57" height="57" fill="#000000" />
|
||||
<rect x="228" y="1767" width="57" height="285" fill="#000000" />
|
||||
<rect x="570" y="1767" width="57" height="285" fill="#000000" />
|
||||
<rect x="684" y="1767" width="57" height="114" fill="#000000" />
|
||||
<rect x="798" y="1767" width="57" height="57" fill="#000000" />
|
||||
<rect x="1368" y="1767" width="285" height="57" fill="#000000" />
|
||||
<rect x="1824" y="1767" width="285" height="57" fill="#000000" />
|
||||
<rect x="342" y="1824" width="171" height="171" fill="#000000" />
|
||||
<rect x="1254" y="1824" width="57" height="57" fill="#000000" />
|
||||
<rect x="1425" y="1824" width="456" height="57" fill="#000000" />
|
||||
<rect x="684" y="1881" width="114" height="57" fill="#000000" />
|
||||
<rect x="855" y="1881" width="57" height="57" fill="#000000" />
|
||||
<rect x="969" y="1881" width="285" height="57" fill="#000000" />
|
||||
<rect x="1482" y="1881" width="57" height="171" fill="#000000" />
|
||||
<rect x="1596" y="1881" width="114" height="57" fill="#000000" />
|
||||
<rect x="1881" y="1881" width="57" height="57" fill="#000000" />
|
||||
<rect x="2052" y="1881" width="57" height="57" fill="#000000" />
|
||||
<rect x="798" y="1938" width="114" height="57" fill="#000000" />
|
||||
<rect x="1026" y="1938" width="57" height="57" fill="#000000" />
|
||||
<rect x="1197" y="1938" width="171" height="57" fill="#000000" />
|
||||
<rect x="1596" y="1938" width="57" height="57" fill="#000000" />
|
||||
<rect x="1767" y="1938" width="171" height="57" fill="#000000" />
|
||||
<rect x="1995" y="1938" width="114" height="57" fill="#000000" />
|
||||
<rect x="684" y="1995" width="57" height="57" fill="#000000" />
|
||||
<rect x="855" y="1995" width="171" height="57" fill="#000000" />
|
||||
<rect x="1140" y="1995" width="57" height="57" fill="#000000" />
|
||||
<rect x="1254" y="1995" width="171" height="57" fill="#000000" />
|
||||
<rect x="1596" y="1995" width="114" height="57" fill="#000000" />
|
||||
<rect x="1881" y="1995" width="228" height="57" fill="#000000" />
|
||||
<rect x="228" y="2052" width="399" height="57" fill="#000000" />
|
||||
<rect x="741" y="2052" width="57" height="57" fill="#000000" />
|
||||
<rect x="912" y="2052" width="57" height="57" fill="#000000" />
|
||||
<rect x="1026" y="2052" width="57" height="57" fill="#000000" />
|
||||
<rect x="1311" y="2052" width="57" height="57" fill="#000000" />
|
||||
<rect x="1596" y="2052" width="57" height="57" fill="#000000" />
|
||||
<rect x="1767" y="2052" width="57" height="57" fill="#000000" />
|
||||
<rect x="1881" y="2052" width="57" height="57" fill="#000000" />
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
Loading…
Add table
Add a link
Reference in a new issue